由于大多数音频是使用短格式,一些高频噪声引入由于浮点到短转换!
下面的代码模拟了这样的场景:
import numpy as np
import matplotlib.pyplot as plt
import scipy.fftpack
fs = 96000
N = 96000//2
T = 1.0/fs
x = np.arange(0,N*T,T) + T/8
y = 32767*np.sin(2*np.pi*100.0*x)
y = np.short(y)
y = y*np.hanning(len(y))
yf = np.abs(scipy.fftpack.fft(y))
yf = 20*np.log10(yf*2/N)/32767
xf = scipy.fftpack.fftfreq(N,T)
fig,ax = plt.subplots(2,1,figsize=(12,12))
ax[0].plot(x,y)
ax[1].plot(xf[:N//2],yf[:N//2])
ax[1].set_xscale('log')
plt.show()输出如下所示:

如果我去掉短的转换线,结果是好的。如何去除高频噪声?也许可以对原始信号应用一个特殊的窗口?
发布于 2019-09-28 04:49:25
这是量化噪声,或通过舍入或截断采样数据以适应较小的目标数据类型而引入的噪声。窗口不会有帮助,因为数据仍然是量化的。您通常无法消除量化噪声,但您可以将其分散开来,使其不那么明显。两种可能的技术是noise shaping和dithering。噪声整形将舍入误差分散到周围,以减少可能的累积和偏差,可能会将大量噪声移动到频谱中不太明显的部分。抖动添加了少量的噪声,以减少周期性极限环、带状、频谱尖峰/音调和其他噪声伪像,这些噪声伪像比无模式随机性更可见或可听。
https://stackoverflow.com/questions/58042163
复制相似问题