V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangyuecn
V2EX  ›  程序员

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

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

    还是直接上图吧:

    在线测试地址: 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  
       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   ·   我们的愿景   ·   实用小工具   ·   6019 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 02:12 · PVG 10:12 · LAX 19:12 · JFK 22:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.