DTMF(Dual Tone Multi Frequency) 双音多频,由高频群和低频群组成,高低频群各包含4个频率;两个频率波形合成按键信号(0-9 * # A B C D)。

SIP中检测DTMF信号的方法:SIPINFO、RFC2833、INBAND;至于这些是什么我这个外行纯属热闹;拿两个手机互打电话,中途按下的按键嘟嘟的声音就是直接通过话音来传输DTMF信号,属于INBAND(带内检测)吧。

拿Adobe Audition打开手机上的电话录音文件,可以直观的肉眼看到整齐的DTMF信号,分析一下就能很快GET到此信号的解码、编码原理。

在线测试地址:在线测试

【图1】简单粗暴合成的PCM信号杂波较多,但和华为手机打出来的录音信号差不多(他们杂波少点)

一、前言

1.1 HTML5实现DTMF的一些动机

我的GitHub开源库 Recorder 功能日渐丰富,最近又有项目可能会用到DTMF的解码功能,所以就用js实现了一下,本着易于移植的目的,相关代码都是简单的纯js代码,移植到别的语言非常方便。

涉及到三个源码,个个小巧:

  1. FFT:lib.fft.js 111行(代码+空行+注释)
  2. DTMF解码:dtmf.decode.js 192行(代码+空行+注释)
  3. DTMF编码:dtmf.encode.js 191行(代码+空行+注释)

自评:高性能

版权声明:本文为xiangyuecn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiangyuecn/p/13200894.html