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)
(input
、transformed
和 output
都是 numpy 数组)
【讨论】:
scipy.io.wavfile
是否处理多个音频通道?
@IainRist,它在编写时肯定会处理它们:“要编写多通道,请使用形状的二维数组(Nsamples,Nchannels)”(大概这意味着它也处理读取它们) .
刚刚查看了源代码。它确实将数据重塑为正确数量的通道。
啊,完美 - 我希望 NumPy 可以做到这一点。我已经将一个数组输出到一个文件,但不确定如何从过滤后的信号转到文件。谢谢!
嘿,我现在有一个问题——我使用 rfft() 函数来获取波形文件的 FFT 分析,但是 irfft() 函数并没有给我相同的声波背部。它直接从文件打开到 rfft() 函数,然后进入 irfft() 函数并写入磁盘。有什么想法吗?以上是关于Python NumPy 将 FFT 转换为文件的主要内容,如果未能解决你的问题,请参考以下文章
在将数据输入 FFT 用于音频频谱分析仪之前,使用 python 将 wav 文件转换为 csv 文件 [关闭]