撸了一个 DTMF(电话拨号按键信号)解码、编码,纯 js 代码简单易于移植

2020-06-28 03:36:04 +08:00
 xiangyuecn

还是直接上图吧:

在线测试地址: https://xiangyuecn.github.io/Recorder/assets/%E5%B7%A5%E5%85%B7-%E4%BB%A3%E7%A0%81%E8%BF%90%E8%A1%8C%E5%92%8C%E9%9D%99%E6%80%81%E5%88%86%E5%8F%91Runtime.html?jsname=teach.dtmf.decode_and_encode

详细文章: https://www.cnblogs.com/xiangyuecn/p/13200894.html (半年没发文,博客园要审核了?)


相关代码都是简单的纯 js 代码,移植到别的语言非常方便,涉及到三个源码,个个小巧:

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

自评:高性能💪、准确度高💪、误识别率低💪 非专业😶 欢迎把玩😁

2808 次点击
所在节点    程序员
14 条回复
itskingname
2020-06-28 07:25:47 +08:00
亲测,你直接对着电话放对应的按键声音,不按键,也能打通电话。
nutting
2020-06-28 08:25:30 +08:00
想起来了,还有什么脉冲拨号。但是这些现在在手机上没法搞了吧,手机没有拿起听筒这一说?
murmur
2020-06-28 08:32:22 +08:00
现在似乎都是数字交换了,还有模拟电话机么
7gugu
2020-06-28 08:50:07 +08:00
帅啊👍👍
xiangyuecn
2020-06-28 09:12:11 +08:00
@itskingname #1 4G 信号下拨通 10086,用电脑按个 123 什么的生成信号音,对准手机麦克风,10086 对信号识别没有问题,正确进入菜单
xiangyuecn
2020-06-28 09:12:39 +08:00
@murmur #3 DTMF 是数字信号吧
systemcall
2020-06-28 09:14:58 +08:00
现在的手机都是 VoLTE 了,座机现在很少用了,应该不能这样拨号了吧
xiangyuecn
2020-06-28 09:17:31 +08:00
@systemcall 拨号不知道,不过选个 1 2 3 什么的菜单 或 输个密码,还是可以的,主要用在软电话中识别对方发来的按键信号
chinvo
2020-06-28 09:18:56 +08:00
@xiangyuecn #6 drmf 是模拟信号,是靠波形变化传输数据的
xiangyuecn
2020-06-28 09:25:21 +08:00
@chinvo #9 好像是这么回事,具体的我就不懂了😌
w292614191
2020-06-28 10:11:48 +08:00
我要背景图,老哥。
locoz
2020-06-28 10:36:19 +08:00
realpg
2020-06-28 11:16:55 +08:00
@systemcall #7
国内运营商的 DTMF 全部是 inband 方式
baobao1270
2020-06-28 11:20:23 +08:00
我看到油管上有个人,18 年测试用 DTMF 音拨打中国电信客服,是用电脑播放、手机麦克风收听的,是可以的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/685157

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX