信号与系统simulink声音的录制播放滤波

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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荣誉巨献

相关文档
最新文档