如何转换 wav 文件 -> bytes-like 对象?
How to convert a wav file -> bytes-like object?
我正在尝试使用 Python 3.5.1 的 audioop 模块以编程方式分析 wav 文件以获取通道、持续时间、采样率、音量等。但是我找不到描述如何转换的文档一个 wav 文件到 'fragment' 参数,它必须是一个类似字节的对象。
有人可以帮忙吗?
file.read() returns a bytes
object,所以如果你只是想获取文件的内容为 bytes
,类似以下内容就足够了:
with open(filename, 'rb') as fd:
contents = fd.read()
但是,由于您使用的是 audioop,因此您需要的是原始 音频数据 ,而不是原始文件内容。尽管未压缩的 WAV 包含原始音频数据,但它们还包含 headers,它告诉您有关原始音频的重要参数。此外,这些 headers 不能被视为原始音频。
您可能想使用 wave 模块来解析 WAV 文件并获取其原始音频数据。反转 WAV 文件中的音频的完整示例如下所示:
import wave
import audioop
with wave.open('intput.wav') as fd:
params = fd.getparams()
frames = fd.readframes(1000000) # 1 million frames max
print(params)
frames = audioop.reverse(frames, params.sampwidth)
with wave.open('output.wav', 'wb') as fd:
fd.setparams(params)
fd.writeframes(frames)
我正在尝试使用 Python 3.5.1 的 audioop 模块以编程方式分析 wav 文件以获取通道、持续时间、采样率、音量等。但是我找不到描述如何转换的文档一个 wav 文件到 'fragment' 参数,它必须是一个类似字节的对象。
有人可以帮忙吗?
file.read() returns a bytes
object,所以如果你只是想获取文件的内容为 bytes
,类似以下内容就足够了:
with open(filename, 'rb') as fd:
contents = fd.read()
但是,由于您使用的是 audioop,因此您需要的是原始 音频数据 ,而不是原始文件内容。尽管未压缩的 WAV 包含原始音频数据,但它们还包含 headers,它告诉您有关原始音频的重要参数。此外,这些 headers 不能被视为原始音频。
您可能想使用 wave 模块来解析 WAV 文件并获取其原始音频数据。反转 WAV 文件中的音频的完整示例如下所示:
import wave
import audioop
with wave.open('intput.wav') as fd:
params = fd.getparams()
frames = fd.readframes(1000000) # 1 million frames max
print(params)
frames = audioop.reverse(frames, params.sampwidth)
with wave.open('output.wav', 'wb') as fd:
fd.setparams(params)
fd.writeframes(frames)