Javascript 如何修复谷歌语音API“;返回空白结果";问题
我看了谷歌的演示并试了一下。想在我的web应用程序中实现它,但它似乎不起作用。我已经用我的麦克风捕获了一个音频块,并像谷歌想要的那样用base64编码。问题是无论我做什么,它都不会作为错误返回,而是返回空。我通过ajax发送数据。下面是一些代码来演示:Javascript 如何修复谷歌语音API“;返回空白结果";问题,javascript,jquery,ajax,google-speech-api,Javascript,Jquery,Ajax,Google Speech Api,我看了谷歌的演示并试了一下。想在我的web应用程序中实现它,但它似乎不起作用。我已经用我的麦克风捕获了一个音频块,并像谷歌想要的那样用base64编码。问题是无论我做什么,它都不会作为错误返回,而是返回空。我通过ajax发送数据。下面是一些代码来演示: navigator.mediaDevices .getUserMedia( // constraints - only audio needed for this app { audio: tru
navigator.mediaDevices
.getUserMedia(
// constraints - only audio needed for this app
{
audio: true
}
)
// Success callback
.then(function(stream) {
console.log(navigator.mediaDevices.getSupportedConstraints());
var mediaRecorder = new MediaRecorder(stream, { sampleRate: 16000 });
var chunks = [];
$(".rec-button")
.mousedown(function() {
console.log("rec start");
$(".rec-button i").addClass("recStart");
mediaRecorder.start();
console.log(mediaRecorder.state);
console.log("recorder started");
})
.mouseup(function() {
console.log("rec end");
$(".rec-button i").removeClass("recStart");
mediaRecorder.stop();
mediaRecorder.ondataavailable = function(e) {
chunks.push(e.data);
var audio = document.getElementById("player");
var blob = new Blob(chunks, { type: "audio/ogg; codecs=opus" });
var player = document.getElementById("player");
player.src = URL.createObjectURL(blob);
chunks = [];
console.log(blob);
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
var base64 = reader.result;
base64 = base64.split(",")[1];
var jsonRec = {
audio: {
content: base64
},
config: {
encoding: "OGG_OPUS",
sampleRateHertz: 48000,
languageCode: "en-US",
audioChannelCount: 2,
enableSeparateRecognitionPerChannel: true,
}
};
$.ajax({
url:
"https://speech.googleapis.com/v1/speech:recognize?key=**my_api_key**",
method: "POST",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(jsonRec),
success: function(response) {
console.log(response);
},
error: function(err) {
console.log(err);
}
});
};
console.log(mediaRecorder.state);
console.log("recorder stopped");
};
});
})
// Error callback
.catch(function(err) {
console.log("The following getUserMedia error occured: " + err);
});
我可以让音频在标签中播放,所以我不使用似乎有问题的东西。我的回答总是{}。我想要它发送的是我演讲稿的抄本