Python NumPy 将 FFT 转换为文件

Posted

技术标签:

【中文标题】Python NumPy 将 FFT 转换为文件【英文标题】:Python NumPy Convert FFT To File 【发布时间】:2012-04-11 07:57:37 【问题描述】:

我想知道是否可以使用 NumPy 获取文件中存在的频率,然后更改这些频率并从中创建一个新的 WAV 文件?我想对文件进行一些过滤,但我还没有看到一种将 WAV 文件读入 NumPy、过滤它,然后输出过滤后的版本的方法。如果有人可以提供帮助,那就太好了。

【问题讨论】:

【参考方案1】:

SciPy 为 NumPy 数组上的doing FFTs 提供了函数,还为 WAV 文件提供了reading 和 writing 的函数。例如

from scipy.io.wavfile import read, write
from scipy.fftpack import rfft, irfft
import np as numpy

rate, input = read('input.wav')

transformed = rfft(input) 

filtered = function_that_does_the_filtering(transformed)
output = irfft(filtered)

write('output.wav', rate, output)

inputtransformedoutput 都是 numpy 数组)

【讨论】:

scipy.io.wavfile 是否处理多个音频通道? @IainRist,它在编写时肯定会处理它们:“要编写多通道,请使用形状的二维数组(Nsamples,Nchannels)”(大概这意味着它也处理读取它们) . 刚刚查看了源代码。它确实将数据重塑为正确数量的通道。 啊,完美 - 我希望 NumPy 可以做到这一点。我已经将一个数组输出到一个文件,但不确定如何从过滤后的信号转到文件。谢谢! 嘿,我现在有一个问题——我使用 rfft() 函数来获取波形文件的 FFT 分析,但是 irfft() 函数并没有给我相同的声波背部。它直接从文件打开到 rfft() 函数,然后进入 irfft() 函数并写入磁盘。有什么想法吗?

以上是关于Python NumPy 将 FFT 转换为文件的主要内容,如果未能解决你的问题,请参考以下文章

将 NumPy 数组转换为 cufftComplex

在将数据输入 FFT 用于音频频谱分析仪之前,使用 python 将 wav 文件转换为 csv 文件 [关闭]

Python 3:将波形数据(字节数组)转换为浮点值的 numpy 数组

FFTW 从 numpy.fft 产生不同的结果

如何使用 NAudio 对波形文件执行 FFT

将 numpy 数组转换为 4D nifti 文件