撸了一个 DTMF(电话拨号按键信号)解码、编码,纯 js 代码简单易于移植 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xiangyuecn
V2EX    程序员

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

 2  
  •   xiangyuecn
    xiangyuecn 2020-06-28 03:36:04 +08:00 3314 次点击
    这是一个创建于 1929 天前的主题,其中的信息可能已经有所发展或是发生改变。

    还是直接上图吧:

    在线测试地址: 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 行(代码+空行+注释)

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

    14 条回复    2020-06-28 11:20:23 +08:00
    itskingname
        1
    itskingname  
       2020-06-28 07:25:47 +08:00 via iPhone
    亲测,你直接对着电话放对应的按键声音,不按键,也能打通电话。
    nutting
        2
    nutting  
       2020-06-28 08:25:30 +08:00
    想起来了,还有什么脉冲拨号。但是这些现在在手机上没法搞了吧,手机没有拿起听筒这一说?
    murmur
        3
    murmur  
       2020-06-28 08:32:22 +08:00
    现在似乎都是数字交换了,还有模拟电话机么
    7gugu
        4
    7gugu  
       2020-06-28 08:50:07 +08:00 via Android
    帅啊
    xiangyuecn
        5
    xiangyuecn  
    OP
       2020-06-28 09:12:11 +08:00
    @itskingname #1 4G 信号下拨通 10086,用电脑按个 123 什么的生成信号音,对准手机麦克风,10086 对信号识别没有问题,正确进入菜单
    xiangyuecn
        6
    xiangyuecn  
    OP
       2020-06-28 09:12:39 +08:00
    @murmur #3 DTMF 是数字信号吧
    systemcall
        7
    systemcall  
       2020-06-28 09:14:58 +08:00
    现在的手机都是 VoLTE 了,座机现在很少用了,应该不能这样拨号了吧
    xiangyuecn
        8
    xiangyuecn  
    OP
       2020-06-28 09:17:31 +08:00
    @systemcall 拨号不知道,不过选个 1 2 3 什么的菜单 或 输个密码,还是可以的,主要用在软电话中识别对方发来的按键信号
    chinvo
        9
    chinvo  
       2020-06-28 09:18:56 +08:00 via iPhone
    @xiangyuecn #6 drmf 是模拟信号,是靠波形变化传输数据的
    xiangyuecn
        10
    xiangyuecn  
    OP
       2020-06-28 09:25:21 +08:00
    @chinvo #9 好像是这么回事,具体的我就不懂了
    w292614191
        11
    w292614191  
       2020-06-28 10:11:48 +08:00
    我要背景图,老哥。
    locoz
        12
    locoz  
       2020-06-28 10:36:19 +08:00
    realpg
        13
    realpg  
    PRO
       2020-06-28 11:16:55 +08:00
    @systemcall #7
    国内运营商的 DTMF 全部是 inband 方式
    baobao1270
        14
    baobao1270  
       2020-06-28 11:20:23 +08:00
    我看到油管上有个人,18 年测试用 DTMF 音拨打中国电信客服,是用电脑播放、手机麦克风收听的,是可以的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1289 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 16:46 PVG 00:46 LAX 09:46 JFK 12:46
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86