信号与系统simulink声音的录制播放滤波
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合训练②
实验内容:利用matlab中simulink工具,从计算机声卡中录取音频文件。在matlab中利用该音频文件,产生带回音的音频文件,要求回音产生的次数、间隔、大小可以调整,并通过simulink 从声卡播放混有回音的音频文件。再设计去回音的系统,消除音频中的回音,在通过simulink从声卡播放消去回音的音频文件。实验步骤:
一、利用simulink从声卡录取音频文件,并产生回声。
分析:录取音频文件,则需要利用一个接收信号的装置和一个储存信号的装置。若要产生回声则需要一个信号的衰减和一个信号的延迟共同作用。
如图所示,其中话筒型装置用来收集外部声音信号,通过一个放大器和一个延迟器,再与原信号共同叠加变成回声信号,其中右下角的装置用来收集声音信号。喇叭装的装置用来输出声音信号。(理论上也可以采用负反馈的方式来使原信号产生回声)
经过回声叠加以后产生的音频信号如图所示。
二、消除音频中的回声
分析:若要消除音频中的回声,则需要做一个滤波器,则先应该把其延迟和回声大小大概估计,然后将延迟的信号过滤掉。
[y,fs,nbits]=wavread('output');
figure(1)
r=xcorr(y);
plot(r);
grid on;
title('y的自相关函数');
[u,v]=max(r);
r1=r;
r1(v-100:v+100,1)=0;
[u1,v1]=max(r1);
N=v-v1;%利用自相关函数求出回声延迟
a=[1,zeros(1,384),0.5];
b=1;
z=filter(1,a,y);
t=[0:441343];
figure(2),plot(t,z,'r',t,y,'b'),grid on;
title('带回声的音频信号,回声衰减a=0.5');
xlabel('t');
sound(z,44100);
以上程序利用wavread读取声音信号,然后再对回声延迟和回声衰减进行估计。
此为过滤前的输出波形:
然后此为过滤后的输出波形:
以下为滤波程序:
load lineup.mat
sound(y,8192);
a=[1,zeros(1,999),0.5];
b=1;
z=filter(1,a,y);
t=linspace(0,0.855,7000);
figure(1),plot(t,0.5*z,'r',t,0.5*y,'b'),grid on;
title('带回声的信号与回声消除之后的信号进行对比');
xlabel('t');
sound(z,8192);
三、通过simulink从声卡播放消去回音的音频文件
分析:将上述已经过滤了的波形进行保存.mat,然后通过与simulink中自带的喇叭相连,就可以播放出声音来。
Loui荣誉巨献