Python 从blob audio django创建wav文件

Python 从blob audio django创建wav文件,python,django,audio,blob,wav,Python,Django,Audio,Blob,Wav,在客户端,我发送一个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文件,但这种假设非常不正确。那没用;我得到一个错误-“erro

在客户端,我发送一个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文件,但这种假设非常不正确。那没用;我得到一个错误-“error:sample width not specified.”然后我使用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)
>>> 
我是在

最后,通过使用
1
更改
nchannels
sampwidth
的值。我得到了一个与原始文件相同的音频

nchannels = 1
sampwidth = 1
framerate = 8000
nframes = 1
Python2下测试,发现一个错误
UnicodeDecodeError:“utf-8”编解码器无法解码位置4中的字节0x95:Python3上的无效开始字节

>>> 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)
>>> 

我也遇到了同样的问题。我的问题是,与原始版本相比,输出的音调较低。我设法对原始音频进行反向工程,分别使用getnframes()getframerate()getsampwidth()获得nframesgetframerate()getsampwidth()。最后,我设法调整采样频率/帧速率,以某种方式带来完美的音调

调整在某个偏移频率下变得比原始频率更完美。该矿以原始采样器的十六分之一的偏移量运转良好

i、 e

OffsetFrequency=OriginalFrequency/16


Frequency=OriginalFrequency+OffsetFrequency

是否与django相关?是。我正在使用django 1.9将音频blob转换为wav文件。我已尝试过,但无法获得相同的原始音频:/