我正在尝试使用以下代码在 MATLAB 中对消声语音信号(2.1 秒)和脉冲响应(20 秒)执行卷积:
[y_anech,fsSig]=audioread('MA03_03.wav'); %speech signal fsSig = 48000
[y_IR,fsIR]=audioread('IR.wav'); %reads the Impulse response, fsR = 44100
%%% Resampling the speech signal
[P,Q] = rat(fsIR/fsSig);
y_anech_resampled = resample(y_anech, P,Q);
sig_conv_meas = cconv(y_anech_resampled,y_IR)/fsIR;
sig_conv_meas = sig_conv_meas/max(abs(sig_conv_meas));
player1 = audioplayer(sig_conv_meas,fsIR);
play(player1);
运行上面的代码,它给了我所需的卷积信号,但是在 20 秒时,我也听到了无回声的语音信号。我有以下问题:
- 我在卷积信号后听到原始信号的原因是什么?我应该如何删除它?
见附图。在最后一个图中,大约 20 秒,出现了消声信号:
- 在执行卷积时,为什么我需要像我在代码中那样将卷积后的信号除以采样频率(
sig_conv_meas = cconv(y_anech_resampled,y_IR)/fsIR
)?
谢谢!