DTMF在VOIP中的解決方案

雙音多頻DTMF(Dual Tone Multi-Frequency)信令,因其提供更高的撥號速率,迅速取代了傳統轉盤式電話機使用的撥號脈衝信令。DTMF也應用在交互式控制中,諸如語言菜單、語言郵件、電話銀行和ATM終端等。因爲DTMF在傳統通訊領域中的普遍使用,因此在VOIP中,DTMF還是發揮着重要的做用。算法

一個DTMF信號由兩個頻率的音頻信號疊加構成。每一對這樣的音頻信號惟一表示一個數字或符號。產生DTMF信號,就是利用兩個不一樣頻率的正弦波疊加之後造成的波形,解碼時則採用改進的Goertzel算法,從頻域搜索兩個正弦波的存在。有16種DTMF信號,0-九、*#ABCD。ui

DTMF在VOIP中的解決方案:spa

因爲在IP網中的通訊傳輸是採用包交換(packet switch)而不是傳統領域中的線路交換(circuit switch)以及IP網的不穩定的特性,DTMF在VOIP中應用的解決方案和傳統有所不一樣,而且暫時還未統一,有多種解決方案。ci

1.用SIP信令的INFO方法攜帶DTMF信號。同步

該方法是用SIP信令的INFO方法來明文定義來表明DTMF信號。該種方法還在研究討論當中,有專家認爲其並不適用,主要缺陷是由於SIP控制信令和媒體傳輸(RTP)是分開傳輸,很容易形成DTMF信號和媒體包不一樣步。it

簡單舉個例子,在 Voice Mail應用中,用戶根據提示音輸入一個DTMF信號,隨後開始留言。Server是在接受到該DTMF信號後開始保存用戶的留言。然而因爲DTMF信號是經過SIP信令來傳輸的,而媒體流是經過RTP來傳輸的,有可能用戶留言的RTP包先到,而該DTMF信號的INFO消息延遲,致使Server不保存用戶的語音留言直至接受到INFO消息。音頻

2.在RTP媒體傳輸中攜帶DTMF信號。搜索

該方法是將DTMF信號和媒體流同樣,用RTP包來傳輸,於是沒有DTMF信號和媒體流不一樣步的問題,使用H323信令的VOIP就是採用該種方法,相對來講比較成熟。終端

而其中又分In band和Out of band(RFC2833)兩種。程序

In Band DTMF:In Band DTMF是指直接將DTMF的音頻數字信號不經任何處理直接打成RTP包在IP網中傳輸。其中可能和用戶的語音媒體流混合(mix)在一塊兒傳輸。程序要獲知哪一個包有DTMF信號,是什麼DTMF信號,必須實時檢查每一個RTP包裏面的媒體流數據,分析它的頻域。

Out of Band DTMF(RFC 2833):Out of Band DTMF是DTMF信號用專門的RTP包進行標識,在RTP包的頭域中就可得知該包是DTMF包,而且知道是什麼DTMF信號。RFC2833專門對此有定義。

3.動態生成DTMF音頻信號

當程序須要產生一個DTMF音頻數字信號時,固然能夠讀取已經錄製好的文件。

4.根據RTP包中的音頻信號檢測DTMF信號

在輸入信號中檢測DTMF信號,並將其轉換爲實際的數字,這一解碼過程本質是連續的過程,須要在輸入的數據信號流中連續地搜索DTMF信號頻譜的存在。

相關文章
相關標籤/搜索