赞
踩
基于Matlab平台的DTMF信号检测
1.将录制好的一段按键音读入到Matlab平台;
2.设计带通滤波器,去噪处理(可选);
3.将给个按键音对应的信号一次分割;
4.计算分割后信号的相应的频点值,幅度最大的两个点即为该信号的高低频;
5.显示音频对应的按键数字;
6. 按键的录制与播放(可选)。
双音多频(dual tone multi-frequency; DTMF)信号是广泛应用在世界范围内按键式电话机上的一种电信标准。DTMF由著名的贝尔实验室发明,主要用于解决远程电话的自动呼叫,代替原本由人工接续的脉冲拨号方式,利用一组低频群和一组高频群进行组合的编码方式,高低频群各由4个频率组成,是使用两个音频段频率的固定组合的多频信令。应用学科:通信科技(一级学科);交换选路(二级学科),近年来DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和来电显示等方面。
电话拨号有两种,脉冲和音频,所谓音频也称双音多频(DTMF)信号的拨号方式,双音多频既是电话拨号时每按一个键,有两个音频频率叠加成一个双音频信号,十二个按键由七个音频频率区分。双音多频信号(DTMF),电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。双音多频信号是贝尔实验室发明的,其目的是为了自动完成长途呼叫。双音多频的拨号键盘是4×4的矩阵,每一行代表一个低频,每一列代表一个高频。每按一个键就发送一个高频和低频的正弦信号组合,比如'1'相当于697和1209赫兹(Hz)。交换机可以解码这些频率组合并确定所对应的按键。
表1 双音多频键盘
1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz | |
697 Hz | 1 | 2 | 3 | A |
770 Hz | 4 | 5 | 6 | B |
852 Hz | 7 | 8 | 9 | C |
941 Hz | * | 0 | # | D |
傅里叶变换FT基本原理
……
1.将录制好的一段按键音读入到Matlab平台;
[x,fs,bits]=wavread('1.wav');
fs采样率(8149,一般8k);bits位数(32位)
图1 按键音时域波形
2. 分隔各个按键音
plot(x(1:1000))只绘制文件的1到1000点,即对应第一个按键音,波形如图2:
图2 第一个按键音波形
3. 计算信号的相应的频点值,幅度最大的两个点即为该信号的高低频;(频谱泄漏)
需要将点数转换成频率:w=(0:length(F)-1)'*fs/length(F)
(2)在分析频谱时,只分析一半即可(参考FT原理)
(3)两频率分别对应第69点和132点,则对应的模拟频率(实际频率)为:
(4)根据频率查表,得到对应的数字应该为:
参考程序
[x,fs,bits]=wavread('1.wav');
subplot(1,2,1);
plot(x(1:800));
y=x(1:800);
Y=fft(y);
subplot(1,2,2);
plot(abs(Y));
soundsc(y,fs);
- [x,fs]=audioread('E:/MATLAB/R2017a/bin/1.wav');
- %第1个数字
- %subplot(5,1,1);
- %plot(x(1:8000));
- y=x(1:800);
- Y=fft(y);
- subplot(5,2,1);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第2个数字
- y=x(1600:2400);
- Y=fft(y);
- subplot(5,2,2);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第3个数字
- y=x(3200:4200);
- Y=fft(y);
- subplot(5,2,3);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第4个数字
- y=x(4800:5600);
- Y=fft(y);
- subplot(5,2,4);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第5个数字
- y=x(6500:7400);
- Y=fft(y);
- subplot(5,2,5);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第6个数字
- y=x(8134:8959);
- Y=fft(y);
- subplot(5,2,6);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第7个数字
- y=x(9768:10610);
- Y=fft(y);
- subplot(5,2,7);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第8个数字
- y=x(11380:12210);
- Y=fft(y);
- subplot(5,2,8);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第9个数字
- y=x(13020:13840);
- Y=fft(y);
- subplot(5,2,9);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));
- %第10个数字
- y=x(14650:15480);
- Y=fft(y);
- subplot(5,2,10);
- plot(abs(Y));
- soundsc(y,fs);
- w=(0:length(y)-1)'*fs/length(y);
- plot(w,abs(Y));

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。