VOIP DTMF 筆記


DTMF定義:由高頻音和低頻音的兩個正弦波合成表示數字按鍵(0~9 * # A B C D)。

VOIP中 檢測DTMF通常有三種方法,sip info, inband, out band(rfc2833), 此外,在3gpp ims規范中 對dtmf的要求已經采用最新的rfc 4733 取代rfc 2833.

 

1. sip info

 

     為帶外檢測方式,通過SIP信令通道傳輸DTMF數據。沒有統一的實現標准,通過SIP INFO 方法 發送,包中的signal字段識別DTMF按鍵。注意當DTMF為“*”時不同的標准實現對應的signal=*或signal=10。SIP INFO的好處就是不影響RTP數據包的傳輸,但可能會造成不同步。

2.out band (rfc2833)

    為帶內檢測方式,通過RTP傳輸,由特殊的rtp PayloadType即TeleponeEvent來標示RFC2833數據包。同一個DTMF按鍵通常會對應多個RTP包,這些RTP數據包的時間戳均相同,此可以作為識別同一個按鍵的判斷依據,最后一包RTP數據包的end標志置1表示DTMF數據結束。另外,很多SIP UA 包括IAD都提供TeleponeEvent的設置功能如3CX Phone,Billion-IAD,ZTE-IAD等默認的TeleponeEvent都為101,但可以人為修改,這時要求在進行RFC2833 DTMF檢測之前需事先獲取SDP協商的TeleponeEvent參數。

3. in band

 

 

 為帶內檢測方式,而且與普通的RTP語音包混在一起傳送。在進行INBAND DTMF檢測時唯一的辦法就是提取RTP數據包進行頻譜分析,經過頻譜分析得到高頻和低頻的頻率,然后查表得到對應的按鍵,進行頻譜分析的算法一般為Goertzel,這種算法的實現也很簡單,網上有很多可以下到,但建議采用定點算法,浮點算法效率很低。

從使用情況看,一般使用rfc283 即out band 方式,一般軟交換服務器這幾種方式都支持,我所知道的asterisk 支持 sip info , rfc 2833及inband 方式,但是rfc2833 兼容性最好, 由於Ims 里對dtfm 這塊采用了rfc 47233 而取代了rfc2833, 所以在ims客戶端與軟交換對接時可能存在兼容性問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM