《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > Talk-off魯棒的雙音多頻信號(hào)解碼器
Talk-off魯棒的雙音多頻信號(hào)解碼器
來(lái)源:微型機(jī)與應(yīng)用2013年第6期
吳澤偉,袁紅星,吳少群,余輝晴
(寧波工程學(xué)院 電子與信息工程學(xué)院,浙江 寧波315016)
摘要: 雙音多頻信號(hào)被廣泛用于音頻電話(huà)及交互式控制系統(tǒng)中,正確解碼是這些應(yīng)用的關(guān)鍵。然而雙音多頻信號(hào)解碼因噪音干擾面臨著Talk-off的難題。針對(duì)該問(wèn)題,在Goertzel算法基礎(chǔ)上提出利用頻率分辨率及其倍頻檢測(cè)干擾噪音的解決方案。測(cè)試結(jié)果表明該方法優(yōu)于二次諧波檢測(cè)的解決方案。
Abstract:
Key words :

摘  要: 雙音多頻信號(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。