我使用星号与模拟电话设备进行交互,这些设备可以用DTMF交互进行编程和测试。
有些人说得很快。太快了,你可以令人信服地争辩;我马上就到。然而,星号是完全能够听到音调的,如果我足够幸运地获得了带内DTMF音频的纯流,我甚至可以非常成功地识别出非常快的音调。
当星号(或另一个电话系统)决定需要识别和重新生成DTMF时,问题就出现了。我意识到,在翻译例如从带外DTMF到或从带外DTMF时,这是很重要的,但我不知道为什么这样做似乎是默认的操作,尤其是为什么它经常用长时间(例如100 is;谢天谢地,以星号表示,这可以改变,尽管它可能涉及重新编译),这几乎保证了数字的丢失。其他人报告了一些问题,即带内转换到带外转换导致了重复数字,尽管转换是不必要的。
所以我的问题是:为什么这是电话系统的作案手法?除非有明确的翻译要求,否则为什么不让电话中的DTMF单独使用呢?
发布于 2013-02-06 17:28:45
把你最喜欢的歌曲录一张高保真的CD。
用你能找到的最便宜的麦克风录下来。
用最适合口语的8位音频编解码器对录音进行编码。
通过廉价的扬声器播放录音(并摆动电线)。
如果你一边听CD,一边听链子,你就会听到电话里的东西有多糟糕。现在想象一下,不是一首歌,而是你录制的DTMF音调,并试图播放它们,并让计算机识别它们。
这就是为什么大多数VoIP系统使用带外信道(如RFC 2833)重新编码DTMF音调的原因--压缩、网络抖动、延迟和潜在的数据包丢失使音频编码DTMF容易失败。
通过将DTMF音调作为带外数据发送,它们可以重新插入到与PSTN最近的端点的音频流中,从而将音调被破坏的风险降到最低。
为什么是100毫秒?因为一些电话线或远程终端有较短的音调持续时间的麻烦(如果你曾经在一条嘈杂的陆地线路上打电话给触音系统,你可能会按住一个按钮几秒钟,以使系统识别该音调)。
(100毫秒可能太长了-20-50毫秒就足够了)
您不必使用带外信令--潮湿的VoIP系统将处理带内信令(您通常需要在您的电话和服务器上设置一个参数才能做到这一点,而且您必须使用高质量的编解码器(或者如果您想要获得可靠的结果,则完全禁用压缩)。
大多数部署它们的人选择使用RFC 2833 (并重新编码接收到的带内DTMF ),因为它实际上更可靠。
https://serverfault.com/questions/475609
复制相似问题