当前位置:   article > 正文

DTMF信号检测分析(Matlab)_电话按键dtmf信号生成滤波频谱分析设计

电话按键dtmf信号生成滤波频谱分析设计

基于Matlab平台的DTMF信号检测

1.将录制好的一段按键音读入到Matlab平台;

2.设计带通滤波器,去噪处理(可选);

3.将给个按键音对应的信号一次分割;

4.计算分割后信号的相应的频点值,幅度最大的两个点即为该信号的高低频;

5.显示音频对应的按键数字;

6. 按键的录制与播放(可选)。

1. 双音多频信号DTMF基本原理

双音多频(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

2. DTMF信号时域频域分析原理

傅里叶变换FT基本原理

……

(二)基于Matlab平台的DTMF信号检测

1.将录制好的一段按键音读入到Matlab平台;

[x,fs,bits]=wavread('1.wav');

fs采样率(8149,一般8k);bits位数(32位)

 

图1 按键音时域波形

2. 分隔各个按键音

plot(x(1:1000))只绘制文件的1到1000点,即对应第一个按键音,波形如图2:

 

图2 第一个按键音波形

3. 计算信号的相应的频点值,幅度最大的两个点即为该信号的高低频;(频谱泄漏)

 

 

(1)关键是分析出对应频谱中的量频率分量大小

需要将点数转换成频率: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);

  1. [x,fs]=audioread('E:/MATLAB/R2017a/bin/1.wav');
  2. %第1个数字
  3. %subplot(5,1,1);
  4. %plot(x(1:8000));
  5. y=x(1:800);
  6. Y=fft(y);
  7. subplot(5,2,1);
  8. plot(abs(Y));
  9. soundsc(y,fs);
  10. w=(0:length(y)-1)'*fs/length(y);
  11. plot(w,abs(Y));
  12. %第2个数字
  13. y=x(1600:2400);
  14. Y=fft(y);
  15. subplot(5,2,2);
  16. plot(abs(Y));
  17. soundsc(y,fs);
  18. w=(0:length(y)-1)'*fs/length(y);
  19. plot(w,abs(Y));
  20. %第3个数字
  21. y=x(3200:4200);
  22. Y=fft(y);
  23. subplot(5,2,3);
  24. plot(abs(Y));
  25. soundsc(y,fs);
  26. w=(0:length(y)-1)'*fs/length(y);
  27. plot(w,abs(Y));
  28. %第4个数字
  29. y=x(4800:5600);
  30. Y=fft(y);
  31. subplot(5,2,4);
  32. plot(abs(Y));
  33. soundsc(y,fs);
  34. w=(0:length(y)-1)'*fs/length(y);
  35. plot(w,abs(Y));
  36. %第5个数字
  37. y=x(6500:7400);
  38. Y=fft(y);
  39. subplot(5,2,5);
  40. plot(abs(Y));
  41. soundsc(y,fs);
  42. w=(0:length(y)-1)'*fs/length(y);
  43. plot(w,abs(Y));
  44. %第6个数字
  45. y=x(8134:8959);
  46. Y=fft(y);
  47. subplot(5,2,6);
  48. plot(abs(Y));
  49. soundsc(y,fs);
  50. w=(0:length(y)-1)'*fs/length(y);
  51. plot(w,abs(Y));
  52. %第7个数字
  53. y=x(9768:10610);
  54. Y=fft(y);
  55. subplot(5,2,7);
  56. plot(abs(Y));
  57. soundsc(y,fs);
  58. w=(0:length(y)-1)'*fs/length(y);
  59. plot(w,abs(Y));
  60. %第8个数字
  61. y=x(11380:12210);
  62. Y=fft(y);
  63. subplot(5,2,8);
  64. plot(abs(Y));
  65. soundsc(y,fs);
  66. w=(0:length(y)-1)'*fs/length(y);
  67. plot(w,abs(Y));
  68. %第9个数字
  69. y=x(13020:13840);
  70. Y=fft(y);
  71. subplot(5,2,9);
  72. plot(abs(Y));
  73. soundsc(y,fs);
  74. w=(0:length(y)-1)'*fs/length(y);
  75. plot(w,abs(Y));
  76. %第10个数字
  77. y=x(14650:15480);
  78. Y=fft(y);
  79. subplot(5,2,10);
  80. plot(abs(Y));
  81. soundsc(y,fs);
  82. w=(0:length(y)-1)'*fs/length(y);
  83. plot(w,abs(Y));

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/315164
推荐阅读
相关标签
  

闽ICP备14008679号