2015-01-20 7 views
2

저는 파이썬과 자바 스크립트를 사용하여 클라이언트 - 서버 응용 프로그램을 만들고 있습니다. 프론트 엔드에서 recorder.js를 사용하여 오디오를 녹음하고 있습니다. 고정 된 간격 후에 exportWav()를 사용하여 오디오 파일을 서버로 보냅니다. 백엔드에서 이제 더 큰 오디오 파일을 만들기 위해이 파일들을 연결해야합니다.어떻게 파이썬에서 wav 파일 (recorder.js를 사용하여 생성)을 결합합니까?

나는 this question을 보았지만 실제로는 .wav 파일이 없으며 exportWav에서 반환 된 모양 만 있습니다.

또한 app 엔진을 사용 중이므로 출력을 wav 파일에 쓸 수 없습니다. 데이터 저장소에 저장할 수있는 또 다른 audioblob을 만들어야합니다.

아이디어가 있으십니까?

답변

1

각 세그먼트는 wav 파일의 완전한 이진 데이터입니까? wav를 연결하려면 일종의 형식 인식 라이브러리를 사용해야합니다. 선택한 구현은 당신에게 달려 있지만, 물론 파이썬에 있어야합니다. 반면에 Compute Engine 인스턴스를 사용하면 wav를 연결하는 바이너리를 실행하고 cloud storage client library을 사용하여 해당 wav 파일을 궁극적으로 버킷에 넣고 나중에 임시 파일을 정리할 수 있습니다.

단일 wav의 바이너리 세그먼트 인 경우 데이터를 전송하고 클라우드 저장소 클라이언트 라이브러리를 사용하여 관련 클라우드 저장소 BLOB를 열어 쓰기 작업을 수행하고 "새 파일의 끝에 새 부분을 작성하십시오 ".

exportWav에 의해 반환되는 내용을 스스로 이해해야한다는 사실이 실제로 나타납니다.

데이터 저장소에 BLOB 속성을 사용하도록 설정 한 경우 물론 the relevant documentation for storing blobs in datastore을 찾아보고 개체를 "업데이트"하거나 해당 속성에 "연결"할 수 없음을 유의하십시오. 오늘 wav를 넣고 3 달 안에 concat에 연결하려면 전체 엔티티와 얼룩을 잡고 삭제하고 새로운 부분을 메모리에 연결 한 다음 다시 넣어야합니다.

+0

답변 해 주셔서 감사합니다. exportWav()가 완전한 wav 파일을 생성하는 것이 확실합니다. 그래서 앱 엔진과 호환되는 형식 인식 파이썬 라이브러리의 일부 이름을 도와 줄 수 있습니까? 또는 오디오 클라이언트 쪽을 기록하고 서버로 스트리밍하는 더 좋은 방법이 있습니까? – vipluv

+0

[pydub] (http://pydub.com/) 또는 python [wave] (http://stackoverflow.com/questions/12649465/linux-and-python-combining-multiple-wave-files-home.html)을 확인하십시오. to-one-wave-file) 모듈로 구성됩니다. 앱 엔진에서 실행되는지 여부를 결정해야합니다. "Compute Engine"에 대한 원래 답변에서 보낸 링크를 따라 가상 Linux (또는 기타) 상자에서 원하는 바이너리를 실행할 수있는 VPS와 유사한 서비스에 대해 자세히 알아보십시오. App Engine에서 파이썬으로 작업 할 수없는 경우 App Engine을 사용하여 App 및 Compute Engine 인스턴스를 처리하여 wav를 처리 할 수 ​​있습니다. – Nick

+0

사실, 특히 App Engine의 python이 C 파일을 허용하지 않기 때문에 오디오를 처리하는 데 Python을 사용하지 않는 것이 좋습니다. 이런 식으로 원시 오디오 데이터를 처리하는 것은 많은 비용이 듭니다. wav 파일을 처리하기 위해 GCE (Google Compute Engine) 인스턴스에서 실행되는 프로그램을 사용하는 것이 좋습니다. [Compute Engine API] (https://cloud.google.com/compute/docs/reference/latest/#Instances)를 사용하여 인스턴스를 모니터링하고 파일을 처리해야하는 필요성에 따라 인스턴스를 시작하고 중지 할 수 있습니다. 유휴 상태로 유지하지 마십시오. – Nick