Окно БПФ для удаления шума, вызванного преобразованием с плавающей точкой в ​​короткое - PullRequest
0 голосов
/ 21 сентября 2019

Поскольку в большинстве аудио используется короткий формат, из-за преобразования с плавающей точкой в ​​короткий код вносится некоторый высокочастотный шум!

, приведенный ниже, код имитирует такой сценарий:

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

Если убрать короткую линию преобразования, результат будет хорошим.Как я должен удалить высокочастотный шум?Может, применить специальное окно к исходному сигналу?

1 Ответ

0 голосов
/ 27 сентября 2019

Это шум квантования или шум, возникающий при округлении или усечении выборочных данных для соответствия меньшему типу данных назначения.Оконное управление не поможет, так как данные все равно будут квантованы.Обычно вы не можете устранить шум квантования, но вы можете распространить его вокруг, чтобы сделать его менее заметным.Два возможных метода: формирование шума и размывание .Формирование шума распространяет ошибки округления вокруг, чтобы уменьшить возможные накопления и смещения, возможно перемещая большую часть шума в части спектра, где он менее заметен.Дизеринг добавляет небольшое количество шума для уменьшения периодических предельных циклов, полос, спектральных всплесков / тонов и других шумовых артефактов, которые более заметны или слышны, чем случайная случайность.

...