重新制作WAV文件

我对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。

我缺少什么?

解决方案:

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

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

给TA打赏
共{{data.count}}人
人已打赏
未分类

找不到Xamarin.Forms资源文件。

2022-9-9 3:51:19

未分类

如何使用扩展和硒打开一个新的标签页?

2022-9-9 3:51:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索