gpt4 book ai didi

python - 从 blob 音频 django 创建一个 wav 文件

转载 作者:行者123 更新时间:2023-12-03 00:35:10 52 4
gpt4 key购买 nike

在客户端,我正在发送一个 blob 音频 (wav) 文件。在服务器端,我正在尝试将 blob 文件转换为音频 wav 文件。我做了以下事情:

blob = request.FILES['file']
name = "TEST.wav"
audio = wave.open(name, 'wb')
audio.setnchannels(1)
audio.writeframes(blob.read())

我认为转换 blob 类似于将 blob 图像转换为 jpeg 文件,但在这种假设中是非常不正确的。那没有用;我收到一个错误 - “错误:未指定样本宽度。”然后我使用了 setsampwidth() 并在 1 到 4 之间输入了一个任意数字(在查看了 wave.py 源文件之后......我不知道为什么字节必须在 1 到 4 之间)。之后抛出另一个错误 - “错误:未指定采样率”。如何指定采样率?

setnchannels()、setsampwidth() 方法有什么作用?有没有一种“简单”的方法可以从 blob 生成 wav 文件?

最佳答案

以前,我从来没有这样做过.. 但是,在我的测试中,下面的脚本对我来说效果很好.. (但音频输出与原始文件不同) .

>>> nchannels = 2
>>> sampwidth = 2
>>> framerate = 8000
>>> nframes = 100
>>>
>>> import wave
>>>
>>> name = 'output.wav'
>>> audio = wave.open(name, 'wb')
>>> audio.setnchannels(nchannels)
>>> audio.setsampwidth(sampwidth)
>>> audio.setframerate(framerate)
>>> audio.setnframes(nframes)
>>>
>>> blob = open("original.wav").read() # such as `blob.read()`
>>> audio.writeframes(blob)
>>>

我在 https://stackoverflow.com/a/3637480/6396981 找到了这个方法

最后,通过更改 nchannels 的值和 sampwidth1 .我得到了与原始文件相同的音频。
nchannels = 1
sampwidth = 1
framerate = 8000
nframes = 1

Tested under Python2, and got an error UnicodeDecodeError: 'utf-8' codec can't decode byte 0x95 in position 4: invalid start byte on Python3.

关于python - 从 blob 音频 django 创建一个 wav 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42288607/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com