logo资料库

matlab:回声的产生与消除.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
附件三 设计 题目 按 课 程 设 计 主 要 内 容 指 导 教 师 评 语 回声的产生与消除 成绩 阅读《信号与系统》(郑君里等编著第 3 版)第二章关于多径失真 的讨论。 要求:(1)利用声音信号文件 x 产生带有回声的声音文件 y。 (2)从带有回声的文件 y 中消除回声。 (3)从 y 中估计反射物的距离。 建议:从学生的工作态度、工作量、设计(论文)的创造性、学术性、实用性及书面表达能力等方面给出评价。 签名: 200 年 月 日
目录 一·课程设计目的与要求 二·选题背景(课题背景、原理、工具软件和测试环境介绍) 三·任务设计过程 1,信号的采集 2,回声信号的产生 3,回声延时量的分析与估算回声衰减系数 4,从带有回声的声音信号中恢复原信号 5,从带有回声的声音信号中估计反射物的距离 四·测试结果与分析 五·课程设计心得体会 六·参考文献
一·课程设计目的与要求 1、回声的产生与消除课程设计目的要求 阅读《信号与系统》(郑君里等编著第 3 版)第二章关于多径失真的讨论。 要求: (1)利用声音信号文件x产生带有回声的声音文件y。 (2)从带有回声的文件y中消除回声。 (3)从 y 中估计反射物的距离。 二·选题背景(课题背景、原理、工具软 件和测试环境介绍) (1)根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念, 采样定理:回声信号,相关性分析;数字滤波器设计原理和方法)。 采样频率:采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并 成离散信号的采样个数。 采样位数:即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播 放声音文件时所使用数字声音信号的二进制位数。 采样定理:在进行模拟/数字信号的转换过程中,当采样频率 fs.max 大于信号中最高 频率 fmax 的 2 倍时(fs.max>=2fmax),采样之后的数字信号完整地保留了原始信号中的信 息,一般实际应用中保证采样频率为信号最高频率的 5~10 倍;采样定理又称奈奎斯特定 理。 相 关 函 数 : X(t) 为 随 机 过 程 , a(t)=EX(t) 为 期 望 , 则 相 关 函 数 定 义 为 : B(s,t)=E(X(s)-a(t))(X(t)-a(t))。若 X(t)=Y(t)+i*Z(t),Y,Z 为实过程,则称 X(t)为复 随机过程,相关函数定义为:B(s,t)=E(X(s)-a(t))(X(t)-a(t))(后一个括号取共轭) 自相关函数的数学定义为:
同一时间函数在瞬时 t 和 t+a 的两个值相乘积的平均值作为延迟时间 t 的函数,它是 信号与延迟后信号之间相似性的度量。简单地说,自相关函数是用来表征一个信号在不同 时刻 t1,t2 状态之间的相关程度,其在某一时间点的值越大,相关程度越高。 在 matlab 中,对于一个混有回声的语音信号,可以利用 xcorr 自相关函数可以求出 回声信号与原始信号的采样点之差,进而求得延时量。 (2)熟悉 MATLAB 的编程语言。 (3)本课程设计采用的工具软件为 Matlab R2018a,测试环境为 Windows10(64 位)
三·任务设计过程 1,信号的采集 (1)已经采集好的一段语音信号,利用 matlab 的”audioread”命令可以对该信号进行 读取和采样,本项目中采用的文件为 wav 文件。 利用 plot 和 fft 函数可以对已采集的信号分别绘制时域波形图和经快速傅里叶变换 得到的频谱图;abs 和 angle 函数可以绘制信号频域的幅值与相位图。 我们选择的语音信号为老师提供的样本 speech_dft.wav (2)Matlab 代码 %原始信号 [x,fs]=audioread('C:\Users\Desktop\keshe\speech_dft.wav'); N=length(x); figure(1); subplot(3,1,1); plot(x(1:N)); title('原始信号(时域)'); y=fft(x); subplot(3,1,2); plot(abs(y)); title('幅值'); subplot(3,1,3); plot(angle(y)); title('相位');
(3)图像 2,回声信号的产生 (1)在录制信号基础上产生带有回声的声音信号并绘制其时域波形,对其进行 FFT 频谱 分析,绘制频谱图。利用 zeros 函数创建空矩阵可以对原始信号进行延时,并产生回声。 我们加入了两个回声信号,拟定的回声延时点数分别为 ceil(N/6)与 ceil(N/3),衰减系 数分别为 0.7 与 0.4。最后生成名为 eacho1.wav 的回声信号并播放。 N1 = ceil(N/6)= 18339 N2 = ceil(N/3)=36678 (2)Matlab 代码 %回声信号的产生 [x,fs]=audioread('C:\Users\Desktop\keshe\speech_dft.wav'); N=length(x); x1=x(1:N)'; x2=x(1:N)'; x3=x(1:N)'; N1=ceil(N/6) N2=ceil(N/3) a1=0.7; a2=0.4; x1=[x1,zeros(1,N1+N2)]; x2=[zeros(1,N1),0.7*x2,zeros(1,N2)]; x3=[zeros(1,N2),0.4*x3,zeros(1,N1)]; y=x1+x2+x3; figure(2);
subplot(2,1,1); plot(y(1:N+N1+N2)); title('回声(时域)'); y1=fft(y); subplot(2,1,2); plot(abs(y1)); title('幅值'); eacho1= 'C:\Users\Desktop\keshe\eacho1.wav'; audiowrite(eacho1,y,fs); sound(y,fs); (3)图像 3,回声延时量的分析与估算回声衰减系数 (1)利用 xcorr 自相关函数可以求出回声信号与原始信号的采样点之差、幅度之比,进 而求得延时量与衰减系数。从自相关函数图像中可以看到,在采样点的中心有一最大的幅 值,其含义就是当延时量为零时,信号相关程度最高;而在这一峰值的两侧有两个次大的 幅值,其含义就是在该处信号相关程度次高;而在别的点处其相关程度相对于该 2 个峰值 都可以忽略,因此算出这 2 个峰值所对应的采样点之差,就是回声信号中,原始信号与回 声信号对应的采样点之差。r1、r2、r3 分别为源信号与两个回声信号的幅度,它们的比便 是衰减系数。
(2)Matlab 代码 %从带有回声的声音信号中估计反射物的距离 [y,fs]=audioread('C:\Users\Desktop\keshe\eacho1.wav'); N=length(y); h=xcorr(y);%对于一个混有回声的语音信号,可以利用 xcorr 自相关函数可以求出回声信 号与原始信号的采样点之差,进而求得延时量。 figure(4); plot(abs(h)); title('最值'); h1=h(150000:170000); [r1,t1]=max(h1); t1=t1+150000; h2=h(180000:200000); [r2,t2]=max(h2); t2=t2+180000-t1; h3=h(200000:210000); [r3,t3]=max(h3); t3=t3+200000-t1; t=[t2,t3] %衰减系数计算 r2/r1 r3/r1 (3)自相关函数图像图像
分享到:
收藏