BV1AL 之無所不記

2022-11-30

聽CNN的RTTY新聞

RTTY原本是發射端把文字轉成高低高低的數位聲音,透過無線電發射出去。
RTTY的接收端是把收到的電波轉成高低的數位聲音,但RTTY不是摩爾斯碼,人耳是聽不懂的,需要再轉成文字,就可以閱讀。但是這篇短文是要用電腦語音合成軟體再把文字轉成語音用耳朵聽。

有人把 CNN 的新聞轉成 RTTY 然後在網路上廣播,這就不必依賴無線電,只要有網路就可以通連了。

以下講的都是在終端機軟體裡進行的,例如用terminator或是gnome-terminal之類。

首先我們在電腦裡(這裡是用Linux環境)建立一個pulseaudio的virtual sink, 指令為

pacmd load-module module-null-sink sink_name=Virtual_Sink sink_properties=device.description=Virtual_Sink

CNN的RTTY的URL 如下,我們用mpv來播放,指令就是

mpv http://internet-tty.net:8000/ITTY

但是它的尖銳聲音耳朵聽起來不悅耳,所以來找看看mpv是輸出到pulseaudio的哪一個sink, 然後把它從原本的sink轉到前面建立的virtual sink就不會聽到吵雜的聲音了,指令為

INPUT=$(pacmd list-sink-inputs|grep -B18 "ITTY"|grep "index:"|awk '{print $2}')

再來把得到的這個INPUT塞到Virtual_Sink,指令是

pacmd move-sink-input $INPUT Virtual_Sink

然後就可以用minimodem來收看,它會解碼成文字,指令為

minimodem rtty -rai

參數rtty是說我們要用minimodem來接收RTTY協定
參數-rai
r 是接收
a 是自動對正載波頻率
i 是高低反向

如果你只要用看的,那到這裡就可以,它會一直打出英文文字來,如果要用聽的,就要再把文字丟給語音合成器espeak,指令是

minimodem rtty -rai| espeak -g9 -s120

-rai 後面是一個 pipe "|"

espeak的參數
-g 9 是字與字的間隔時間
-s 120 是句子的播放速度

標籤: , ,