2012年9月16日

用audacity撥電話

暑假看到一則影片,是之前讓Google翻譯唱歌的鋼琴家官大為,他居然用鋼琴來打電話

經過影片的解釋,我才終於明白市話的原理,原來是DTMF (Dual-tone multi-frequency signaling,雙音多頻)。每個按鍵音裡其實是發出兩個頻率的聲音,這聲音傳到中華電信那邊之後才去作處理。只要能做出一樣聲音,那要用什麼鬼東西打電話都行,就算用唱的也行,科南的「戰慄的樂譜」當中,就做過用唱的打電話。以前市面上還有賣播號器,也就是這樣的原理。只要在話筒旁播出聲音就可以打電話。相反的,要聽出別人打什麼電話也是同樣的原理,對撥號音做出頻譜分析,就可以知道了,就像這篇新聞一樣啊。

知道基本原理之後,要實作就不難。用audacity生成單音的功能,分別在兩個頻道中做出指定的頻率,例如要撥出0,就做出1336 Hz和 941 Hz的頻率,同時放出就可以了。

做出下面這樣聲音檔之後,話筒放在喇叭旁,聲音播出來,電話就撥出去了。

  


剛開始我還傻傻的一個頻率一個頻率生成,後來才發現原來audacity就有內建雙音多頻音調的生成功能,只要把號碼打進去,就可以自動生成撥號音。
DTMF2


要產生撥號音或是解析撥號音,現在android上也有看到不少app可以做得到。不過自己從原理下次去玩,也是很有趣的。

要解析撥號音的方式,就是對單一撥號音作「分析-繪製頻譜圖」,以下圖為例,這個撥號音有兩個峰值,分別是1347Hz和 944Hz,查一下表,就會發現這音頻組合最接近就是0了。

頻譜分析 

如果音感夠好,光靠耳朵裡的耳蝸作的頻譜分析,我們就可以聽出來撥的是什麼號碼了。

另外,ATM上的按鍵也有按鍵音,不過那些都是相同頻率的音,所以不至於會被聽出來是什麼號碼。但是如果發生有人要你按電話號碼,把銀行相關的數字資訊按過去,那你就得小心了,不管手機還是市話,按鍵傳過去的聲音可都是一樣的頻率組合啊。

最後我在想,機關學校裡的總機系統,應該也是聽撥號音在解析訊號的吧?