实验三电话拨号音合成与识别

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

实验课程:数字信号处理实验开课时间:2020—2021 学年秋季学期实验名称:电话拨号音合成与识别实验时间: 2020年11月15日星期三学院:物理与电子信息学院年级:大三班级:182 学号:姓名:

f i =N i ×f sam

N

(3.3.2)

由于DTMF 信号的解码要求快速、简单、准确, Goertzel 算法比FFT 算法更为有效适用。因为FFT 涉及较多的复数乘法和加法 Goertzel 算法可以将复数运算转化为实数运算,从而减少了计算量,提高了计算速度 Goertzel 算法的基本思想是对DFT 公式进行转换,使其成为一个二阶传输函数

H m (z )=1−W N m z

−1

1−2cos (2πm N )z −1+z

−2

(3.3.3)

由上式可得系统的模拟框图如图3.3.1所示。从而得出其差分方程

Q m [k ]=2cos (2πm

N

)Q m [k −1]−Q m [k −2]+x[k]

(3.3.4)

X [m ]=y m [N ]=Q m [N ]−W N m

Q m [N −1]

(3.3.5)

初始条件Q m [−1]=Q m [−2]=0;

W N

m

=e

−j

2πN

由于对DTMF 信号解码只需其频谱的幅值信息,因而可舍去相位信息,输频谱的幅度平方值,即

|X[m]|2=|y m [N]|2=Q m 2+Q m 2[N −1]−2cos (2πm N

)Q m [N]Q m [N −1] (3.3.6)

因此, Goertzel 算法中完全避免了复数运算。在识别DTMF 信号时,要求确定抽样点数N,国际上通用N=205点或N=106点。表3.3.2列出了N=205点时,各个频率

一、实验预习

1.利用DTMF信号产生的原理合成数字1,其合成公式是x1(t)=sin(2×697t)+sin(2

×1209t)分析其时域波形和频谱。

解:

clc;clear;close all

Fm1=697;Fm2=1209;

k=1:410;

fs=8192;

t=k/fs;

x=sin(2*pi*Fm1*t)+sin(2*pi*Fm2*t);

X=fft(x,256);

subplot(2,1,1);plot(x);

title('数字“1”的时域波形')

subplot(2,1,2);

plot([-127:128],fftshift(abs(X)));

title('数字“1”的频谱')

2.根据表

3.3.1生成各个按键信号;利用soud函数试听这些DTMF信号。

解:

N=205;

n=0:N-1;

Fs=8000;

t=n/Fs;

%根据表3.3.1生成的各个按键的信号

figure(1)

x1=sin(2*pi*679*t)+sin(2*pi*1209*t);

sound(x1,Fs);

2.分析0~9十个数字拨号信息的频谱,观察频谱图中的峰值点的幅值以及它们出现

的位置。根据谱峰的幅值和位置识别各DTMF信号所对应的数字。

解:

n=0:204;fs=8000;

t=n/fs;

x0=sin(2*pi*941*t)+sin(2*pi*1336*t);

x1=sin(2*pi*697*t)+sin(2*pi*1209*t);

二、实验内容

问题讨论1.若对DTMF信号按照8000Hz进行抽样,至少要多少抽样点才能保证区分各个键?

答:根据采样定理,f

>=2f,所以要采样后的信息不失真,需要6800k。在实验中一般采用2.5倍进行采样,所以可以采用8k就可以了。

所以至少要205点。根据Ni的点数可以区分fi的数值﹔所以fsam/N应为定值8192/205=39.96,当抽样频率为8000Hz时,抽样点数N应该为8000/39.96约等于200 。

2.若采用N=106点识别DTMF信号,结果会怎样?

答:拨号音变得更加短促。基频和对应的最近的整数m值会发生变化。点数减少必然使goertzel总运算量减小,即提高了运算速度,但由于抽样的点数变少识别的精度也会相应的下降。

在识别DTMF信号时,要求确定抽样点数N,国际上通用N=205点或N=106点。

当采用N=106点识别DTMF信号时,我们会发现发现不能很好的观察图像,通过查阅资料以及结合所学知识,得到在取样频率为8000hz的时候,其最小抽样点数为109,因此我们最后选择205,实践证明,选择205为抽样点数,实现的非常完美。

3.如果是一串合成的等间隔拨号音信号如何识别?如果是一串合成的不等间隔拨号音信号,又如何识别?

答:根据合成信号中高频分量和低频分量组合确定拨号音信号,若合成的是不等间隔的拨号音信号,则需要通过查找表对比的方法一一确定拨号信号对应的信息。

4.如果拨号音中混入了语音干扰,除了考虑基频幅度检测,还需考虑二次谐频幅度检测,如何识别?

答:若拨号音中混入了语音干扰,应该先抗混滤波,滤除高次谐波分量,提取出基频信号,再进行识别。

5.试推导 Goertzel算法。

答: Goertzel基本算法在每次采样后立即进行处理,在每个第N次采样进行一次音调检测。在采用FFT算法时,我们要对成块的采样进行处理,但这并不意味着必须按块来处理数据。数字处理的时间很短,因此如果每次采样都存在一次中断,那么这些数字处理完全可以在中断服务程序(ISR)内完成。或者,如果系统中存在采样缓存,那么可以持续采样,然后进行批处理。

按照下面步骤试着推导

1. 决定采样率;

2. 选择块大小,即N;

3. 预先进行一次余弦和正弦计算;

4. 预先计算一个系数。

选择合适的采样率

根据奈奎斯特采样定理:采样率至少不低于最高信号频率的两倍。

块大小的设置

Goertzel算法中的块大小N与相应的FFT中的点数类似,它控制了频率分

辨率的大小。

预计算常数

相关文档
最新文档