MediaRecorder
API와 Google STT가 모두 지원하는 오디오 포맷을 사용하는 것이 가장 좋은 해결책입니다. 현재 MediaRecorder
API는 대부분의 브라우저에서 WebM
형식의 오디오를 기본적으로 지원하며, Google STT는 WEBM_OPUS
포맷을 지원합니다. 따라서 WebM
포맷을 사용하는 것이 이상적입니다.
클라이언트 측 코드 변경
클라이언트 측에서 MediaRecorder
를 사용하여 오디오를 녹음할 때, 특별한 포맷 변경이 필요하지 않습니다. 대부분의 브라우저에서 MediaRecorder
는 기본적으로 WebM
포맷으로 오디오를 녹음합니다. 다음은 MediaRecorder
를 사용하는 기본적인 예시 코드입니다:
function startRecording() {
navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(function(stream) {
const mediaRecorder = new MediaRecorder(stream, { mimeType: ‘audio/webm’ });
mediaRecorder.start();
const audioChunks = [];
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
mediaRecorder.addEventListener("stop", () => {
const audioBlob = new Blob(audioChunks, { 'type' : 'audio/webm' });
sendAudioToSpeechToText(audioBlob);
});
// 녹음 시간 설정
setTimeout(() => {
mediaRecorder.stop();
}, 15000);
});
}
서버 측 PHP 코드 변경
서버 측에서는 Google STT API 요청을 보낼 때 WEBM_OPUS
포맷으로 설정해야 합니다. 다음은 수정된 PHP 코드입니다:
$data = array( “config” => array( “encoding” => “WEBM_OPUS”, “languageCode” => “en-US” ), “audio” => array(“content” => base64_encode($audio_content)) );