一、前言
1.1 HTML5实现DTMF的一些动机
我的GitHub开源库 Recorder 功能日渐丰富,最近又有项目可能会用到DTMF的解码功能,所以就用js实现了一下,本着易于移植的目的,相关代码都是简单的纯js代码,移植到别的语言非常方便。
涉及到三个源码,个个小巧:
- FFT:lib.fft.js 111行(代码+空行+注释)
- DTMF解码:dtmf.decode.js 192行(代码+空行+注释)
- DTMF编码:dtmf.encode.js 191行(代码+空行+注释)
自评:高性能、准确度高、误识别率低;欢迎到 在线测试,下载别的一个软件 dtmf2num(命令行) 来对比伤害一下。
1.2 一些有效场景
(1) 10086
查话费请按1,嘟(你按了一个1),您的话费余额为9亿9千万……不能否认,这些能力的实现是建立在DTMF信号的编解码之上。
(2) 软电话
透过某些渠道,比如在你服务器上的程序拥有了自动拨打电话的能力,你希望通过用户按下某些按键后实现一些功能,比如输入密码,这样你的服务器端程序就需要带上DTMF解码功能。
(3) 小玩具
写一些小玩具把玩。嘿哈