我正在通过笔记本电脑的麦克风录制用户的音频,并尝试使用Google的语音转文本API将他们所说的内容转换为文本。但是,我一直在返回一个空({})响应。
使用navigator.getUserMedia录制音频后,我创建了一个音频Blob,并对其进行了base64编码,因为这是API要求的音频内容。使用下面的config参数,然后发布到识别端点,但返回空响应。我不确定我要去哪里。
我已经尝试了其他编码(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);
}