Google Cloud Speech to Text Документация диктует, что вы можете получить к нему доступ:
const client = new speech.SpeechClient();
const [operation] = await client.longRunningRecognize({
config: {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US'
},
audio: {
uri: `gs://${bucket}/${name}`
}
});
const [response] = await operation.promise();
response.results.forEach(result => {
console.log(`Transcription: ${result.alternatives[0].transcript}`);
});
Теперь я хочу запустить этот код в облачной функции Firebase. К сожалению, облачные функции работают на версии Node, которая еще не поддерживает функции async
и await
.
Некоторые вещи, которые я пробовал:
- Попытка TypeScript, который поддерживает
async
и await
: столкнулся с кучей проблем с некоторыми другими API, которые я использую.
- Обновление всех моих функций до Node 8 (бета-версия), который поддерживает
async
и await
: опять-таки, со стороны Firebase возникло немало ошибок со стороны Firebase.
- «Перевод» кода вручную (это даже вещь?): Я пытался обработать код, чтобы ожидать обещание.
Это тоже не сработало, вот как это выглядит:
exports.onStorageObjectFinalize = functions.storage.object()
.onFinalize((object) => {
const client = new speech.SpeechClient();
return client.longRunningRecognize({
config: {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US'
},
audio: {
uri: `gs://${object.bucket}/${object.name}`
}
})
.then(r1 => {
const [operations] = r1;
return operations.promise();
})
.then(r2 => {
const [response] = r2;
// response.results...
return true;
});
});
Редактировать: Когда запускается вышеуказанная функция, она говорит, что operations.promise()
нет. Фактически, после просмотра всего объекта operations
структура не выглядит как ее функция. Я обнаружил, что в operations._callOptions
есть свойство promise
, поэтому попытался вернуть operations._callOptions.promise()
, но получил странную ошибку: TypeError: #<CallSettings> is not a promise at client.longRunningRecognize.then.r1
.
Я испортил код перевода или это не сработает?
Любые другие вещи, которые я могу попробовать, или TypeScript и Node 8 мои единственные два варианта здесь?
Спасибо, высоко ценится.