Я использую пакет Google nodejs-speech для использования longRunningRecognize
конечной точки/функции в Google Speech API. .
Я использовал как v1
, так и v1p1beta
и столкнулся с ошибкой с более длинными файлами. (48 минут - это столько, сколько я пробовал, и 15 минут вызывают ту же проблему, а 3 минуты - нет). Я пробовал и шаблон обещания, и разделение запроса на две части: одну для запуска процесса longRunningRecognize, а другую для проверки результатов после ожидания. Ошибка показана ниже примеров кода для обоих.
Пример обещанной версии запроса:
import speech from '@google-cloud/speech';
const client = new speech.v1p1beta1.SpeechClient();
const audio = {
uri: 'gs://my-bucket/file.m4a'
};
const config = {
encoding: 'AMR_WB',
sampleRateHertz: 16000,
languageCode: 'en-US',
enableWordTimeOffsets: true,
enableSpeakerDiarization: true
};
const request = {
audio,
config
};
client.longRunningRecognize(request)
.then(data => {
const operation = data[0];
return operation.promise();
})
.then(data => {
const response = data[0];
const results = response.results;
const transcription = results
.filter(result => result.alternatives)
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(transcription);
})
.catch(error => {
console.error(error);
});
(С тех пор я закрыл вкладку с результатами, но я думаю, что это вернуло объект ошибки, который только что сказал { error: { code: 13 } }
, что соответствует приведенной ниже, более описательной ошибке).
Отдельно я пробовал версию, в которой вместо цепочки обещаний для получения окончательного результата транскрипции я собираю name
из операции и делаю отдельный запрос для получения результата.
Вот этот код запроса:
... // Skipping setup
client.longRunningRecognize(request)
.then(data => {
const operation = data[0];
console.log(operation.latestResponse.name);
})
.catch(error => {
console.error(error);
});
Когда я попадаю в соответствующую конечную точку (https://speech.googleapis.com/v1p1beta1/operations/81703347042341321989?key=ABCD12345
) до того, как она успела обработаться, я получаю следующее:
{
"name": "81703347042341321989",
"metadata": {
"@type": "type.googleapis.com/google.cloud.speech.v1p1beta1.LongRunningRecognizeMetadata",
"startTime": "2018-08-16T19:33:26.166942Z",
"lastUpdateTime": "2018-08-16T19:41:31.456861Z"
}
}
Однако после полной обработки я столкнулся с этим:
{
"name": "81703347042341321989",
"metadata": {
"@type": "type.googleapis.com/google.cloud.speech.v1p1beta1.LongRunningRecognizeMetadata",
"progressPercent": 100,
"startTime": "2018-08-16T17:20:28.772208Z",
"lastUpdateTime": "2018-08-16T17:44:40.868144Z"
},
"done": true,
"error": {
"code": 13,
"message": "Server unavailable, please try again later."
}
}
Я пробовал с более короткими аудиофайлами (3 минуты, тот же формат и кодировка), и оба вышеуказанных процесса работали.
Есть идеи, что происходит?