劉曉芳 馮克遷
(河南師范大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,河南 新鄉(xiāng)453007)
DTMF 信號(hào)系統(tǒng)是一個(gè)典型的小型信號(hào)處理系統(tǒng),它要用數(shù)字方法產(chǎn)生模擬信號(hào)并進(jìn)行傳輸,其中還用到了D/A 變換器,在接收端用A/D 變換器將其轉(zhuǎn)換成數(shù)字信號(hào), 并進(jìn)行數(shù)字信號(hào)處理與識(shí)別。 對(duì)DTMF 信號(hào)進(jìn)行檢測(cè)是DTMF 技術(shù)應(yīng)用的關(guān)鍵,一般的文獻(xiàn)中也只給出了計(jì)算機(jī)模擬的DTMF 信號(hào)的檢測(cè)[1]。 本文用FFT 算法和戈澤爾算法分別分析了計(jì)算機(jī)模擬下的DTMF 信號(hào)的檢測(cè);并設(shè)計(jì)雙邊帶的帶通濾波器,對(duì)實(shí)際通信中帶有噪聲的音頻信號(hào)進(jìn)行分析,能清晰的分出來語音信號(hào)。
電話號(hào)碼鍵的信號(hào)是由低頻、 高頻兩個(gè)信號(hào)的余弦表達(dá)式合成的:yi=sin2πfLt+sin2πfHt, 其中fL、fH分別代表合成電話信號(hào)鍵i 的高低頻率,如表1 所示。

表1 DTMF 按鍵與頻率之間的對(duì)應(yīng)關(guān)系
用Windows 自帶的聲卡采集錄制語音信號(hào)。 yi為連續(xù)的語音信號(hào),而計(jì)算機(jī)處理的卻是離散的信號(hào),針對(duì)于這種問題采用奈奎斯特采樣定理對(duì)信號(hào)進(jìn)行采樣,fs為抽樣頻率,Ts為采樣間隔,得到信號(hào)的離散表示:

對(duì)yn進(jìn)行N 點(diǎn)的FFT 變換得到y(tǒng)n的頻域表達(dá)式Y(jié)n。 由傅氏變換的性質(zhì)可知,Yn在理想的條件下, 在頻域的內(nèi)有四個(gè)單位沖激響應(yīng),幅值相等,可以找到幅值最大的四個(gè)點(diǎn)所對(duì)應(yīng)的k 值。 在得到的四個(gè)k 值中,最小的兩個(gè)分別對(duì)應(yīng)著高低頻。

由(3)式,可以根據(jù)輸入信號(hào)的音頻,完成單個(gè)信號(hào)音的識(shí)別,理想狀態(tài)下用FFT 算法檢測(cè),得到實(shí)驗(yàn)誤差如表2 所示。

表2 FFT 算法實(shí)驗(yàn)誤差
以上用FFT 算法識(shí)別按鍵只是針對(duì)單個(gè)語音信號(hào), 而且信號(hào)的噪聲比較小。同樣,要想識(shí)別出一串電話號(hào)碼的按鍵音,需將一串電話號(hào)碼的按鍵音分割成單個(gè)信號(hào)音,再按照上述方法進(jìn)行按鍵的識(shí)別。
錄制聲音過程中需對(duì)聲音進(jìn)行量化處理,最理想的量化是最大電平對(duì)應(yīng)最高量化比特,但實(shí)際很難得到,常有音輕問題。利用雙聲道合并可硬實(shí)現(xiàn)音量標(biāo)準(zhǔn)化,即最大電平對(duì)應(yīng)最高量化比特,實(shí)現(xiàn)語音增強(qiáng)的效果。 基于短視能量和過零率可以將一串信號(hào)分成多個(gè)信號(hào)。
用Windows 產(chǎn)生的語音含有左右兩個(gè)聲道, 利用MATLAB 程序?qū)㈦p聲道的語音信號(hào)變成單聲道,將會(huì)增強(qiáng)語音的效果。得到雙聲道、單聲道的單個(gè)語音信號(hào)的短時(shí)能量和過零率[2],如圖1 所示。

圖1 雙、單聲道的單個(gè)語音信號(hào)的短時(shí)能量和過零率
經(jīng)過聲道合并之后語音信號(hào)的短時(shí)能量增大了,因此信號(hào)更容易分析,如果含有噪聲的情況下,也容易去噪。
上述的方法都是利用Windows 錄制的語音進(jìn)行分析的,其特點(diǎn)是噪聲小,能夠較準(zhǔn)確的分析出撥號(hào)鍵。但是運(yùn)用同樣的方法,對(duì)實(shí)際錄制的電話語音進(jìn)行分析時(shí),不管是對(duì)于單個(gè)語音信號(hào)還是一串語音信號(hào)分析都會(huì)有很大的誤差。 通過比較發(fā)現(xiàn), 人為錄制的語音信號(hào)與Windows 錄制的語音相比有較大的噪聲,在頻域內(nèi)噪聲的幅度甚至超過了有用語音信號(hào)的幅度,使得按照頻域幅度分析噪聲的方法不再適用。 對(duì)此,采用Goertzel 算法,并設(shè)計(jì)高低群帶通濾波器,對(duì)含有噪聲的語音信號(hào)進(jìn)行分析,使得分析更為準(zhǔn)確。
戈澤爾(Goertzel)算法原理[3]:

