DTMF相关
来源: | 作者:wltel | 发布时间: 2021-05-20 | 3920 次浏览 | 分享到:

什么是DTMF

假如你拨打了电信客服10000,它会有相应的语音提示信息,拨0键,接入人工帮助...1键,然后干嘛干嘛,那么10000是如何了解你到底拨了哪个键,这就需要一种方式将我们具体拨哪个号码通知给它,这就是DTMF 的用途。

DTMFDouble Tone MulitiFrequency,双音多频)作为实现电话号码快速可靠传输的一种技术,它具有很强的抗干扰能力和较高的传输速度,因此,可广泛用于电话通信系统中。 但绝大部分是用作电话的音频拨号。另外,它也可以在数据通信系统中广泛地用来实现各种数据流和语音等信息的远程传输。
DTMF是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。两个单音频的频率不同,代表的数字或实现的功能也不同。 这种电话机中通常有16个按键,其中有10个数字键096个功能键*#ABCD。由于按照组合原理,一般应有8种不同的单音频信号。因此可采用的频率也有8种,故称之为多频,又因它采用从8种频率中任意抽出2种进行组合来进行编码,所以又称之为“8中取2”的编码技术。
根据CCITT的建议,国际上采用的多种频率为697Hz770Hz852Hz941Hz1209Hz1336Hz1477Hz1633Hz8种。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合见表1

1 双音多频的组合功能

高频群Hz/低频群Hz/功能

1209

1336

1477

1633

697

1

2

3

A

770

4

5

6

B

852

7

8

9

C

941

*

0

#

D

目前传送DTMF信号普遍有三种方式:

A. 通信协议传输(SIP信令)

SIP信令的INFO方法携带DTMF信号。

该方法是用SIP信令的INFO方法来明文定义来代表DTMF信号。主要缺陷是因为SIP控制信令和媒体传输(RTP)是分开传输,很容易造成DTMF信号和媒体包不同步。

举个例子,在Voice Mail应用中,用户根据提示音输入一个DTMF信号,随后开始留言。Server是在接受到该DTMF信号后开始保存用户的留言。然而由于DTMF信号是通过SIP信令来传输的,而媒体流是通过RTP来传输的,有可能用户留言的RTP包先到,而该DTMF信号的INFO消息延迟,导致Server不保存用户的语音留言直至接受到INFO消息。

B. 通过RTP的数据内容传输(Inband

In Band是指直接将DTMF的音频数字信号不经任何处理直接打成RTP包在IP网中传输。其中可能和用户的语音媒体流混合在一起传输。程序要获知哪个包有DTMF信号,是什么DTMF信号,必须实时检查每个RTP包里面的媒体流数据,分析它的频域。主要缺陷是由于网络丢包的影响,有时会造成DTMF信号丢失,而且DTMF音混合在语音包中,容易产生偏差,造成信号失真。

C. 通过rfc2833的规则和格式包传输

RFC2833DTMF信号按照一个的规则和格式组成一个数据包,有专门的RTP包进行标识,在RTP包的头域中就可得知该包是DTMF包,并且知道是什么DTMF信号。RFC2833专门对此有定义。该方法是将DTMF信号和媒体流一样,用RTP包来传输,因而没有DTMF信号和媒体流不同步的问题,接收端接收后进行解析,再还原成相应的DTMF信号,对丢包的容错性强以及识别差错率低,相对来说比较成熟。

  在选择压缩比很高码率很低的codec,比如G.723.1G.729A等,建议不要使用INBAND模式,因为INBAND DTMF数据在进行复杂编解码后会产生失真,造成DTMF检测发生偏差或失败。最好选择RFC2833SIPINFO

原文出处:http://blog.chinaunix.net/uid-27122534-id-3260925.html