Я пытаюсь использовать Google Speech-To-Text API (через пакет @ google-cloud / speech npm) для транскрибирования некоторого звука с микрофона браузера (должен быть кросс-браузерным)поэтому я не могу использовать Chrome API).
Я создаю streamingRecognize
с необходимыми параметрами, а затем помещаю некоторые данные в этот поток, но ответ API следующий: «Неправильные данныеПолучено. Отправьте ровно одну конфигурацию, а затем аудиоданные ".
Вот код:
// Creates a client
const gcpClient = new gcpSpeech.SpeechClient();
const encoding = 'LINEAR16';
const sampleRateHertz = 16000;
const languageCode = 'en-US';
const request = {
config: {
encoding: encoding,
sampleRateHertz: sampleRateHertz,
languageCode: languageCode,
},
interimResults: true
};
const recognizeStream = gcpClient.streamingRecognize(request);
recognizeStream
.on('data', (data) => {
console.log("onDataThing", data);
process.stdout.write(
data.results[0] && data.results[0].alternatives[0]
? `Transcription: ${data.results[0].alternatives[0].transcript}\n`
: `\n\nReached transcription time limit, press Ctrl+C\n`
)
})
.on('error', (error) => {
console.log("error", error);
});
io.on('connection', (socket) => {
socket.on('audiodata', (data) => {
console.log("audiodata", data);
recognizeStream.write(data);
});
});
Как видите, я получаю аудио из браузера и отправляю его черезсокет (использующий socket.io) для бэкэнда для распознавания потоков.
Конфигурация отправляется при создании потока с streamingRecognize
, а затем аудио отправляется фрагментом данных, поэтому я непонять, почему это считается нарушенным.
Если у вас есть идея или решение, это было бы здорово!