摘 要: 雙音多頻信號(hào)被廣泛用于音頻電話(huà)及交互式控制系統(tǒng)中,,正確解碼是這些應(yīng)用的關(guān)鍵。然而雙音多頻信號(hào)解碼因噪音干擾面臨著Talk-off的難題,。針對(duì)該問(wèn)題,,在Goertzel算法基礎(chǔ)上提出利用頻率分辨率及其倍頻檢測(cè)干擾噪音的解決方案。測(cè)試結(jié)果表明該方法優(yōu)于二次諧波檢測(cè)的解決方案,。
關(guān)鍵詞: 雙音多頻,;Talk-off;Goertzel算法,;二次諧波
雙音多頻DTMF(Dual Tone Multi-Frequency)信號(hào)由兩個(gè)單頻正弦信號(hào)疊加生成,,是音頻電話(huà)的撥號(hào)信號(hào)標(biāo)準(zhǔn)[1]。由于具有良好的抗噪特性,,已被廣泛用于諸如主叫識(shí)別信號(hào)傳送及顯示,、電話(huà)語(yǔ)音服務(wù)、遠(yuǎn)程控制和ATM終端等通信系統(tǒng)撥號(hào)傳輸中[2]。根據(jù)ITU的建議標(biāo)準(zhǔn)Q23[3],,構(gòu)成DTMF信號(hào)的兩個(gè)頻率分別來(lái)自行頻組(697 Hz,,770 Hz,852 Hz,,941 Hz)和列頻組(1 290 Hz,,1 336 Hz,1 477 Hz,,1 633 Hz),,共16種組合,分別表示16個(gè)按鍵值,,即10個(gè)數(shù)字鍵0~9和6個(gè)功能鍵*,、#、A,、B,、C、D[4],。
DTMF解碼是指從受干擾的語(yǔ)音信號(hào)中檢測(cè)出DTMF信號(hào)并將其還原成按鍵值,。正確的解碼對(duì)于基于DTMF的應(yīng)用至關(guān)重要。DTMF解碼的實(shí)質(zhì)是從有噪信號(hào)中檢測(cè)出兩個(gè)正弦波頻率,。近年來(lái),,已有多個(gè)解碼算法被提出。最直接的方法是DFT,,通過(guò)DFT得到輸入信號(hào)的頻域信息,進(jìn)而分析頻譜確定是否存在DTMF頻率,。DFT通常以FFT的運(yùn)算來(lái)實(shí)現(xiàn),,由于FFT生成從DC到半采樣率頻帶內(nèi)所有頻率信息,因此該方法計(jì)算量大,,且需要較多的存儲(chǔ)空間用于暫存計(jì)算結(jié)果[5],。針對(duì)該問(wèn)題,參考文獻(xiàn)[6]提出基于Goertzel的DFT快速運(yùn)算,。與FFT不同,,Goertzel算法只對(duì)DTMF的8個(gè)頻點(diǎn)計(jì)算DFT,因此計(jì)算量大大降低,。此外,,Deosthali等人提出了非均勻DFT算法[7],Popovic在犧牲相位信息的情況下提出了改進(jìn)的Goertzel算法[8],,金鑫春等人研究了Goertzel算法的參數(shù)選擇問(wèn)題,,但這些算法都沒(méi)有考慮DTMF的Talk-off錯(cuò)誤問(wèn)題。解決該問(wèn)題的常用方法是檢測(cè)二次諧波。由于DTMF信號(hào)只包含基因成分,,因此只要檢測(cè)到較強(qiáng)的二次諧波,,就認(rèn)為該信號(hào)不是DTMF信號(hào)。但在強(qiáng)噪音環(huán)境下,,該方法仍會(huì)出現(xiàn)誤判,,即發(fā)生Talk-off錯(cuò)誤。
本文針對(duì)Talk-off錯(cuò)誤問(wèn)題,,在Goertzel算法的基礎(chǔ)上,,提出基于頻率分辨率及其倍頻檢測(cè)的方案,并利用后續(xù)的判斷邏輯進(jìn)一步排除虛假DTMF信號(hào),。大量真實(shí)應(yīng)用環(huán)境下的語(yǔ)音測(cè)試結(jié)果表明,,本文方法在強(qiáng)噪音干擾情況下仍能避免Talk-off錯(cuò)誤問(wèn)題。
1 DTMF解碼器
1.1 解碼器框架
本文提出的DTMF解碼器如圖1所示,,主要包括信號(hào)預(yù)判,、自動(dòng)增益控制AGC(Auto Gain Control)、基于Goertzel的頻率檢測(cè)和判斷邏輯幾個(gè)模塊,。信號(hào)預(yù)判模塊根據(jù)輸入信號(hào)的能量決定其是否包含DTMF信號(hào),;AGC將輸入信號(hào)的動(dòng)態(tài)范圍變換到Goertzel算法可以處理的范圍;基于Goertzel的頻率檢測(cè)模塊計(jì)算輸入信號(hào)在8個(gè)DTMF頻點(diǎn)的能量,、頻率分辨率及其倍頻的能量,,并以此作為下一個(gè)模塊的輸入;判斷邏輯模塊根據(jù)前一個(gè)模塊的輸入,,決定某對(duì)DTMF頻率是否存在,,并將其翻譯成對(duì)應(yīng)的鍵值。
1.2 信號(hào)預(yù)判
根據(jù)ITU的建議標(biāo)準(zhǔn)Q23對(duì)DTMF信號(hào)的規(guī)定,,如果輸入信號(hào)在8個(gè)DTMF頻點(diǎn)的能量均≥-25 dBm且≤9 dBm,,則認(rèn)為可能包括DTMF信號(hào)。如果輸入信號(hào)在8個(gè)DTMF頻點(diǎn)處的能量均≤55 dBm,,則認(rèn)為該信號(hào)肯定不存在DTMF音調(diào),。信號(hào)預(yù)判模塊能夠有效地排除一些虛假DTMF信號(hào),減小后續(xù)模塊誤判的可能性,。
1.3 AGC
AGC從一幀輸入數(shù)據(jù)的前若干個(gè)樣點(diǎn)中確定幅度模的峰值,,將Goertzel 算法所要處理的樣點(diǎn)都乘以一個(gè)系數(shù),使得該峰值等于Goertzel 算法所能處理的最大值,。
其中fk和fs分別表示待檢測(cè)的目標(biāo)頻率和采樣頻率,,floor()表示向下取整運(yùn)算。本文用14個(gè)如圖2所示的IIR濾波器實(shí)現(xiàn)14個(gè)頻率的檢測(cè),,即8個(gè)DTMF頻率和6個(gè)與頻率分辨率相關(guān)的頻率,。這6個(gè)頻率檢測(cè)主要是為了解決Talk-off問(wèn)題,,其計(jì)算如下:
由于現(xiàn)有的語(yǔ)音增強(qiáng)模塊都是一個(gè)語(yǔ)音幀(8 kHz時(shí)為20 ms,160個(gè)采樣點(diǎn))處理一次,。為了便于將DTMF解碼器集成到現(xiàn)有系統(tǒng)中,,本文的DTMF解碼器每個(gè)語(yǔ)音幀調(diào)用一次Goertzel算法進(jìn)行頻率檢測(cè)。根據(jù)ITU Q24[9],,DTMF音調(diào)的持續(xù)時(shí)間介于45 ms~55 ms之間,,連續(xù)的DTMF信號(hào)之間的間隔至少為45 ms。因此一個(gè)DTMF音調(diào)由多個(gè)語(yǔ)音幀組成,。這意味著一個(gè)DTMF音調(diào)會(huì)被檢測(cè)多次,。對(duì)同一個(gè)DTMF音調(diào),理論上每次檢測(cè)結(jié)果都應(yīng)該是一樣的,。然而受噪聲影響,,前后幾次檢測(cè)結(jié)果有可能出現(xiàn)不一致的情況。為解決該問(wèn)題,,本文采用表決方法輸出最可靠的檢測(cè)結(jié)果,,多次檢測(cè)的表決也增強(qiáng)了本文解碼器的抗噪性能。
1.5 判斷邏輯
圖3給出了判斷邏輯模塊的工作流程,,根據(jù)前面14個(gè)IIR濾波器的檢測(cè)結(jié)果判斷檢測(cè)到的行頻和列頻是否有效,。對(duì)于有效的檢測(cè)結(jié)果,根據(jù)圖4所示的行頻,、列頻與按鍵的對(duì)應(yīng)關(guān)系,,輸出按鍵值。
2 實(shí)驗(yàn)結(jié)果與分析
為了驗(yàn)證本文方法的有效性,,用真實(shí)使用環(huán)境下的語(yǔ)音數(shù)據(jù)作為測(cè)試數(shù)據(jù),。測(cè)試數(shù)據(jù)獲取方法是,首先在兩個(gè)手機(jī)之間建立通信鏈接,,然后在其中一個(gè)手機(jī)上隨機(jī)連續(xù)地按下多個(gè)按鍵,,另一個(gè)手機(jī)將接收到的語(yǔ)音信號(hào)保存成測(cè)試用的wav文件。為了測(cè)試Talk-off性能,,在發(fā)送DTMF信號(hào)的手機(jī)端分別播放噪音、語(yǔ)音和音樂(lè),。在算法實(shí)現(xiàn)時(shí),,考慮到在定點(diǎn)DSP上的移植,用Q14格式將其定點(diǎn)化(DFT模值用32位表示,,其余的均用16位表示),。
程序有3個(gè)可調(diào)參數(shù),其中Frames between Successive Dials指兩個(gè)連續(xù)按鍵間隔的時(shí)間,,該參數(shù)用于處理按鍵防抖動(dòng),,以幀為單位,,對(duì)于8 kHz采樣率的語(yǔ)音而言,一幀為20 ms,。對(duì)于真實(shí)環(huán)境下的測(cè)試數(shù)據(jù),,程序中的3個(gè)參數(shù)都是固定的,分別設(shè)為3,、2和5,。測(cè)試中,將本文方法與參考文獻(xiàn)[2]的方法進(jìn)行了對(duì)比,。其中,,參考文獻(xiàn)[2]通過(guò)二次諧波檢測(cè)來(lái)排除噪音對(duì)檢測(cè)結(jié)果的干擾。參考文獻(xiàn)[2]的參數(shù)設(shè)置如下:N=201,,二次諧波的能量至少比基頻能量小20 dB,。
2.1 真實(shí)環(huán)境下測(cè)試1
在發(fā)送DTMF信號(hào)的手機(jī)側(cè)播放如圖5所示的噪聲信號(hào)。接收側(cè)手機(jī)錄制的語(yǔ)音信號(hào)如圖6所示,。這個(gè)測(cè)試信號(hào)的DTMF按鍵值序列為:123456789*0##0*98765423147856280#963547*,。參考文獻(xiàn)[2]的檢測(cè)結(jié)果為:1234567899*?##0*98765423147855280#963547*(單下劃線(xiàn)表示誤檢測(cè),雙下劃線(xiàn)表示重復(fù)檢測(cè),,?表示漏檢),,重復(fù)檢測(cè)一個(gè)9,漏檢一個(gè)0,,誤將6檢測(cè)為5;本文方法檢測(cè)成功率為100%,。
2.2 真實(shí)環(huán)境下測(cè)試2
在發(fā)送DTMF信號(hào)的手機(jī)側(cè)播放如圖7所示的音樂(lè)信號(hào)。接收側(cè)的語(yǔ)音信號(hào)如圖8所示,,對(duì)應(yīng)的DTMF按鍵值序列為:123456789*0##0*987654321147*2580369##9630852*741,。參考文獻(xiàn)[2]的檢測(cè)結(jié)果為:123456789*0##0*98765?321147*2580369###963085?*7417(單下劃線(xiàn)表示誤檢測(cè),雙下劃線(xiàn)表示重復(fù)檢測(cè),,?表示漏檢),,漏檢4和2,#被重復(fù)檢測(cè)一次,,結(jié)束時(shí)誤檢測(cè)出7,;本文方法檢測(cè)成功率為100%。
2.3 真實(shí)環(huán)境下測(cè)試3
在發(fā)送DTMF信號(hào)的手機(jī)側(cè),,操作者一邊按鍵一邊發(fā)聲,。接收側(cè)的語(yǔ)音信號(hào)如圖9所示,對(duì)應(yīng)的DTMF按鍵值序列為:5152535455565758595*505#1525354565758595*505#5,。參考文獻(xiàn)[2]的檢測(cè)結(jié)果為:511?253545555657585595*505#1525354565758595*5005#5(單下劃線(xiàn)表示誤檢測(cè),,雙下劃線(xiàn)表示重復(fù)檢測(cè),?表示漏檢),,第2個(gè)按鍵1被重復(fù)檢測(cè)1次,,第3個(gè)按鍵5被漏檢,,第10個(gè)按鍵、第17個(gè)按鍵和第43個(gè)按鍵分別被重復(fù)檢測(cè)1次,;本文方法檢測(cè)成功率為100%,。
上述真實(shí)環(huán)境下的測(cè)試結(jié)果表明,本文方法在處理Talk-off問(wèn)題上比傳統(tǒng)的二次諧波檢測(cè)更為有效,。其原因是,,離散域上用Goertzel算法檢測(cè)二次諧波的準(zhǔn)確性依賴(lài)于頻率分辨率的選擇。在強(qiáng)背景噪音環(huán)境下,,其檢測(cè)結(jié)果更容易受到影響,。本文直接利用頻率分辨率及其倍頻進(jìn)行干擾語(yǔ)音的檢測(cè),可以有效避免該問(wèn)題,。
2.4 ITU標(biāo)準(zhǔn)兼容性測(cè)試
ITU對(duì)DTMF解碼器的性能規(guī)定主要體現(xiàn)在4個(gè)方面,,即Talk-off、扭曲(twist),、頻偏和SNR,。Talk-off的測(cè)試如前文所述。扭曲指的是檢測(cè)到的行頻與列頻DFT模值之比,,對(duì)于有效的DTMF信號(hào),,要求在-4 dB~8 dB范圍內(nèi)。扭曲測(cè)試是在檢測(cè)DTMF之后的邏輯判斷中進(jìn)行的,,目的是用于排除虛假DTMF信號(hào),。圖4中判斷行頻、列頻檢測(cè)值之間關(guān)系的步驟即為扭曲測(cè)試,。ITU規(guī)定頻偏的容許范圍為±1.5%,,當(dāng)超過(guò)±3.5%時(shí)則認(rèn)為是無(wú)效的DTMF信號(hào)。在SNR等于或高于15 dB時(shí),,ITU要求成功檢測(cè)率為100%,。按照參考文獻(xiàn)[10]所述的方法對(duì)頻偏和SNR進(jìn)行測(cè)試。實(shí)驗(yàn)結(jié)果表明,,在SNR為10 dB的情況下,,頻偏在±1.5%范圍內(nèi)時(shí),本文解碼器的檢測(cè)成功率為100%;當(dāng)頻偏超過(guò)±2.0%,,譯碼開(kāi)始出錯(cuò),。當(dāng)SNR在-3.7 dB以上時(shí),本文檢測(cè)成功率為100%,。其中,測(cè)試用的DTMF信號(hào)都由Cool Edit Pro軟件生成,;實(shí)驗(yàn)中的3個(gè)參數(shù)均設(shè)為1,。
Talk-off是DTMF解碼器的重要性能,,然而現(xiàn)有算法對(duì)此問(wèn)題的解決方案主要囿于二次諧波的檢測(cè)。本文另辟蹊徑,,提出頻率分辨率及其倍頻檢測(cè)的解決思路,。真實(shí)使用環(huán)境下的測(cè)試數(shù)據(jù)驗(yàn)證了該方法的可行性。ITU標(biāo)準(zhǔn)兼容性測(cè)試實(shí)驗(yàn)表明本文方法能夠滿(mǎn)足ITU對(duì)DTMF解碼器的規(guī)定,。
參考文獻(xiàn)
[1] 王乙斐,,游舟浩,王穎,,等.DTMF信號(hào)的合成與識(shí)別[J].電子設(shè)計(jì)工程,,2011,19(7):71-73.
[2] 邵明東.改進(jìn)Goertzel算法的DTMF信號(hào)檢測(cè)的仿真與應(yīng)用[J].聲電技術(shù),,2009,,33(12):65-69.
[3] ITU.ITU-T recommendation Q.23 technical features of pushbutton telephone sets[S].1988.
[4] 金鑫春,汪一鳴.Goertzel算法下DTMF信號(hào)檢測(cè)及參數(shù)優(yōu)化[J].現(xiàn)代電子技術(shù),,2010(6):152-155.
[5] MILOS S T,,DUSAN R.Performance analysis of the DTMF detector based on the Goertzel’s algorithm[C].Proc.of 14th Telecommunications Forum,2006.
[6] POPOVIC M.Digital signal processing[M].Belgrade:Academic mind,,2003:100-120.
[7] DEOSTHALI S,,MCCASLIN R,EVANS B.A low-complexity ITU-compliant dual tone multiple frequency detector[J].IEEE Trans.on Signal Processing,,2000,,48(5):1-20.
[8] POPOVIC M.Efficient decoding of digital DTMF and R2 tone signalization[J].Factual Univ.Ser.,Elec.Energ,,2003,,16(3):389-399.
[9] ITU.ITU-T recommendation Q.24 multifrequency push buton signal reception[S].1989.
[10] 陳通,曹小強(qiáng).基于NDFT Goertzel濾波器的DTMF信號(hào)檢測(cè)的改進(jìn)方法[J].西南大學(xué)學(xué)報(bào),,2008,,30(1):152-155.