技术专区为您提供行业知识、功能解释、设置常见问题
问题描述:
国威IP电话机GW61V,拨打020-85261379,听到语音提示(国威交换机销售请拨1,国威电话交换机售后请拨2...),这是GW61V视频话机按1,无法进入下级菜单。
故障分析:
GW61话机选择的数字码是否有进行发送?
DTMF发送方式是否正确?
电信光猫传输和解码DTMF信令方式是否兼容?
等等。
解决方法
DTMF类型RFC2833改成Inband(in-band)

---------------------------------------------
什么是DTMF?双音多频 (DTMF)介绍
双音多频 (DTMF) 是一种电信信令系统,在电话设备与其他通信设备和交换中心之间使用电话线上的语音频带。DTMF 是一种用于拨打电话号码或向交换系统发出命令的方法。
DTMF 叫多音双拼,也叫二次拨号,voip 承载dtmf有三种方法,inband,rfc 2833(***rfc为4733.ims里面引用)和 sip info 方法。
inband方式是把按键产生的buffer放到语音rtp流里面一起传输而不是类似rfc 2833方式 定义特殊的rtp事件,而每个按键(1,2,3,4,5.。。。)的数据bufer产生可以通过算法生成,也可以直接录制对应的声音到文件。然后打包成rtp各式在语音通道上传输给监听端,监听端一般会用dsp侦测这种信号,通过频谱分析把对应的数字解析出来。
每个 DTMF 数字由两个频率表示,一高一低。选择的频率应使人耳和电话设备能够轻松区分。数字 0 到 9 的频率如下表所示:

我们以数字6为例,相关波形如下如下:

下载了相关文件,通过Audacity查看,DTMF6的波形图如下:

放大后波形就比较明了了,和上述合成的基本一致

