DTMF( Double Tone Multi壹Frequency)即雙音多頻,是用兩個特定的單音頻組合信號來代表數字信號以實現其功能的壹種編碼術。
DTMF信號有16個編碼,其中有10個數字鍵0~9和6個功能鍵*、#、A、B、C、D。由於按照組合原理,壹般應有8種不同的單音頻信號。因此可采用的頻率也有8種,故稱之為多頻,又因它采用從8種頻率中任意抽出2種進行組合來進行編碼,所以又稱之為“8中取2”的編碼技術。
擴展資料:
傳送DTMF信號普遍有三種方式:
1、通過通信協議傳輸(SIP信令)
用SIP信令的INFO方法攜帶DTMF信號,沒有統壹的實現標準,目前以Cisco SIPINFO為標準,通過SIPINFO包中的signal字段識別DTMF按鍵。註意當DTMF為“*”時不同的標準實現對應的signal=*或signal=10。
SIPINFO的好處就是不影響RTP數據包的傳輸,但是因為SIP控制信令和媒體傳輸(RTP)是分開傳輸,很容易造成DTMF信號和媒體包不同步。
2、 通過RTP的數據內容傳輸(Inband)
In Band是指直接將DTMF的音頻數字信號不經任何處理直接打成RTP包在IP網中傳輸。其中可能和用戶的語音媒體流混合在壹起傳輸。
程序要獲知哪個包有DTMF信號,是什麽DTMF信號,必須提取RTP數據包進行頻譜分析,經過頻譜分析得到高頻和低頻的頻率,然後查表得到對應的按鍵。
在選擇壓縮比很高碼率很低的codec,比如G.723.1和G.729A等。主要缺陷是由於網絡丟包的影響,有時會造成DTMF信號丟失,而且DTMF音混合在語音包中,容易產生偏差,造成信號失真。
3、通過rfc2833的規則和格式包傳輸
通過RTP傳輸,由特殊的rtpPayloadType即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參數。
百度百科-DTMF