耳朵数字的定义

在本文中,我将讨论一个简单的处理程序,该程序“监听”麦克风并确定在音频模式下在电话上拨打的号码。

前言


该大学保留了大约十年前的历史,但是这段时间我一直没有留下怀旧的感情和对科学的渴望。 感觉我没有完成某件事,或者我们跑得太快。 幸运的是,现代平台使您终生感到自己像个学生。

openu平台上的“数字信号处理基础”课程LETI中的3号实验室促使我写这篇文章。

工作原理


如果按电话按钮(或此处 ),您会听到每个字符都有自己的频率,甚至有两个,并且这种组合唯一地编码了一个字符。
我们的任务是从噪声信号中提取两个最强的频率,并根据表检查它们是否编码了某些字符:
1209赫兹1336赫兹1477赫兹1633赫兹
697赫兹1个23
770赫兹456
852赫兹789ç
941赫兹*0d

我用处理 它具有用于麦克风和傅立叶变换的所有原语。

算法如下:

  • 想象信号为频谱, fft.analyze将向我们返回一个float []数组
  • 找到对应于最大幅度的参考数字n 1
  • Zerul他和附近某个区域的所有事物(明智地选择),以免捕获两个接近的频率
  • 我们发现第二个参考数字n 2对应于剩余振幅的最大值
  • 通过n 1和n 2的数字,我们根据公式找到相应的频率:

    fn=fdn/N

    其中f n-采样频率:44100 Hz,N-采样数(2的幂)
  • 我们从表中确定与找到的频率相对应的频率(±35 Hz的一些容差),并找到所需的符号

发生什么事了


您可以从源代码中以独立jar的形式构建和运行程序,也可以使用手机或此页面生成声音。



下一步,我想在Arduino上实现相同的功能。

Source: https://habr.com/ru/post/zh-CN429700/


All Articles