DTMF信号的分离——关于一篇博客文章的复现(一)
2018-03-19 21:02
363 查看
为什么要用“复现”这个词呢?因为逼格高。。。。。
之前看到过一篇Blog,奇妙的传送门本文的部分图片也取自原博主。
文章大概是一个老学长写的,记录了自己给几个本科生布置的一项课程设计。最近我正好也在做语音信号处理,严格来说并不是语音信号,只不过是声音信号,但殊途同归,方法都是一样的,因此照葫芦画瓢,把这位学长的想法又自己写了一遍,收获还是不小的,在此和大家分享一下!
一、任务简述
我们在用古老的座机(主要现在手机已经没有这个声音了)的时候,摁下数字键盘上的“1”,“2”等等数字或者字幕,总会出现“嘀嘀嘀”的声音,而且不同的数字和字母对应这不同的声音,主要体现在频率上,而这种声音信号,就是我们所说的DTMF信号。DTMF信号又叫做双音多频信号,对于电话机来说,它每个按键所对应的声音都是由两个不同频率的声音叠加而成,而声音的频率决定了音调,因此我们才会在按键的时候,听到不同音调的声音。具体的对应关系参考下图:
所以我们的任务就是:
根据一段拨打电话时按键的录音来得到这段电话号码
是不是很有柯南的感觉?哈哈哈哈哈哈
二、算法
我本来想画个流程图的,但CSDN的这个新的编辑界面我实在是不会(其实旧的也不会,不过新的更让我不爽)。
那我就简要的说一说思路吧。既然每个音都是两个单频,那么,一个简单的频谱分析不就好了吗?诚然,我们可以把每个音提取出来,然后计算每个音的频率,之后再对照上面的图,找到这个音所对应的按键。这是一个很简单的办法,但是,逼格不够高,逼格如何才能更高呢?答案是——语谱图。
语谱图的逼格是非常高的,因为它不同于我们的频谱,它在显示频谱的同时,还能显示时间,换言之,语谱图含有的信息是:在什么时候含有什么频率。这样,我们就不用分离每个音,然后做FFT/DTFT了。
得到语谱图后,我们还要进行一个分类,在真实的情况下,录音应该是有杂波的,也就是说,信号的频率一定是复杂的,不仅仅是双频。在这种情况下,还需要做的一个工作是量化。简言之,是把八个基本频率中各自附近的频率都算作同一频率。
什么意思呢?比如八个基本频率是[f1,f2,f3,f4,f5,f6,f7,f8],如果信号在f1到f2之间的频率上有能量,怎么办?量化的目的就在于此,将两个相邻频率的重点作为分界,本着就近原则,属于同一频率的信号,将它们的模值全部相加。这样做的好处是什么呢?语谱图会更加明了!它会只反映这八个频率点的信号能量,这对于我们提取信号并且按照特征值来分类是非常有帮助的。
既然要做分类,那么一定会有分类标准,这个标准是什么呢?就是原始的信号—频率对照关系,根据这个表,我们才能识别出究竟是哪个信号,这个过程需要建立特征向量。这个我们之后细说。
那么整个思路就很明显了:
分帧——绘制全频率语谱图——频率量化——绘制区间频率语谱图——特征提取——特征匹配——分类——得到号码。
前期的准备工作大概是这样的,下一步,我们就要开始这个浩大的工程了。请移步此处
之前看到过一篇Blog,奇妙的传送门本文的部分图片也取自原博主。
文章大概是一个老学长写的,记录了自己给几个本科生布置的一项课程设计。最近我正好也在做语音信号处理,严格来说并不是语音信号,只不过是声音信号,但殊途同归,方法都是一样的,因此照葫芦画瓢,把这位学长的想法又自己写了一遍,收获还是不小的,在此和大家分享一下!
一、任务简述
我们在用古老的座机(主要现在手机已经没有这个声音了)的时候,摁下数字键盘上的“1”,“2”等等数字或者字幕,总会出现“嘀嘀嘀”的声音,而且不同的数字和字母对应这不同的声音,主要体现在频率上,而这种声音信号,就是我们所说的DTMF信号。DTMF信号又叫做双音多频信号,对于电话机来说,它每个按键所对应的声音都是由两个不同频率的声音叠加而成,而声音的频率决定了音调,因此我们才会在按键的时候,听到不同音调的声音。具体的对应关系参考下图:
所以我们的任务就是:
根据一段拨打电话时按键的录音来得到这段电话号码
是不是很有柯南的感觉?哈哈哈哈哈哈
二、算法
我本来想画个流程图的,但CSDN的这个新的编辑界面我实在是不会(其实旧的也不会,不过新的更让我不爽)。
那我就简要的说一说思路吧。既然每个音都是两个单频,那么,一个简单的频谱分析不就好了吗?诚然,我们可以把每个音提取出来,然后计算每个音的频率,之后再对照上面的图,找到这个音所对应的按键。这是一个很简单的办法,但是,逼格不够高,逼格如何才能更高呢?答案是——语谱图。
语谱图的逼格是非常高的,因为它不同于我们的频谱,它在显示频谱的同时,还能显示时间,换言之,语谱图含有的信息是:在什么时候含有什么频率。这样,我们就不用分离每个音,然后做FFT/DTFT了。
得到语谱图后,我们还要进行一个分类,在真实的情况下,录音应该是有杂波的,也就是说,信号的频率一定是复杂的,不仅仅是双频。在这种情况下,还需要做的一个工作是量化。简言之,是把八个基本频率中各自附近的频率都算作同一频率。
什么意思呢?比如八个基本频率是[f1,f2,f3,f4,f5,f6,f7,f8],如果信号在f1到f2之间的频率上有能量,怎么办?量化的目的就在于此,将两个相邻频率的重点作为分界,本着就近原则,属于同一频率的信号,将它们的模值全部相加。这样做的好处是什么呢?语谱图会更加明了!它会只反映这八个频率点的信号能量,这对于我们提取信号并且按照特征值来分类是非常有帮助的。
既然要做分类,那么一定会有分类标准,这个标准是什么呢?就是原始的信号—频率对照关系,根据这个表,我们才能识别出究竟是哪个信号,这个过程需要建立特征向量。这个我们之后细说。
那么整个思路就很明显了:
分帧——绘制全频率语谱图——频率量化——绘制区间频率语谱图——特征提取——特征匹配——分类——得到号码。
前期的准备工作大概是这样的,下一步,我们就要开始这个浩大的工程了。请移步此处
相关文章推荐
- 我看过的关于职业规划最好最全面的一篇文章(因为在另外一个人博客中他转载的字体太大了颜色太鲜艳不适宜阅读,所以就自己转载了)
- 关于 pace 有意思的一篇文章
- 转一篇关于linux的文章!
- 学校BBS上看到一篇关于追女孩子的文章,相信谁看了都会有种恍然大悟的感觉。
- 介绍一篇关于session的好文章,写的很详细(jsp-servlet 技术)
- 转:介绍一篇关于session的好文章 写的很详细
- 一篇关于串口的经典文章
- 翻译一篇外文 关于优化linux系统启动时间的文章
- 很好的一篇关于xcode的学习文章
- 一篇关于USB口管理的文章
- 看到一篇文章刷CSDN博客访问量,目前没有环境实现,抽空可以去跑跑看或者改为其他方式实现
- 关于extern "C"的一篇很好的文章
- 介绍一篇关于session的好文章,写的很详细
- 关于php的一篇文章《php 应该使用缓存和连接池》
- 口水战:2年多以前的一篇关于投连险的文章(精彩)
- 转一篇关于文件描述符的文章
- 签了工作之后才发现,自己太草率了(我看过的关于职业规划最好最全面的一篇文章)
- 早年的一篇关于80286保护模式的文章
- 关于介绍JS OOP的一篇文章 收藏了
- VisualFC博客关于WTL开发的系列文章索引