gpt4 book ai didi

python - numpy RFFT/IRFFT音量

转载 作者:行者123 更新时间:2023-12-03 01:38:47 27 4
gpt4 key购买 nike

我正在从wave文件进行rfft和irfft:

samplerate, data = wavfile.read(location)
input = data.T[0] # first track of audio
fftData = np.fft.rfft(input[sample:], length)
output = np.fft.irfft(fftData).astype(data.dtype)

因此它从文件读取,然后执行rfft。但是,当我用py音频流播放音频时,会产生很多噪音。我尝试搜索此问题的答案并使用了以下解决方案:

rfft or irfft increasing wav file volume in python

这就是为什么在执行irfft时使用.astype(data.dtype)的原因。但是,它并不能降低噪音,虽然可以降低噪音,但听起来仍然是错误的。

这是回放,其中p是pyAudio:
stream = p.open(format=pyaudio.paFloat32,
channels=1,
rate=fs,
output=True)

stream.write(output)
stream.stop_stream()
stream.close()
p.terminate()

那么,我在这里做错了什么?

谢谢!

编辑:我也尝试在做irfft时使用.astype(dtype = np.float32),因为pyaudio在流音频时会使用它。但是仍然很吵。

最佳答案

到目前为止,最好的工作解决方案似乎是使用中位数进行标准化,并使用.astype(np.float32)作为pyAudio输出是float32:

samplerate, data = wavfile.read(location)
input = data.T[0] # first track of audio
fftData = np.fft.rfft(input[sample:], length)
fftData = np.divide(fftData, np.median(fftData))
output = np.fft.irfft(fftData).astype(dtype=np.float32)

如果有人有更好的解决方案,我想听听。我尝试使用均值归一化,但仍然导致剪辑音频,使用np.max进行归一化会使整个音频过低。 FFT的这种归一化问题总是给我带来麻烦,因此在SO中找不到任何100%有效的解决方案。

关于python - numpy RFFT/IRFFT音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49256507/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com