나는 오디오 식별을 위해 자바 스크립트 프론트 엔드, 플라스크 서버 및 마이크로 소프트의인지 서비스를 연결하려고합니다.파이썬 웨이브 오디오 샘플 속도
Microsoft 서버는 오디오 데이터에 특정 매개 변수를 요구합니다. 특히 16000 프레임 속도를 요청합니다.
그러나 창에 브라우저에서
나는 단지 내가 41000에 오디오를 얻을 지금 41000. 을 얻을, 다음과 같이 저장할 수 있습니다 : 오디오는 DICT의 \의 형태로 socketio을 통해 수신audioData = message['audio']
af = wave.open('audioData.wav', 'w')
af.setnchannels(1)
af.setparams((1, 2, 16000, 0, 'NONE', 'Uncompressed'))
af.writeframes(audioData)
af.close()
json 데이터. 아무 것도 변경하지 않고 직접 저장하면 괜찮습니다. 그러나 샘플 속도를 16000으로 변경하면 분명히 왜곡되어 매우 느린 것으로 들리므로 몇 초 동안 오디오가 1 분 정도가됩니다.
어떻게 파이썬 3.4에서 소리가 나는지에 영향을 미치는 오디오 속도를 올바르게 변경합니까?
감사합니다.
편집 : 여기 는 작업 코드 :
with open("audioData_original.wav", 'wb') as of:
of.write(message['audio'])
audioFile = wave.open("audioData_original.wav", 'r')
n_frames = audioFile.getnframes()
audioData = audioFile.readframes(n_frames)
originalRate = audioFile.getframerate()
af = wave.open('audioData.wav', 'w')
af.setnchannels(1)
af.setparams((1, 2, 16000, 0, 'NONE', 'Uncompressed'))
converted = audioop.ratecv(audioData, 2, 1, originalRate, 16000, None)
af.writeframes(converted[0])
af.close()
audioFile.close()
여기 단점은
그 내가 JSON을 통해 mediaRecorder API의 오디오 데이터를 얻을, 그래서 메모리에에도 불구하고 ... 그리고 디스크에 기록한 다음 다시 열어 웨이브 기능을 사용하여 샘플링 속도를 얻을 수 있습니다. 그러나 디스크에 쓰지 않고 어떻게해야합니까? 감사. 내가 새로운 질문을해야한다면, 확실히 할 수 있습니다.
오, 오케이, 내 자신의 후속 질문에 대답 - io.BytesIO 트릭 않았다. – Nix