DTMF工作原理
DTMF 技术的工作原理是让手机生成特定频率的音调,并在按下键盘上的按钮时通过电话线播放这些音调。电话线另一端的设备监听特定的声音并将其解码为命令。
这些命令通常用于拨打电话号码进行呼叫,但也可用于发送电话控制命令或控制远程设备,因为控制音与语音信号在同一通道上播放。它是一个Inband信令系统;这与Outband系统不同,例如信令系统。
DTMF 指定八种不同的音调。他们分为高组和低组。每次按键对应两种音调,因此称为双音调,一种来自高音组,另一种来自低音组。这总共允许 16 个键。
这些键被指定为数字 0 到 9、*(星号或星号)、#(井号、散列或 octothorpe)以及字母 A 到 D。字母键通常不使用,并且在绝大多数消费者电话中被省略。。电信行业为每个按键选择了两种同步音调,以消除人声触发系统的可能性。
DTMF产生背景
在 DTMF 出现之前,电话系统使用脉冲拨号来发送号码。在脉冲拨号中,听筒与中央交换机之间的连接快速断开并重新连接。这是通过旋转拨号器完成的,旋转拨号器会在旋转时中断连接。也称为循环断开。这类似于通过建立和断开电气连接来通过电报发送莫尔斯电码。脉冲拨号有许多缺点,导致了 DTMF 的发展:
• 脉冲拨号是一个缓慢的过程,因为建立和断开连接需要时间。
• 使用旋转电话拨打更大的号码需要更长的时间;这就是为什么大城市中更有声望的区号数字较小,而许多人口较少的郊区的区号数字较大。
• 脉冲拨号限制了手机到总机的***距离,不能用于长途拨号。
• 它还需要从听筒到总机的直接电气连接。
• 对于许多银行或磁继电器和计数器来说,脉冲拨号控制系统的构建和维护也很复杂。
电信行业开发了多频信号 (MF) 作为 DTMF 的先驱。它使用与 DTMF 相同的原理,但仅由长途操作员用来向其他切换台发送信号。MF证明了底层技术的可靠性和易用性,因此DTMF被开发出来供消费者使用。
DTMF 由 Bell System 开发,于 1963 年 11 月 18 日推出供公众使用。它以 Touch-Tone 商标而闻名,并很快被接受为标准并在全球范围内采用。
DTMF ***初是使用模拟电子技术开发的。***初的系统将使用在适当位置带有抽头的调谐线圈来产生正确的音调。现代电话使用单芯片集成电路来产生音调。
纯互联网协议语音 ( VoIP ) 系统本身并不使用 DTMF 进行信令。VoIP 系统使用会话启动协议来发出信号和拨号。为了与传统系统集成并实现广泛的互操作性,大多数 VoIP 系统还包括通过控制干线或拨入系统等的 DTMF 功能。如果使用无损编码器,它们还可以接收入流式DTMF 。
现代手机也不使用 DTMF 拨号,因为它们是纯数字系统。作为拨号过程的一部分,要呼叫的整个电话号码都会被存储并发送到蜂窝塔基站,因此不使用 DTMF 音。连接后,手机可以为传统电话系统生成 DTMF 音调。
-----------------------------------------------------------
DTMF三种模式(SIPINFO,RFC2833,INBAND)
1、DTMF(双音多频)定义:由高频音和低频音的两个正弦波合成表示数字按键(0~9 * # A B C D)。
2、SIP中检测DTMF数据的方法:SIPINFO、RFC2833、INBAND
1)SIPINFO
为带外检测方式,通过SIP信令通道传输DTMF数据。没有统一的实现标准,目前以Cisco SIPINFO为标准,通过SIPINFO包中的signal字段识别DTMF按键。注意当DTMF为“*”时不同的标准实现对应的signal=*或signal=10。SIPINFO的好处就是不影响RTP数据包的传输,但可能会造成不同步。
2)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参数。
3)INBAND
为带内检测方式,而且与普通的RTP语音包混在一起传送。在进行INBAND DTMF检测时***的办法就是提取RTP数据包进行频谱分析,经过频谱分析得到高频和低频的频率,然后查表得到对应的按键,进行频谱分析的算法一般为Goertzel,这种算法的实现也很简单,网上有很多可以下到,但建议采用定点算法,浮点算法效率很低。
在选择压缩比很高码率很低的codec,比如G.723.1和G.729A等,建议不要使用INBAND模式,因为INBAND DTMF数据在进行复杂编解码后会产生失真,造成DTMF检测发生偏差或失败。
另外,还特别需要注意的一点就是很多SIP UA中INBAND都是伴随着RFC2833和SIPINFO同时发生的,这时需要区别对待,***选择RFC2833和SIPINFO
----------------------------------------
DTMF在VOIP中的解决方案
简介 双音多频DTMF(Dual Tone Multi-Frequency)信令,逐渐在全世界范围内使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令。近年来DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和ATM终端等。 由于DTMF在传统通信领域中的广泛使用,所以在VOIP中,DTMF仍是发挥着重要的作用。 一个DTMF信号由两个频率的音频信号叠加构成。这两个音频信号的频率来自两组预分配的频率组:行频组或列频组。每一对这样的音频信号***表示一个数字或符号。产生DTMF信号,就是利用两个不同频率的正弦波叠加以后形成的波形,解码时则采用改进的Goertzel算法,从频域搜索两个正弦波的存在。 下表描述了每个DTMF信号的频率。 1209 Hz 1336 Hz 1477 Hz 1633 Hz ABC DEF 697 Hz 1 2 3 A GHI JKL MNO 770 Hz 4 5 6 B PRS TUV WXY 852 Hz 7 8 9 C oper 941 Hz * 0 # D
由于在IP网中的通信传输是采用包交换(packet switch)而不是传统领域中的线路交换(circuit switch)以及IP网的不稳定的特性,DTMF在VOIP中应用的解决方案和传统有所不同,并且暂时还未统一,有多种解决方案。 下面简单介绍现有的各种方案。 用SIP信令的INFO方法携带DTMF信号。 该方法是用SIP信令的INFO方法来明文定义来代表DTMF信号。该种方法还在研究讨论当中,有专家认为其并不适用,主要缺陷是因为SIP控制信令和媒体传输(RTP)是分开传输,很容易造成DTMF信号和媒体包不同步。 简单举个例子,在 Voice Mail应用中,用户根据提示音输入一个DTMF信号,随后开始留言。Server是在接受到该DTMF信号后开始保存用户的留言。然而由于DTMF信号是通过SIP信令来传输的,而媒体流是通过RTP来传输的,有可能用户留言的RTP包先到,而该DTMF信号的INFO消息延迟,导致Server不保存用户的语音留言直至接受到INFO消息。 在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专门对此有定义。 动态生成DTMF音频信号 当程序需要产生一个DTMF音频数字信号时,当然可以读取已经录制好的文件。 在这里介绍如何利用算法程序动态产生单个DTMF音频数字信号。 前面介绍过DTMF信号的原理是两个不同频率的正弦波叠加。 简单的生成正弦波的公式:sample=sin(n*2*PI*f/samplerate) n:采样序数,由0开始递增 f:正弦波的频率 samplerate:采样频率 sample:序数n时的得出的采样值 如果要生成一个采样频率是8000hz,采样位是8bit的DTMF信号,则公式: sample(n) = 128 + 63*sin(n*2*pi*f1/8000) + 63*sin(n*2*pi*f2/8000) f1和f2分别是该DTMF信号的两个正弦波频率 其中128 = 256/2 63 = 128 /2 - 1 同样地,如果要生成16bit的DTMF信号,则公式: sample(n) = 32768 + 16383*sin(n*2*pi*f1/8000) + 16383*sin(n*2*pi*f2/8000) 计算DTMF信号是一个耗费资源的过程,你可以通过不同途径去优化你的代码,***简单的是预先计算好2*pi*f1和2*pi*f2的值,减少CPU的计算时间。 关于DTMF信号的时间间隔,CCITT对DTMF信号规定的指标是,传送/接收率为每秒10个数字,即每个数字100ms。代表数字的音频信号必须持续至少45ms,但不超过55ms。100ms内其他时间为静音,以便区别连续的两个按键信号。 根据RTP包中的音频信号检测DTMF信号 在输入信号中检测DTMF信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。 整个检测过程分两步:首先采用Goertzel算法在输入信号中提取频谱信息;接着作检测结果的有效性检查。
Goertzel算法 DTMF解码即是在输入信号中搜索出有效的行频和列频。计算数字信号的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。通过FFT可以计算得到信号所有谱线,了解信号整个频域信息,而对于DTMF信号只用关心其8个行频/列频及其二次谐波信息即可(二次谐波的信息用于将DTMF信号与声音信号区别开)。此时Goertzel算法能更加快速的在输入信号中提取频谱信息。
--------------------------
DTMF类型
DTMF(双音多频音)是通过语音频率发送的带内电信信号。DTMF 音通常通过电话线使用,也通常称为按键音。
RFC 2833
RFC 2833(DTMF 数字、电话音和电话信号的 RTP 有效负载)指定了用于承载双音多频 (DTMF) 数字以及其他线路和中继信号的 RTP 有效负载格式。RFC 2833 指定了 DTMF 数字、线路事件和中继事件的数据包格式。
RFC 2833 指定了在 RTP 数据包内携带 DTMF 信令信息的有效负载格式。遵守 RFC 2833 标准具有以下优点:
• 降低低比特率声码器(例如 G.723.1)使接收网关无法理解 DTMF 音调的风险。
• 使得 VoIP 网关无需对传入语音流执行 DTMF 检测。相反,应用程序可以通过等待特殊格式的带内 DTMF 数据包来检测 DTMF 音调。

SIP INFO
SIP INFO 是一种 SIP 消息,用于在 SIP 端点之间传送控制信息。它可用于承载 DTMF 音调,但并非专门为此目的而设计。

Inband DTMF
Inband DTMF 是一种通过与语音信号相同的音频通道发送 DTMF 音调的方法。这是发送 DTMF 音调的***常见方法,但它可能容易受到语音信号的干扰。

Outband DTMF
Outband DTMF 是一种通过与语音信号不同的通道发送 DTMF 音调的方法。这不太容易受到干扰,但需要额外的信令来设置带外信道。
带内管理和带外管理有什么区别?
带内管理是通过 LAN 管理网络的能力,而带外管理是一种解决方案,它为 IT 网络基础设施提供安全的专用备用访问方法,以便在不使用企业 LAN 的情况下管理连接的设备和 IT 资产。
DTMF传输
如果有效负载格式使用有效负载类型号 100,并且实现可以处理 DTMF 音(Event 0 到 15)以及拨号音和振铃音(假设这些被定义为代码为 66 和 70 的Event),其 SDP 消息中包含以下描述:
DTMF发送的格式如下:


在RFC4733中有明确定义Event和Code的关系,如下图所示:
