我正在开发一个虚拟麦克风项目,该项目试图模拟使用另一个麦克风获得的音频信号的输出。让我知道这听起来是否合理的解决方案。
假设,我们有两个麦克风:Mic1和Mic2。s使用 . 通过扬声器播放声源Mic1。令h1和分别为使用同一扬声器的和获得h2的脉冲响应。现在,如果我们使用 记录,我们会得到:Mic1Mic2Mic1
s1(t) = h1(t) * s(t) % (*) operator is convolution.
如果我们想实现 s2(Mic2 产生的声音),我们可以这样做:
% Take fft of h1(t) & h2(t)
H1f = fft(h1); H2f = fft(h2);
% Obtain S(f) using division in fft
S1f = fft(s1);
Sf = S1f/H1f;
% Obtain s2(t) using multiplication in freq domain & ifft
S2f = Sf .* H2f;
s2 = ifft(S2f);
作为解决问题的方法,这听起来可行吗?更实际的实现(建议)将不胜感激。