Я записываю звук пользователя через микрофон ноутбука и пытаюсь преобразовать сказанное в текст с помощью Google Speech-to-Text API.Тем не менее, я продолжаю получать пустой ({}) ответ.
После записи аудио с помощью navigator.getUserMedia я создаю аудио-блоб, а base64 его кодирует, поскольку это то, что API требует для аудио-контента.С параметрами конфигурации ниже, я затем отправляю сообщение в конечную точку распознавания, но получаю пустой ответ.Я не уверен, где я иду не так.
Я уже пробовал другие кодировки (LINEAR16, OGG_OPUS и т. Д.), Но я все еще получаю пустой ответ.
const audioBlob = new Blob(audioChunks, { 'type': 'audio/wav' });
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
//audio.play();
var encodedAudio = btoa(audioUrl); // encode to base 64
console.log(audioBlob);
console.log(audioUrl);
console.log(encodedAudio);
document.getElementById("screen_div").innerHTML += "<audio controls src=\"" + audioUrl + "\"></audio>";
var params = {
"config": {
"encoding":"FLAC",
"sampleRateHertz": 16000,
"audioChannelCount": 1,
"languageCode": "en-US"
},
"audio": {
"content": encodedAudio
}
};
var xhrSpeechToText = new XMLHttpRequest();
xhrSpeechToText.open('POST', 'https://speech.googleapis.com/v1/speech:recognize');
xhrSpeechToText.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhrSpeechToText.setRequestHeader("Content-Type", "application/json");
xhrSpeechToText.send(JSON.stringify(params));
xhrSpeechToText.onload = function() {
var xhrTextResponse = JSON.parse(xhrSpeechToText.response);
console.log(xhrTextResponse);
}