了解一些事情,例如:编码:16位 pcm、字节顺序 Little Endian、通道:1 Mono、起始偏移:0 字节、导入量:100% 和采样率 16000 Hz。
这些特征是Audacity给出的,这样我就可以在这个节目中听到它。
但我想用 Python 代码来实现。
是的,可以使用 wave 库或 wavio api 来做到这一点
\n\nhttps://docs.python.org/2/library/wave.html
\n\n以写入二进制模式打开波形文件。
\n\nwave.open(file[, mode])\n如果 file 是字符串,则按该名称打开文件,否则将其视为可查找的类文件对象。模式可以是以下任意一种
\n\n\'w\'、\'wb\'\n只写模式。
\n\n设置 wav 文件的所有参数,因为您已经共享了 audacity
\n\nWave_write.setparams(tuple)\n元组应为 (nchannels、sampwidth、framerate、nframes、comptype、compname),其值对 set*() 方法有效。设置所有参数。
\n\n以二进制模式打开原始文件并将数据传递给这些函数。
\n\nWave_write.writeframesraw(data)\xc2\xb6\n写入音频帧,而不校正nframe。
\n\nWave_write.writeframes(data)\n写入音频帧并确保 nframes 正确。
\n\n完成后关闭文件句柄。
\n\nWave_write.close()\n确保nframes正确,如果文件是由wave打开的,则关闭该文件。该方法在对象收集时调用。
\n\n希望你能根据这些描述实现python代码。
\n设置标题后,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')
| 归档时间: |
|
| 查看次数: |
9706 次 |
| 最近记录: |