1、 电子信息工程学院 DSP 技术及应用 课程 设计报告 题 目: 基于 MATLAB 的 回声信号产生器 专业班级: 通 信工程专业 二一 三 年 六 月 十 六 日 目 录 一、设计目的 1 DSP 技术与应用课程设计报告 二、设计要求 1 三、 设计原理及方案 1 四、 设计 流程 5 五、调试分析 5 六、 GUI 界面 17 七、 设计总结 . . .20 DSP 技术与应用课程设计报告 1 一、 设计目的 综合运用我们掌握的数字信号处理知识,利用 matlab 语言编程进行回声信号产生器的设计再对其进行频谱分析,实现回声的产生,消除和隐藏。 1、首先熟练掌握对声音采集、处理、衰减、延
2、时等过程的理论知识。 2、根据设计思路,学习资料的搜集与整理。 3、通过理论与实际的结合,在理论的基础结合实际情 况完成课程的设计。 关于 MATLAB 软件: MATLAB 语言具备高效、可及推理能力强等特点 ,是目前工程界流行最广泛的科学计算语言。 MATLAB 强大的运算和图形显示功能,可使信号与系统上机实验效率大大提高。特别是它的频谱分析和滤波器分析与设计功能很强,使数字信号处理工作变得十分简单,直观。 关于 GUI 界面:图形用户界面 GUI (Graphics User Interface) 是由各种图形对象 ,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面 ,是人机交流信息
3、的工具和方法。 GUI 设计即可以基本的 MATLAB 程序设计为主 ,也可以鼠标为主利用 GUIDE 工具进行设计。 二、 设计要求 首先,自己录取一个合适的原声信号,并对其进行频谱分析;然后通过数字信号处理对已录制好的原声信号进行延时,衰减,产生出回声信号,通过图形与原声信号进行比较;再把信息转换成二进制信号将其叠加在回声中,通过数字信号处理实现信息的隐藏;最后,通过设计 GUI 界面将结果展示出来。 1、通过计算机中的 y=fft( x)傅里叶变换,对原声信号和回声信号进行频谱分析。 2、通过设计 FIR、 IIR滤波器对原声信号进行衰减、延时产生一次、三次、六次无限次回声。 3、学习并
4、掌握 MATLAB 的使用方法,用 MATLAB 编程和会使用 MATLAB 中的 GUI 界面设计。 三、 设计原理及方案 DSP 技术与应用课程设计报告 2 1、设计原理 ( 1)回声的定义: 当声投射到距离声源有一段距离的大面积上时,声能的一部分被吸收,而另一部分声能要反射回来,如果听者听到由声源直接发来的声和由反射回来的声的时间间隔超过十分之一秒,它就能分辨出两个声音这种反射回来的声叫 “回声 ”。 ( 2)回声信号产生:根据回声的定义,回声信号可以是原始信号通过延时、衰减来生成。 ( 3)回声信号消除: 数字滤波器的作用是滤除信号中某一部分频率分量。 可以将 回声信号消除。 ( 4)
5、回声信号隐藏:回声隐藏利用了人耳的听觉掩蔽效应,是一种有效的音频信息隐藏方法。 ( 5)处理单元原理:假设 x(n)为原始信号, y(n)为经过延时、衰减迭加后产生的“回声信号” ,声音信号和经延迟 R 个周期,衰减系数 ( 1)的单个回声的差分方程有如下表示 : y(n)=x(n)+ x(n-R) 上述差分方程可用系统函数表示为: H(z)=1+z-R 此滤波器为 FIR 滤波器,其结构图如下: 在实际生活中,往往不止存在一重回声,因此,需要实现多重回声的设计,关于均匀间隔的多 重回声的实现,是将每一级回声相对于上一级回声依次衰减和延时 R 个周期,此时不能再用 FIR 滤波器来实现,应该用
6、 IIR 滤波器设计。 IIR滤波器设计的系统函数如下: DSP 技术与应用课程设计报告 3 当回声次数很多时多重回声的系统函数如下: IIR 滤波器结构图: IIR 滤波器结构 隐藏目的是以添加回声的方式在原有音频信息中嵌入新信息,实现信息隐藏。它的数学模型可以表示为: 典型的回声核脉冲 嵌入回声的声音 可表示为 和 的卷积, 和 ,分别为原始声音信号和回声核的单位脉冲响应。回声信号由 引入到原始声音当中,其中, d 为延迟 时间, 为衰减系数。嵌入回声后的声音信号可以表示为 DSP 技术与应用课程设计报告 4 2、设计方案 ( 1)读取语音信号与回放 录制一段合适的原声信号,用“ x,fs
7、,bits=wavread(y,1 40000)”来读取录制好的语音信号,这是以采样频率 fs、采样位数 bits 从 1 40000来读取语音,并将采样值放在 x 中。 用 sound(5*x,fs,bits)对声音信号进行回放,乘以 5 以加强信号,便于听取。 ( 2)傅里叶变换 FFT 傅里叶变换调用格式 :y=-fft(x) 其中, x是序列, y 是序列的 FFT, ,x 可以为一向量或 矩阵,若 x为一向量,y是 x的 FFT。且和 x相同长度。若 x 为一矩阵,则 y是对矩阵的每一列向量进行 FFT。如果 x 长度是 2 的幂次方,函数 fft 执行高速基 -2FFT 算法;否则
8、 fft 执行一种混合基离散傅里叶变换算法,计算速度较慢。 ( 3)函数 filter 函数 filter 的调用格式为: y=filter(b,a,x) 该格式采用数字滤波器对数据进行滤波,既可以用于 IIR 滤波器,也可以用于 FIR 滤波器。其中向量 b 和 a 分别表示系统函数的分子、分母多项式的系数,若 a 1,此时表示 FIR 滤波器,否则就是 IIR 滤波器。该函数是利 用给出的向量b 和 a,对 x 中的数据进行滤波,结果放入向量 y。 ( 4)函数 zearos 函数的一种调用格式为: B = zeros(n) 返回一个 n*n 的矩阵,其元素都为零,如果参数 n不是一个标量
9、就会报错 。 函数的另一种调用格式为 : B = zeros(m,n) 或 B = zeros(m n) 返回一个 m*n 的零矩阵 。 函数的另一种调用格式为: B = zeros(m,n,p,) 或 B = zeros(m n p ) 返回一个 m*n*p* 的零矩阵。注意:参数 m,n,p 都是非负整数,负整数都会看成零。 DSP 技术与应用课程设计报告 5 四、设计流程 五、调试与分析 1、原始信号分析 读取一段语音信号,画出其时域波形,用 fft 对读取的语音信号进行傅里叶变换,并画出其相位与幅值。 x,fs,bits=wavread(y,1 40000); %读取语音信号 n1=0
10、:2000; figure(1) subplot(2,1,1);plot(x); %原始信号时域波形 title(原始信号时域波形 ); X=fft(x); %对原始信号做 FFT 变换 subplot(2,1,2);plot(n1(1:1000),X(1:1000); %原始信号频谱图 title(原始信号频谱图 ); figure(2) subplot(2,1,1);plot(abs(X);%经傅里叶变换之后的信号的幅值 title(幅值 ); subplot(2,1,2);plot(angle(X);%经傅里叶变换之后的信号的相位 title(相位 ); sound(5*x,fs,bit
11、s); %原始语音信号,乘以 5 是为了加强信号 DSP 技术与应用课程设计报告 6 0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4x 1 04-1- 0 . 500 . 51原始信号时域波形0 100 200 300 400 500 600 700 800 900 1000- 4 0 0- 2 0 00200400原始信号频谱图0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4x 1 040100200300400500幅值0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4x 1 04-4-2024相位2、回声信号的产生 对原始信号取出单声
12、道信号,并用 filter 函数对其进行衰减和延时,得到回声信号。 DSP 技术与应用课程设计报告 7 ( 1) FIR 滤波器产生一次回声 x,fs,bits=wavread(y,1 40000); %读取语音信号 n1=0:2000; b=x(:,1);%取单声道信号 yy1=filter(1,zeros(1,12000),0.7,1,b,zeros(1,30000); %FIR 滤波器进行滤波 figure(1) subplot(2,1,1);plot(yy1); %单回声滤波器时域波形 title(单回声滤 波器时域波形 ); YY1=fft(yy1); %对单回声信号做 2001 点
13、的 FFT 变换 subplot(2,1,2);plot(n1(1:1000),YY1(1:1000); %单回声滤波器频谱图 title(单回声滤波器频谱图 ); figure(2) subplot(2,1,1);plot(abs(YY1);%经傅里叶变换之后的信号的幅值 title(幅值 ); subplot(2,1,2);plot(angle(YY1);%经傅里叶变换之后的信号的相位 title(相位 ); sound(5*yy1,fs,bits); %经单次回声滤波器后的语音信号,乘以 5 是为了加强信号 DSP 技术与应用课程设计报告 8 0 1 2 3 4 5 6 7x 1 04-
14、 1 . 5-1- 0 . 500 . 511 . 5单回声滤波器时域波形0 100 200 300 400 500 600 700 800 900 1000- 1 0 0 0- 5 0 005001000单回声滤波器频谱图 ( 2) IIR 滤波器产生多次回声: yy2=filter(1,1,zeros(1,80000/(N+1),0.7,b,zeros(1,40000);通过改变式中 N的数值可设置回声的次数, 三次回声: x,fs,bits=wavread(y,1 40000); %读取语音信号 n1=0:2000; b=x(:,1);%产生单声道信号 N=3; yy2=filter(1,1,zeros(1,80000/(N+1),0.7,b,zeros(1,40000); %IIR 滤波器进行滤波 figure(3) subplot(2,1,1);plot(yy2); %三次回声滤波器时域波形 title(三次回声滤波器时域波形 ); YY2=fft(yy2); %对三次回声信号做 FFT 变换 subplot(2,1,2);plot(n1(1:1000),YY2(1:1000); %三次回声滤波器频谱图 title(三次 回声滤波器频谱图 );