第十组讨论报告 回声信号
设计人员【张峻凯、董晓民、严子轩@电子科技大学自动化工程学院】
问题描述:
语音信号频率分量分离的设计与仿真
回声信号可建模为 y[n]=x[n]+αx[n-N],其中 x[n]是未被污损的语音信号, N为回声延迟值, α<1为回声衰减系数。
(1)采用matlab中的audiorecorder命令录制一段3秒的语音信号,并将录制的语音信号转换为音频数据,显示其时域和频域特征;
(2)根据回声的模型,选择合适的延迟值和衰减系数,合成回声信号,显示其时域和频域特征,并进行播放
(3)利用相关性,判断回声的参数值
designed by Liu Ke @school of automation of UESTC
解决方案:
(1)
首先使用 matlab中的audiorecorder命令录制3秒的语音信号,
ysound = audiorecorder;
%recorder = audiorecorder 创建 8000 Hz、8 位、1 通道的 audiorecorder 对象。
disp('开始录制');
recordblocking(ysound,3); %录音3秒钟
disp('结束录制');
将录制的语音信号转化为音频数据,并显示频域时域特征
ysound_1 = getaudiodata(ysound); %获取录音数据
plot(ysound_1); %做录音数据的时域图形
title('原始语音信号时域');
xlabel('采样点 n');
ylabel('幅度 n');
y1 = fft(ysound_1); %做ysound_1的FFT
%y1 = fftshift(y1); 频率分量将会移到坐标中心
subplot(2,2,2);
plot(abs(y1)); %使用abs函数画出原始语音信号的频谱图
title('原始语音信号的频谱幅度');
xlabel('采样点 n');
ylabel('幅度 n');
subplot(2,2,3);
plot(angle(y1)); %使用angle函数画出原始语音信号的频谱相位
title('原始语音信号的频谱相位');
xlabel('采样点 n');
ylabel('幅度 n');
grid on;
输入信号的时频图像
(2)
由题意可知回声模型如下所示
y[n]=x[n]+αx[n-N]
因为后面会用到噪声信号,因此我们首先将源信号增益并时移得到噪声hsound之后将两个函数叠加得到y[n]。
选取α为0.5,N为2000,由于采样率为8000Hz,2000对应着延迟0.2