Я прочитал всю документацию шесть раз, но не понимаю, как отправить аудиофайл в IBM Watson Speech-to-Text с узла. Я надеюсь использовать SDK вместо отправки HTTP-запроса с узлом request-promise
Node.
Вот что я хочу сделать:
const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1');
const { IamAuthenticator } = require('ibm-watson/auth');
const speechToText = new SpeechToTextV1({
authenticator: new IamAuthenticator({
apikey: 'my-api-key',
}),
url: 'my-service-endpoint',
});
var params = {
objectMode: true,
contentType: 'audio/octet-stream',
model: 'en-US_BroadbandModel',
keywords: ['colorado', 'tornado', 'tornadoes'],
keywordsThreshold: 0.5,
maxAlternatives: 3
};
speechToText.recognize(params, downloadURL)
.then(function(response) {
// do something with the response object
})
.catch(function(error) {
console.error(error);
});
У меня есть мой аудиофайл в хранилище Firebase, с downloadURL
. Формат файла octet-stream
. Я хочу отправить аудиофайл в Speech-to-Text и получить обещание с объектом ответа.
Должен ли я использовать fs.readFileSyn c (fileName) для отправки файл или fs.createReadStream для отправки потока вместо файла? Примерно так:
const audioFile = fs.readFileSync('gs://my-bucket/my-file');
speechToText.recognize(params, audioFile)
.then(function(response) {
// do something with the response object
})
.catch(function(error) {
console.error(error);
});
Я пытался использовать WebSockets в AngularJS, но соединение было ненадежным, и он использовал аутентификацию имени пользователя / пароля для предоставления токена. Я пытался настроить WebSockets с аутентификацией IAM, но не мог понять, как получить токен. Похоже, что запись звука должна быть более надежной, сохранить ее в Firebase Storage, а затем отправить файл в Speech-to-Text с узла (Firebase Cloud Functions).
Файлы небольшие (несколько секунд), поэтому синхронного доступа должно быть достаточно.