如何使用 python 将音频的原始数据文件转换为 .Wav

And*_*esS 6 python-2.7

了解一些事情,例如:编码:16位 pcm、字节顺序 Little Endian、通道:1 Mono、起始偏移:0 字节、导入量:100% 和采样率 16000 Hz。

这些特征是Audacity给出的,这样我就可以在这个节目中听到它。

但我想用 Python 代码来实现。

mai*_*jit 5

是的,可以使用 wave 库或 wavio api 来做到这一点

\n\n

https://docs.python.org/2/library/wave.html

\n\n

以写入二进制模式打开波形文件。

\n\n

wave.open(file[, mode])\n如果 file 是字符串,则按该名称打开文件,否则将其视为可查找的类文件对象。模式可以是以下任意一种

\n\n

\'w\'、\'wb\'\n只写模式。

\n\n

设置 wav 文件的所有参数,因为您已经共享了 audacity

\n\n

Wave_write.setparams(tuple)\n元组应为 (nchannels、sampwidth、framerate、nframes、comptype、compname),其值对 set*() 方法有效。设置所有参数。

\n\n

以二进制模式打开原始文件并将数据传递给这些函数。

\n\n

Wave_write.writeframesraw(data)\xc2\xb6\n写入音频帧,而不校正nframe。

\n\n

Wave_write.writeframes(data)\n写入音频帧并确保 nframes 正确。

\n\n

完成后关闭文件句柄。

\n\n

Wave_write.close()\n确保nframes正确,如果文件是由wave打开的,则关闭该文件。该方法在对象收集时调用。

\n\n

希望你能根据这些描述实现python代码。

\n


ruh*_*ong 5

设置标题后,rb从原始文件中读取字节 ( ) 并将字节 ( ) 写入 WAV。wb参见波形模块

import wave

with open("sound.raw", "rb") as inp_f:
    data = inp_f.read()
    with wave.open("sound.wav", "wb") as out_f:
        out_f.setnchannels(1)
        out_f.setsampwidth(2) # number of bytes
        out_f.setframerate(44100)
        out_f.writeframesraw(data)
Run Code Online (Sandbox Code Playgroud)

检查WAV文件的标题:

with wave.open("sound.wav", "rb") as in_f:
    print(repr(in_f.getparams()))
Run Code Online (Sandbox Code Playgroud)

它应该打印类似的内容_wave_params(nchannels=1, sampwidth=2, framerate=44100, nframes=220500, comptype='NONE', compname='not compressed')