Поскольку в большинстве аудио используется короткий формат, из-за преобразования с плавающей точкой в короткий код вносится некоторый высокочастотный шум!
, приведенный ниже, код имитирует такой сценарий:
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()
Вывод выглядит следующим образом:
Если убрать короткую линию преобразования, результат будет хорошим.Как я должен удалить высокочастотный шум?Может, применить специальное окно к исходному сигналу?