短时傅里叶变换的原理与应用:电话拨号声分析(5)——大结局
来源:互联网 发布:淘宝功能流程图 编辑:程序博客网 时间:2024/04/27 14:28
张学友演唱会全场就说了一句普通话。“还是要我讲国语啊?” -_-!
估计是在问观众,是要我继续说粤语,还是讲普通话 -_-!!
反正一句都听不懂 =_=
我还从来没听过演唱会。第一次还就是去看这么大牌的。不错不错,效果很好~
这个光棍节,过得挺好的。
==============================================================
女朋友说,一般像我这种写博客的人,都是内心寂寞孤独的人,说是因为在现实
生活中找不到说话的人,所以只好在虚拟世界中寻找安慰。看我挺可怜的。
哎,她这么一说,我觉得似乎有点道理…………………………。唉,好惨!!!!
==============================================================
从广州回来以后,把“听音识号”最后一点小尾巴写完。
上一篇,把特征提取的第二部分讲完了。
Review:DTMF频率特征提取
特征提取完毕以后,剩下的应该就是做匹配了。
上一篇讲到,把DTMF信号的频率特征用一个8维向量表示。
提取出来的特征,就是一些向量,标准的12个按键,也都是8维向量。
这里要做的匹配,具体来说,就是分别看每一个电话按键声录音和哪个按键模式最相似。
因此,还需要建立那12个按键的模式向量。8维向量,那坐标表示就是(n1,n2,...,n8)。
我是这样设计的。因为是双音,所以其实对于每个按键来说,它的8维向量里面,只有2个是1,其他都是0。
比如,“1”,就是(1,0,0,0,1,0,0,0)。
把12个按键的标准模式都建立好以后,就可以把由按键音提出出来的DTMF信号的频率特征去和标准模式之间进行匹配了。
于是,怎么度量相似呢?
很多很多种标准。各种距离度量、内积、夹角……详细的可以参考一些模式识别的资料。这里就不罗嗦了。
然后,匹配出来的结果,就是以前出现过的那张图,也就是我的手机号。
最后,把这一段的Matlab代码贴上来。(完了,我之前都是写Java的,现在只会点Matlab了。还怎么找工作?-_-! 好惨!不行,要学C++……)
%% 构造所有已知的模式m_center(1).feature = [1,0,0,0,1,0,0,0]'; m_center(1).number_str = '1';m_center(2).feature = [1,0,0,0,0,1,0,0]'; m_center(2).number_str = '2';m_center(3).feature = [1,0,0,0,0,0,1,0]'; m_center(3).number_str = '3';m_center(4).feature = [1,0,0,0,0,0,0,1]'; m_center(4).number_str = 'A';m_center(5).feature = [0,1,0,0,1,0,0,0]'; m_center(5).number_str = '4';m_center(6).feature = [0,1,0,0,0,1,0,0]'; m_center(6).number_str = '5';m_center(7).feature = [0,1,0,0,0,0,1,0]'; m_center(7).number_str = '6';m_center(8).feature = [0,1,0,0,0,0,0,1]'; m_center(8).number_str = 'B';m_center(9).feature = [0,0,1,0,1,0,0,0]'; m_center(9).number_str = '7';m_center(10).feature = [0,0,1,0,0,1,0,0]'; m_center(10).number_str = '8';m_center(11).feature = [0,0,1,0,0,1,0,0]'; m_center(11).number_str = '9';m_center(12).feature = [0,0,1,0,0,0,0,1]'; m_center(12).number_str = 'C';m_center(13).feature = [0,0,0,1,1,0,0,0,]'; m_center(13).number_str = '*';m_center(14).feature = [0,0,0,1,0,1,0,0,]'; m_center(14).number_str = '0';m_center(15).feature = [0,0,0,1,0,0,1,0]'; m_center(15).number_str = '#';m_center(16).feature = [0,0,0,1,0,0,0,1]'; m_center(16).number_str = 'D';%% 计算与每一类之间的距离 (最大相关度量) cos(theta)的值越大,theta越小,两个越相似decision = [];for k_number = 1:11 dist_max = 0; dist_center_idx = 0; temp_number = phone_number_frame(:,k_number); for k_center = 1:16 temp_center = m_center(k_center); dist = temp_number.' * temp_center.feature / norm(temp_number) / norm(temp_center.feature); if dist_max < dist dist_max = dist; dist_center_idx = k_center; end end decision = [decision m_center(dist_center_idx).number_str];endfprintf(['我的手机号是:' decision '\n']);
最后,从讲义上摘一点说明过来。
因为我们当特征的取值仅为(0, 1)两个值时,夹角余弦度量具有特别的含义,
即当模式的第i个分量为1时,认为该模式具有第i个特征;
当模式的第i个分量为0时,认为该模式无此特征。
这时,x和z的内积的值就等于x和z这两个向量共同具有的特征数目。
0 0
- 短时傅里叶变换的原理与应用:电话拨号声分析(5)——大结局
- 短时傅里叶变换的原理与应用:电话拨号声分析(1)
- 短时傅里叶变换的原理与应用:电话拨号声分析(2)
- 短时傅里叶变换的原理与应用:电话拨号声分析(3)
- 短时傅里叶变换的原理与应用:电话拨号声分析(4)
- 回拨电话原理分析
- Python模拟post提交表单数据 ——某二手车网站回拨电话的分析与利用
- VOIP 直拨电话与回拨电话原理
- matlab 时频分析(短时傅里叶变换、STFT)
- 第八章 信号时频分析 ——8.1 信号短时傅里叶变换
- MATLAB电话拨号音的合成与识别
- 回拨电话该怎样分析和治理
- Android之——拦截外拨电话
- STFT短时傅里叶变换的实现
- 傅里叶分析—傅里叶变换
- 说说Android桌面(Launcher应用)背后的故事(大结局)——让Widget拥有Application同等的待遇
- 说说Android桌面(Launcher应用)背后的故事(大结局)——让Widget拥有Application同等的待遇
- 说说Android桌面(Launcher应用)背后的故事(大结局)——让Widget拥有Application同等的待遇
- understanding linux usb ehci device driver(3)
- 文件上传案例
- MyISAM、InnoDB 对比
- Java - 趣味题(4) --- 魔术乘法算式
- 行走
- 短时傅里叶变换的原理与应用:电话拨号声分析(5)——大结局
- Linux前端自动化gulp安装与使用
- BroadcastTest
- 挖掘机技术哪家强
- MyApplication+UIUtils
- 深入解析jQuery $.each的使用方法
- USB协通讯议--深入理解
- Spring In Action 学习心得(第一章)
- Integer Break——Difficulty:Medium