У меня есть простой код JS, работающий в xampp apache.
var rawFile;
var allText;
var byteArray = [];
rawFile = new XMLHttpRequest();
rawFile.open("GET", "brooklyn.flac", false);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
allText = rawFile.responseText;
//alert(allText);
}
}
if (rawFile.status != 200) return byteArray;
for (var i = 0; i < rawFile.responseText.length; ++i) {
byteArray.push(rawFile.responseText.charCodeAt(i) & 0xff)
}
}
rawFile.send(null);
function send(){
var oAjaxReq = new XMLHttpRequest();
var payload = {
config:{
encoding: "FLAC",
sampleRateHertz: 16000,
languageCode:"en-US"
},
audio: {
content: rawFile
}
};
oAjaxReq.open("post", "https://speech.googleapis.com/v1/speech:recognize?key=???", true);
oAjaxReq.setRequestHeader("Content-Type", "application/json");
//object ot json
const jsonPayload = JSON.stringify(payload);
//Length of the jsonPayload
const payLoadLength= jsonPayload.length;
oAjaxReq.setRequestHeader("Content-Length", payLoadLength);
oAjaxReq.withCredentials = true;
//Send Json to Google Cloud Speech Service
oAjaxReq.send(jsonPayload);
}
Я пытаюсь использовать Google Cloud Speech API. Я загружаю локальный аудиофайл с именем "brooklyn.flac", который я загрузил с "https://storage.googleapis.com/cloud-samples-tests/speech/brooklyn.flac "через xmlHTTPRequest.
Однако я всегда получаю следующую ошибку:
{
"error": {
"code": 500,
"message": "Internal error encountered.",
"status": "INTERNAL"
}
}
Когда я меняю звуковую часть объекта payLoad с content: rawFile на uri: gs: //cloud-samples-tests/speech/brooklyn.flac, он работает правильно.
Ошибка из-за "rawFile"? Если да, как мне правильно загрузить этот локальный файл, чтобы отправить его в облачную службу?