我正在尝试从一些样本中模拟音频传输通道:我有原始录音和失真录音。我使用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“应用于输入”信号“?
发布于 2011-04-01 03:10:03
为了清楚起见,你的“原始录音和失真录音”是同时录制的,对吧?失真过程不会增加噪音吗?
与其使用tfestimate计算频域中的传递函数,然后尝试将其反转,不如计算将原始记录转换为失真版本的FIR维纳滤波器,这将更加直接。
或者,您可以尝试拟合tfestimate返回的传递函数,然后将其转换为时域滤波器。函数invfreqs是一个很好的起点;它将根据测量的频率响应拟合ZPK模型。
https://stackoverflow.com/questions/5504756
复制相似问题