重新制作WAV文件

问题描述 投票:0回答:1

我对python和FFT相当陌生,所以提前道歉--我想把一个WAV文件只用某些频率重新创建(过滤掉不需要的频率)。

我可以直观地绘制出所有内容,但却很难从结果中重新创建一个可播放的WAV文件。我已经把问题最小化了--如果我使用原始信号,我可以重新创建WAV文件。如果我通过rfft运行信号,然后立即通过irfft并尝试从结果中重新创建WAV文件,当我尝试播放它时(Windows 10),文件被创建,我得到了一个错误

这个项目是以不支持的格式编码的。

我正在使用的代码(缩减到最低限度)

fs_rate, signal = wavfile.read(filename)
FFT = scipy.fft.rfft(signal)
recreated_signal = scipy.fft.irfft(FFT)
scipy.io.wavfile.write('recreated file1.wav',fs_rate,signal)
scipy.io.wavfile.write('recreated file2.wav',fs_rate,recreated_signal)

我注意到的一件事是,创建的第一个文件是5,619 KB(刚好低于原始文件的大小),而创建的第二个文件是22,473 KB。

我缺少什么?

python-3.x scipy fft
1个回答
1
投票

你可能是读取了16位有符号的整数样本,并写出了64位的双浮点样本(scipy fft函数的结果),从而导致文件大了4倍。

检查原始文件的WAV格式样本类型,并与你的两个scipy信号的向量长度和数值类型进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.