DSP 课程实验报告
电话拨音信号的产生和检测
by:王小为
2015 年 1 月
电话拨音信号的产生和检测
- 1 -
一、实验目的
1. 产生给定要求的拨号音信号。
2. 用离散时间信号处理方法,在不同的信噪比下识别电话号码音。
二、实验原理
1. 拨号音的产生
(1)拨号键盘上 16 个按键,每个按键按下后会同时产生一个高频信号
和一个低频信号,其对应关系如表 2-1:
1209
1336
1477
1633
697
1
2
3
A
770
4
5
6
B
852
7
8
9
C
941
*
0
#
D
表 2-1(频率单位:Hz)
(2)每个拨号事件有持续时间,相邻两次拨号之间也有空闲间隔时间。
(3)整个信号会受高斯白噪声的干扰。
2. 拨号音的识别
(1)对产生的信号以适当频率采样。
(2)通过窗函数统计信号能量,从而从噪声中提取信号。
(3)对提取的信号进行快速傅里叶变换。
(4)在信号频率点处,傅里叶变换值最高。
公式:k = N ∙ Ts ∙ f = 205 ∙ 0.125 ∙ f,八个频率对应 k 值如表 2-2:
高频
低频
号码
电话拨音信号的产生和检测
- 2 -
频率 f(Hz)
精确 k
近似 k
误差
697
17.861
18
0.139
770
19.731
20
0.267
852
21.833
22
0.167
941
24.113
24
0.113
1209
30.981
31
0.019
1336
34.235
34
0.235
1477
37.848
38
0.152
1633
41.846
42
0.154
表 2-2
(5)从而通过表 2-1,表 2-2 识别电话号。
三、实验流程框图
四、实验参数、变量声明
参数名称
物理意义
单位
本实验取值
T_sigmin
拨号持续最短时间
ms
60
T_sigmax
拨号持续最短时间
ms
250
T_spcmin
相邻拨号间隔最短时间
ms
10
T_spcmax
相邻拨号间隔最长时间
ms
255
SNR
信噪比
dB
20、10、5、3、1、0
Ts
采样周期
s
0.125
N
FFT 周期
1
205
Wlength
窗长度
1
100
Lnoise
窗内噪声平均能量上限
1
0.6
Lsignal
窗内信号平均能量下限
1
0.6
Lk
FFT:X[k]下限
1
70
变量名称
物理意义
单位
本实验取值
mode
检测算法模式
无
0 或 1
P
窗内信号总能量
1
介于 0 和 1 之间,根据输入而定
TSignal
拨号持续时间
ms
介于 T_sigmin 和 T_sigmax 之间
TSpace
相邻拨号间隔时间
ms
介于 T_spcmin 和 T_spcmax 之间
Size
离散信号样本个数
个
根据输入而定
x(t)
C/D
x[n]
能量窗
信号 y[n]
FFT
X[k]
检测
号码
Ts
号码
电话拨音信号的产生和检测
- 3 -
五、实验条件即假设:
1. 拨号持续时间 TSignal 在 T_sigmin 和 T_sigmax 之间随机产生。
2.相邻拨号间隔时间 TSpace 在 T_spcmin 和 T_spcmax 之间随机产生。
3. 整个信号中叠加高斯白噪声,信噪比可调。
4. 不考虑工频串扰。
六、matlab 实现方法
1. 高斯白噪声的产生:y = awgn(y,SNR);
2. 滑窗统计能量,提取信号。窗其实点滑到 i 位置时,窗内信号平方和的平
均值记为 P(i)。为了使 P(i)不处于上升沿和下降沿当中,加入了判断使 p(i) > p(i + 1)
且 P(i) > p(i - 1), 代码如下:
P = zeros(1, (Size - Wlength + 1));
for i = 1: 1: (Size - Wlength + 1)
for j = i: 1: (i + Wlength - 1)
P(i) = P(i) + y(j)^2;
end
P(i) = P(i)/100; % The average energy of the signal in the window
end
3. 戈泽尔算法:对于八个频率对应的 k 值分别用戈泽尔算法计算其傅里叶变
换值,代码如下:
for j = 1: 1: 8
X(j) = abs(goertzel(yk, k(j) + 1)); % FFT by Goertzel
end
4. 检测的两个模式:(自定义)
(1)mode=0:戈泽尔算法 X[k]大于固定阈值 Lk 时,求得 k 值,进而根