Google Speech To Text получает данные в неправильном порядке - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь использовать 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, а затем аудио отправляется фрагментом данных, поэтому я непонять, почему это считается нарушенным.

Если у вас есть идея или решение, это было бы здорово!

...