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

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

【问题讨论】:

    标签: python audio filter numpy fft


    【解决方案1】:

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

    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() 函数并写入磁盘。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 2018-02-18
    • 2017-01-15
    • 2015-11-08
    • 2012-04-30
    • 2017-02-13
    • 2018-07-29
    • 2016-12-24
    相关资源
    最近更新 更多