利用FFT窗口消除浮点数对短con造成的噪声

2024-05-01 22:08:10 发布

您现在位置:Python中文网/ 问答频道 /正文

由于大多数音频是使用短格式,一些高频噪声引入由于浮子到短转换!你知道吗

下面的代码模拟了这样的场景:

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()

输出如下所示:

enter image description here

如果我去掉短转换线,结果是好的。 如何消除高频噪声?可能对原始信号应用一个特殊的窗口?你知道吗


Tags: importplotas格式nppltscipyax
1条回答
网友
1楼 · 发布于 2024-05-01 22:08:10

这是量化噪声,或通过舍入或截断采样数据以适合较小的目标数据类型而引入的噪声。窗口化不会有帮助,因为数据仍然会被量化。通常无法消除量化噪声,但可以将其分散开来,使其不那么明显。两种可能的技术是noise shapingdithering。噪声整形将舍入误差四处传播,以减少可能的累积和偏差,可能会将大量噪声移动到频谱中不太明显的部分。抖动会添加少量的噪声,以减少周期性极限环、带状、光谱尖峰/音调以及其他比无模式随机性更明显或更可听的噪声伪影。你知道吗

相关问题 更多 >