python-3.x - 如何转换 wav 文件 -> bytes-like 对象?

标签 python-3.x audio wave

我正在尝试使用 Python 3.5.1 的 audioop 模块以编程方式分析 wav 文件以获取 channel 、持续时间、采样率、音量等。但是我找不到描述如何将 wav 文件转换为 ' fragment'参数,它必须是一个类似字节的对象。

有人可以帮忙吗?

最佳答案

file.read()返回一个 bytes 对象,所以如果您只是想获取文件的内容作为 bytes,像下面这样的东西就足够了:

with open(filename, 'rb') as fd:
    contents = fd.read()

但是,由于您正在使用 audioop ,您需要的是原始音频数据,而不是原始文件内容。尽管未压缩的 WAV 包含原始音频数据,但它们还包含 header ,告诉您有关原始音频的重要参数。此外,不得将这些 header 视为原始音频。

您可能想使用 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.x - 如何转换 wav 文件 -> bytes-like 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529520/

相关文章:

python - 如何将输入读取为数字?

python - 为什么 Pandas 的速度如此之快?如何定义这样的功能?

python-3.x - 如何让 Visual Studio Code 与安装在 WSL 上的 python 一起工作

python - 如何查找在线音频文件的持续时间而无需使用python下载?

audio - PCM/WAV文件样本到实际声音/频率

c++ - 频率和振幅

python - 将其他 Python 脚本作为模块导入

ios - 核心音频: Audio Unit to boost signal level

Android 音频延迟 - 如何计算延迟

python - 在 python 中播放 .wav 文件的一部分