2017-02-17 12 views
0

클라이언트 측에서 blob audio (wav) 파일을 보내고 있습니다. 서버 측에서 blob 파일을 오디오 wav 파일로 변환하려고합니다. 나는 다음과 같은 한 :blob 오디오 django에서 wav 파일 만들기

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

내가 블롭의 변환은 JPEG 파일에 BLOB 이미지를 변환과 유사 할 것이라고 생각하지만 가정에서 매우 정확. 그것은 작동하지 않았다; 오류 : "오류 : 샘플 너비가 지정되지 않았습니다." 나는 setsampwidth()를 사용하고 1과 4 사이의 임의의 숫자를 던졌다. (왜 wave.py 소스 파일을보고 나서 바이트가 1에서 4 사이에 있어야하는지 모르겠다.) 그 후 또 다른 오류가 발생합니다 - "오류 : 샘플링 속도가 지정되지 않았습니다." 샘플링 속도는 어떻게 지정합니까?

setnchannels(), setsampwidth() 메소드의 기능은 무엇입니까? 블롭에서 wav 파일을 생성하는 "쉬운"방법이 있습니까?

+0

는 장고 관련이? –

+0

예. 오디오 blob을 wav 파일로 변환하기 위해 장고 1.9를 사용하고 있습니다. – alienboy

답변

0

이전에, 내가 전에 그것을 할 수 없다 ..하지만 결코 내 테스트에서 다음이 스크립트는 .. 나를 위해 잘 을 일한다 (그러나 오디오 출력은 원본 파일과 같은 동일하지 않습니다).

>>> 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으로 nchannelssampwidth 값을 변경하여, 최종적 https://stackoverflow.com/a/3637480/6396981

에서이 방법을 발견했다. 원본 파일과 동일한 오디오를 얻었습니다.

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.