圖2 戈澤爾算法結(jié)構(gòu)圖


在圖4 中存在一次復(fù)乘算法,為了避免復(fù)乘算法,將一階純極點(diǎn)濾波器變?yōu)槎A濾波器,推導(dǎo)如下:

可以用兩個(gè)差分方程表示該二階濾波器,即

對(duì)于音調(diào)檢測(cè),只有yk(n)的幅值平方是需要的,通過實(shí)現(xiàn)這種需求,可以使算法做進(jìn)一步簡(jiǎn)化,yk(n)的平方幅值可以計(jì)算為:



表3 濾波器頻率與音頻對(duì)照表

圖3 戈澤爾算法單個(gè)信號(hào)頻譜圖
可見, 通過FFT 可以得到信號(hào)所有譜線, 了解信號(hào)整個(gè)頻域信息,而對(duì)于DTMF 信號(hào)的8 個(gè)行頻/列頻,戈澤爾算法能更快速的在輸入信號(hào)中提取頻譜信息。 當(dāng)使用錄制的DTMF 信號(hào),用FFT 算法或戈澤爾算法總會(huì)有誤差,所以在分析之前應(yīng)該先將信號(hào)通過濾波器。
根據(jù)電話號(hào)碼按鍵音在高低頻率的分布,設(shè)計(jì)出高低頻率通帶濾波器,通頻帶分別是690~950Hz 和1200~1640Hz,分別是DTMF 的低頻群和高頻群的頻率范圍。 得到雙通帶帶通濾波器如圖4 所示。
對(duì)于含噪聲的一串語音信號(hào)的分析:
含噪聲的一串語音信號(hào)的分析結(jié)果如圖5 所示。

圖4 高低頻雙通帶帶通濾波器

圖5 含噪聲的一串語音信號(hào)
從圖5 中可以看出,測(cè)試語音中含有噪聲,并且聲音幅度較小的語音,幾乎同噪聲一樣。 分析短時(shí)能量和過零率,并無規(guī)律可循;所以當(dāng)噪聲較大時(shí),單純用FFT 或戈澤爾算法都不可行,而且從短時(shí)能量和過零率這兩個(gè)方面都不可分析語音是哪個(gè)按鍵。 經(jīng)過濾波器之后,語音信號(hào)的短時(shí)能量和過零率基本上無噪聲, 可以很容易區(qū)分信號(hào),經(jīng)過濾波器后,運(yùn)用戈澤爾算法可以得到的比較清晰的十一個(gè)語音信號(hào)的DFT 圖形,如圖6 所示,得到正確的號(hào)碼:13639637115。

圖6 戈澤爾算法得到的信號(hào)頻譜
本文針對(duì)DTMF 信號(hào), 運(yùn)用FFT 算法和戈澤爾算法對(duì)單個(gè)信號(hào)進(jìn)行分析,同時(shí)基于短時(shí)能量和過零率對(duì)一串語音信號(hào)進(jìn)行分割得到單個(gè)信號(hào),并在信號(hào)進(jìn)行量化的過程中將雙聲道合并成單聲道,增強(qiáng)了語音。 考慮到兩種算法對(duì)含有噪聲信號(hào)的處理不高的缺點(diǎn),通過考慮DTMF 信號(hào)頻率特點(diǎn),運(yùn)用窗函數(shù)設(shè)計(jì)出高低頻群的雙通帶通濾波器對(duì)信號(hào)進(jìn)行濾波,能較為準(zhǔn)確的分析出按鍵號(hào)碼。
[1]徐阿勇,李方洲,羅蔚華.基于MATLAB 的DTMF 技術(shù)計(jì)算機(jī)模擬[J].溫州師范學(xué)院學(xué)報(bào):自然科學(xué)版,2005,26(5):40-44.
[2]趙力.語音信號(hào)處理[M].北京:機(jī)械工業(yè)出版社,2005:31-37.
[3]DTMF 信 號(hào) 系 統(tǒng) 的Matlab 仿 真 [OL].[2013-6-25].http://www.docin.com/p-423598010.html.
[4]程佩青.數(shù)字信號(hào)處理教程[M].北京:清華大學(xué)出版社,2007:333-340.