回声消除系统设计
回声消除系统设计
设计详细说明:
设计系统在0.2s,0.4s产生回声
-
Matlab代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41clear,clc,close all;
% 记录数据
fs=8000; % 声音采样频率
duration=3; % 记录时间
%记录输入声音
myrecording = audiorecorder;
fprintf('Speaking for %d seconds. \\n',duration);
disp('Start speaking.')
recordblocking(myrecording, duration);
disp('End of Recording.');
%获得输入信息
x = getaudiodata(myrecording);
%存储录音信息
audiowrite('luyin.wav',x,fs);
%定义冲激响应函数
h=zeros(1,5000);
h(1)=4/5;h(0.2\*fs)=0.6;h(0.4\*fs)=0.4;
% 卷积计算
y=conv(x,h);
k=audioplayer(y,fs);
play(k); % 播放回音
%存储回音
audiowrite('huiyin.wav',y,fs);
%绘图
subplot(311)
plot (x) ;%绘制原始音
title('原始音');
subplot(312)
plot (y);%绘制回音
title('回音');
%恢复计算
huifu=filter(1, h, y );%回音卷积1/h恢复初始
subplot(313)
plot(huifu);%绘制恢复音
pause(5);
sound(huifu)%播放恢复音
audiowrite('huifu.wav',huifu,fs);%存储恢复音
title(‘恢复音’)输出结果:
很容易看出原始音与恢复音的波形相同
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 がんばろう!