劉曉芳 馮克遷
(河南師范大學(xué) 計算機與信息工程學(xué)院,河南 新鄉(xiāng)453007)
DTMF 信號系統(tǒng)是一個典型的小型信號處理系統(tǒng),它要用數(shù)字方法產(chǎn)生模擬信號并進行傳輸,其中還用到了D/A 變換器,在接收端用A/D 變換器將其轉(zhuǎn)換成數(shù)字信號, 并進行數(shù)字信號處理與識別。 對DTMF 信號進行檢測是DTMF 技術(shù)應(yīng)用的關(guān)鍵,一般的文獻中也只給出了計算機模擬的DTMF 信號的檢測[1]。 本文用FFT 算法和戈澤爾算法分別分析了計算機模擬下的DTMF 信號的檢測;并設(shè)計雙邊帶的帶通濾波器,對實際通信中帶有噪聲的音頻信號進行分析,能清晰的分出來語音信號。
電話號碼鍵的信號是由低頻、 高頻兩個信號的余弦表達式合成的:yi=sin2πfLt+sin2πfHt, 其中fL、fH分別代表合成電話信號鍵i 的高低頻率,如表1 所示。
表1 DTMF 按鍵與頻率之間的對應(yīng)關(guān)系
用Windows 自帶的聲卡采集錄制語音信號。 yi為連續(xù)的語音信號,而計算機處理的卻是離散的信號,針對于這種問題采用奈奎斯特采樣定理對信號進行采樣,fs為抽樣頻率,Ts為采樣間隔,得到信號的離散表示:
對yn進行N 點的FFT 變換得到y(tǒng)n的頻域表達式Y(jié)n。 由傅氏變換的性質(zhì)可知,Yn在理想的條件下, 在頻域的內(nèi)有四個單位沖激響應(yīng),幅值相等,可以找到幅值最大的四個點所對應(yīng)的k 值。 在得到的四個k 值中,最小的兩個分別對應(yīng)著高低頻。
由(3)式,可以根據(jù)輸入信號的音頻,完成單個信號音的識別,理想狀態(tài)下用FFT 算法檢測,得到實驗誤差如表2 所示。
表2 FFT 算法實驗誤差
以上用FFT 算法識別按鍵只是針對單個語音信號, 而且信號的噪聲比較小。同樣,要想識別出一串電話號碼的按鍵音,需將一串電話號碼的按鍵音分割成單個信號音,再按照上述方法進行按鍵的識別。
錄制聲音過程中需對聲音進行量化處理,最理想的量化是最大電平對應(yīng)最高量化比特,但實際很難得到,常有音輕問題。利用雙聲道合并可硬實現(xiàn)音量標(biāo)準(zhǔn)化,即最大電平對應(yīng)最高量化比特,實現(xiàn)語音增強的效果。 基于短視能量和過零率可以將一串信號分成多個信號。
用Windows 產(chǎn)生的語音含有左右兩個聲道, 利用MATLAB 程序?qū)㈦p聲道的語音信號變成單聲道,將會增強語音的效果。得到雙聲道、單聲道的單個語音信號的短時能量和過零率[2],如圖1 所示。
圖1 雙、單聲道的單個語音信號的短時能量和過零率
經(jīng)過聲道合并之后語音信號的短時能量增大了,因此信號更容易分析,如果含有噪聲的情況下,也容易去噪。
上述的方法都是利用Windows 錄制的語音進行分析的,其特點是噪聲小,能夠較準(zhǔn)確的分析出撥號鍵。但是運用同樣的方法,對實際錄制的電話語音進行分析時,不管是對于單個語音信號還是一串語音信號分析都會有很大的誤差。 通過比較發(fā)現(xiàn), 人為錄制的語音信號與Windows 錄制的語音相比有較大的噪聲,在頻域內(nèi)噪聲的幅度甚至超過了有用語音信號的幅度,使得按照頻域幅度分析噪聲的方法不再適用。 對此,采用Goertzel 算法,并設(shè)計高低群帶通濾波器,對含有噪聲的語音信號進行分析,使得分析更為準(zhǔn)確。
戈澤爾(Goertzel)算法原理[3]:
圖2 戈澤爾算法結(jié)構(gòu)圖
在圖4 中存在一次復(fù)乘算法,為了避免復(fù)乘算法,將一階純極點濾波器變?yōu)槎A濾波器,推導(dǎo)如下:
可以用兩個差分方程表示該二階濾波器,即
對于音調(diào)檢測,只有yk(n)的幅值平方是需要的,通過實現(xiàn)這種需求,可以使算法做進一步簡化,yk(n)的平方幅值可以計算為:
表3 濾波器頻率與音頻對照表
圖3 戈澤爾算法單個信號頻譜圖
可見, 通過FFT 可以得到信號所有譜線, 了解信號整個頻域信息,而對于DTMF 信號的8 個行頻/列頻,戈澤爾算法能更快速的在輸入信號中提取頻譜信息。 當(dāng)使用錄制的DTMF 信號,用FFT 算法或戈澤爾算法總會有誤差,所以在分析之前應(yīng)該先將信號通過濾波器。
根據(jù)電話號碼按鍵音在高低頻率的分布,設(shè)計出高低頻率通帶濾波器,通頻帶分別是690~950Hz 和1200~1640Hz,分別是DTMF 的低頻群和高頻群的頻率范圍。 得到雙通帶帶通濾波器如圖4 所示。
對于含噪聲的一串語音信號的分析:
含噪聲的一串語音信號的分析結(jié)果如圖5 所示。
圖4 高低頻雙通帶帶通濾波器
圖5 含噪聲的一串語音信號
從圖5 中可以看出,測試語音中含有噪聲,并且聲音幅度較小的語音,幾乎同噪聲一樣。 分析短時能量和過零率,并無規(guī)律可循;所以當(dāng)噪聲較大時,單純用FFT 或戈澤爾算法都不可行,而且從短時能量和過零率這兩個方面都不可分析語音是哪個按鍵。 經(jīng)過濾波器之后,語音信號的短時能量和過零率基本上無噪聲, 可以很容易區(qū)分信號,經(jīng)過濾波器后,運用戈澤爾算法可以得到的比較清晰的十一個語音信號的DFT 圖形,如圖6 所示,得到正確的號碼:13639637115。
圖6 戈澤爾算法得到的信號頻譜
本文針對DTMF 信號, 運用FFT 算法和戈澤爾算法對單個信號進行分析,同時基于短時能量和過零率對一串語音信號進行分割得到單個信號,并在信號進行量化的過程中將雙聲道合并成單聲道,增強了語音。 考慮到兩種算法對含有噪聲信號的處理不高的缺點,通過考慮DTMF 信號頻率特點,運用窗函數(shù)設(shè)計出高低頻群的雙通帶通濾波器對信號進行濾波,能較為準(zhǔn)確的分析出按鍵號碼。
[1]徐阿勇,李方洲,羅蔚華.基于MATLAB 的DTMF 技術(shù)計算機模擬[J].溫州師范學(xué)院學(xué)報:自然科學(xué)版,2005,26(5):40-44.
[2]趙力.語音信號處理[M].北京:機械工業(yè)出版社,2005:31-37.
[3]DTMF 信 號 系 統(tǒng) 的Matlab 仿 真 [OL].[2013-6-25].http://www.docin.com/p-423598010.html.
[4]程佩青.數(shù)字信號處理教程[M].北京:清華大學(xué)出版社,2007:333-340.