雙音多頻信號(Dual-Tone Multi-Frequency, DTMF),電話系統中電話機與交換機之間的一種用戶信令,通常用於發送被叫號碼。
在使用雙音多頻信號之前,電話系統中使用一連串的斷續脈衝來傳送被叫號碼,稱為脈衝撥號。脈衝撥號需要電信局中的操作員手工完成長途接續。
按鍵
雙音多頻的撥號鍵盤是4×4的矩陣,每一行代表一個高頻,每一列代表一個低頻。每按一個鍵就發送一個高頻和低頻的正弦信號組合,比如'1'相當於697和1209赫茲(Hz)。交換機可以解碼這些頻率組合並確定所對應的按鍵。
----------------------------------------------------------------------------------------------------------------------------------------
、SIP中偵測 DTMF 的方法:SIPINFO、RFC2833、INBAND
為帶內檢測方式,而且與普通的RTP語音包混在一起傳送。在進行INBAND DTMF檢測時唯一的辦法就是提取RTP數據包進行頻譜分析,經過頻譜分析得到高頻和低頻的頻率,然後查表得到對應的按鍵,進行頻譜分析的算法一般為Goertzel,這種算法的實現也很簡單,網上有很多可以下到,但建議采用定點算法,浮點算法效率很低。
在選擇壓縮比很高碼率很低的codec,比如G.723.1和G.729A等,建議不要使用INBAND模式,因為INBAND DTMF數據在進行復雜編解碼後會產生失真,造成DTMF檢測發生偏差或失敗。
另外,還特別需要注意的一點就是很多SIP UA中INBAND都是伴隨著RFC2833和SIPINFO同時發生的,這時需要區別對待,最好選擇RFC2833和SIPINFO
資料參考來源
https://zh.wikipedia.org/wiki/%E5%8F%8C%E9%9F%B3%E5%A4%9A%E9%A2%91
http://sirrain.blog.51cto.com/2645762/481055