Как выполнить распознавание речи в режиме реального времени |Google Cloud Speech-to-Text - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь транскрибировать звук из моих колонок
Я передаю звук из колонок в файл node.js (https://askubuntu.com/a/850174)

parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor --rate=16000 --channels=1 | node transcribe.js

Это мой transcribe.js

const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

const encoding = 'LINEAR16';
const sampleRateHertz = 16000;
const languageCode = 'en-US';

const request = {
    config: {
        encoding: encoding,
        sampleRateHertz: sampleRateHertz,
        languageCode: languageCode,
    },
    interimResults: false, // If you want interim results, set this to true
};

const recognizeStream = client
    .streamingRecognize(request)
    .on('error', console.error)
    .on('data', data => {
        console.log(
            `Transcription: ${data.results[0].alternatives[0].transcript}`
        );
    });

process.stdin.pipe(recognizeStream);

Но у Google Cloud Speech-to-Text есть предел для распознавания потоковой передачи в ~ 1 мин. Поэтому у меня ошибка "Превышена максимально допустимая длительность потока в 65 секунд."

Как разделитьпоток на куски с тишиной в виде сплиттера или на куски продолжительностью 30 секунд?

1 Ответ

0 голосов
/ 31 января 2019

Мы можем транслировать аудио в утилиту sox, чтобы разделить его на молчание с продолжительностью 0,3 с и не более 55 с

sox -t raw -r 16k -e signed -b 16 -c 1 - ./chunks/output.wav  silence 1 0.3 0.1% 1 0.3 0.1% trim 0 55 : newfile : restart

Теперь мы можем просматривать каталог чанков для новых файлов и транслировать их в Google Cloud Speech.API-интерфейс для текста

...