我正在尝试从一些样本模拟音频传输通道:我有原始录音和录制失真的录音。我正在使用tfestimate()来获得传递函数估计。但现在我对如何应用它来创建模拟失真感到有些困惑。我试图做的是:
res = tfestimate(...) % get TF from clean and noisy record.
c = abs(ifft(res)); % convert to time domain
out = conv(signal, c); % filter
wavwrite(out, 16000, 16, '/tmp/out.wav'); % dump
但我对结果不满意,听起来非常不同。
有没有更好的方法将传递函数估计“res”应用于输入“信号”?
答案 0 :(得分:2)
为了清楚起见,您的“原始录音和录制的失真录音”同时录制,对吧?失真过程不会增加噪声吗?
不是使用tfestimate
计算频域中的传递函数,然后尝试将其反转,而是计算FIR Wiener滤波器更直接,将原始录制转换为失真版本。
或者,您可以尝试调整tfestimate
返回的传递函数,然后将其转换为时域过滤器。函数invfreqs
是一个很好的起点;它将ZPK模型与测量的频率响应相匹配。