龍家輝
(湖南農(nóng)業(yè)大學(xué) 信息與智能科學(xué)技術(shù)學(xué)院 信息工程系,湖南 長沙 410128)
雙音多頻(DTMF)信號是美國貝爾實驗室開發(fā)的應(yīng)用于電話網(wǎng)絡(luò)的音頻撥號信號。DTMF撥號系統(tǒng)具有頻域分析方便、撥號速度快、強大的抗干擾功能以及自動檢測和識別等特性。脈沖撥號和音頻撥號是電話信令的兩個系統(tǒng)[1]。DTMF用于按鍵音撥號,使用兩種音調(diào)代表觸摸板上的每個鍵。DTMF已經(jīng)被廣泛應(yīng)用于現(xiàn)實生活,如電話系統(tǒng)的遠程交換機通過解碼DTMF信號中的數(shù)碼值來獲取用戶向交換機發(fā)送的指令[2]。
DTMF信令通過高頻音和低頻音之和表示數(shù)字或字符,按下任意鍵會產(chǎn)生列音和行音,對應(yīng)于該鍵的DTMF是通過查表或諧振器生成的。信號通過電話線傳輸?shù)浇粨Q中心[3],交換中心對信號采樣,使用FFT或Goertzel算法確定接收的頻率,從而告知相應(yīng)的數(shù)字[4]。
傳統(tǒng)的電話撥號通過脈沖計數(shù)確定數(shù)字0~9,速度慢且不能擴展電話服務(wù)。實際通信過程中,信號在信道傳輸易受到噪聲的干擾,因此雙音多頻由4個高頻和4個低頻兩個頻群組成。4個高頻頻率分別為1 209 Hz、1 336 Hz、1 477 Hz以及 1 633 Hz,4 個低頻頻率分別為697 Hz、770 Hz、852 Hz以及941 Hz。DTMF信號組合了低頻和高頻,這些頻率信號間不存在諧波關(guān)系,抗干擾能力很強。在DTMF信號撥號方式中,每個號碼鍵都由1個低頻段頻率的單音信號和1個高頻段頻率的單音信號組成。1個高頻信號和1個低頻信號疊加組成1個組合信號,代表號碼表上的指定字符,通過字符的組合實現(xiàn)不同的功能。每個按鍵利用兩個不同頻率的正弦波編碼,選擇雙音方式能將撥號信息從語音中區(qū)分出來。8個頻率可以組合成16個不同的雙音多頻信號,包括數(shù)字0~9和控制信號*、#、A、B、C以及D,如表1所示。
表1 DTMF號碼表
DTMF信號在高低頻處的頻譜幅度非常大,其他頻率處幾乎為0。將DTMF信號轉(zhuǎn)換為離散時間序列,然后執(zhí)行FFT或DFT,檢測幅度譜中幅度最大的兩個頻率。DTMF信號的檢測僅需要分析8個低頻和8個高頻的頻譜,采用FFT會造成計算資源的浪費。因此,本實驗采用Goertzel算法直接計算指定頻率處的傅里葉變換值。Goertzel算法實質(zhì)是對DFT的快速運算,但可以有選擇地計算個別頻率點處的DFT值,從而避免造成內(nèi)存和計算資源的浪費。Goertzel算法的流程如下。
N點時域序列f(n)的N點DFT為F(k):
定義新序列yn(n)為:
u(n)指單位階躍函數(shù),F(xiàn)(n)表示離散時域序列,令:
yk(n)可看作f(n)和hk(n)的卷積,即:
這意味著f(N)的第K個點DFTF(K)是濾波器Hk(N)濾波器f(N)之后的第N個輸出值。將f(N)的N點DFT變換為N個濾波器的第N點輸出。該算法稱為Goertzel算法,Goertzel算法的濾波器組如圖1所示。Goertzel算法實質(zhì)就是一個兩極點的IIR濾波器。
圖1 Goertzel算法的濾波器組
濾波器Hk(N)的系統(tǒng)函數(shù):
根據(jù)CCITT的建議,國際上采用從低頻群和高頻群中各抽出一個頻率以疊加組合的方式產(chǎn)生DTMF信號,共可以產(chǎn)生16種組合,代表不同的數(shù)字和功能字符。假設(shè)Y為DTMF信號,其產(chǎn)生方式為:
其中:f1、f2為低頻和高頻所對應(yīng)的頻率;fs為信號的采樣頻率,取8 kHz。DTMF信號的產(chǎn)生流程如圖2所示。
圖2 DTMF信號生成過程
實驗的信號檢測采用Goertzel算法對8個頻率處的信號幅值進行計算,另外取噪聲功率作為檢測的閾值,排除噪聲的影響。
實驗主要采用MATLAB進行仿真處理,仿真代碼如下:
在MATLAB平臺中新建1個GUI界面,如圖3所示。
圖3 新建GUI界面
生成1個fig文件和.m文件,創(chuàng)建靜態(tài)按鈕和靜態(tài)文本框,共創(chuàng)建16個按鈕和3個靜態(tài)文本框,如圖4所示。
圖4 建立模型
根據(jù)算法原理,搭建一個通過GUI交互的DTMF算法編解碼系統(tǒng)。
以輸入數(shù)字5632048971為例,輸入這幾個數(shù)字,再按“撥打”按鈕,解碼框中出現(xiàn)了解碼后的電話號碼,如圖5所示,解碼結(jié)果正確。
圖5 實驗結(jié)果
點擊“查看”按鈕,可以顯示每個數(shù)字對應(yīng)DTMF信號的頻譜,數(shù)字0、2、3、5、6的頻譜如圖6所示,數(shù)字1、4、7、8、9的頻譜如圖7所示。
圖6 數(shù)字0、2、3、5、6的頻譜
圖7 數(shù)字1、4、7、8、9的頻譜
雙音多頻撥號系統(tǒng)是一種典型的信號處理系統(tǒng),可實現(xiàn)雙音多頻信號的生成、檢測以及識別。通過MATLAB信號處理工具箱中Goertzel函數(shù)模擬雙音多頻撥號系統(tǒng),對雙音多頻信號進行編碼和解碼,并且編寫了GUI界面,可方便直觀地進行操作。