如何获得从Google Speech对Text API的有效响应?

时间:2019-06-14 18:32:25

标签: javascript google-api google-speech-api google-apis-explorer

我正在通过笔记本电脑的麦克风录制用户的音频,并尝试使用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);
        }

0 个答案:

没有答案