Python 将数组转换为 Wav

Posted

技术标签:

【中文标题】Python 将数组转换为 Wav【英文标题】:Python Convert an array to Wav 【发布时间】:2015-10-19 11:38:07 【问题描述】:

在 Python 中,我有一个浮点数组,表示模拟信号的电压。

谁能解释我如何将数组更改为 .wav 格式?我见过this 在添加标题之前,我是否首先需要将数据格式从 [1.23,1.24,1.25,1.26] (例如)更改为 1.231.241.251.26 以便正确读取? 我最终计划对这些值使用 FFT 来导出基本频率,在这种情况下是否有更好的方法来存储这些值?

谢谢

【问题讨论】:

可以查看wave模块 soledadpenades.com/2009/10/29/… 如果您最终打算执行 FFT,那么写出 wav 文件的意义何在?一个明显的问题是,您的模拟电压电平将会丢失,因为您需要将数据重新缩放到 -1.0 到 1.0,并且 wav 没有本地存储缩放信息的方式(除非您将其嵌入到自定义 riff 块中) . @DreadfulWeather wave 模块的文档在描述 writeframes 的预期数据方面非常缺乏。 我的信号有偏差,返回 0 到 5 之间的 10 位结果。 【参考方案1】:

如果您知道您的信号和数据的采样频率已经被max(abs(data)) 适当缩放,那么您可以使用scipy 轻松做到这一点:

from __future__ import print_function
import scipy.io.wavfile as wavf
import numpy as np

if __name__ == "__main__":

    samples = np.random.randn(44100)
    fs = 44100
    out_f = 'out.wav'

    wavf.write(out_f, fs, samples)

您也可以使用标准的wave 模块。

【讨论】:

是否可以从 numpy 获取 wav 而无需保存? 您可以修改 scipy.io.wavfile.write 函数以从 numpy 数组 github.com/scipy/scipy/blob/… 获取完整 wav 文件的字节数

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

如何在 python 中读取多个 wav 文件,并转换为 numpy 数组进行绘图

将字节数组转换为 wav 文件

将字节数组转换为 Wav 文件 [重复]

将浮点数组转换为 Wav 文件 Swift [关闭]

如何将字节数组转换为 wav 文件 <OOURAFFT>

如何将音频数据数组转换为 wav 文件?