var vosk = require("vosk");
const fs = require("fs");
const { spawn } = require("child_process");
const MODEL_PATH = "../../iobroker-data/files/vosk-model-small-ru-0.15/"
const FILE_NAME = "rtsp://10.255.200.186:554/user=admin_password=F1n0y0Eu_channel=1_stream=1.sdp?real_stream"
const SAMPLE_RATE = 16000
const BUFFER_SIZE = 4000
console.log('start');
vosk.setLogLevel(-1);
const model = new vosk.Model(MODEL_PATH);
const rec = new vosk.Recognizer({model: model, sampleRate: SAMPLE_RATE});
const ffmpeg_run = spawn('ffmpeg', ['-loglevel', 'quiet', '-i', FILE_NAME,
'-ar', String(SAMPLE_RATE) ,'-vn', '-ac', '1',
'-f', 's16le', '-bufsize', String(BUFFER_SIZE) , '-']);
ffmpeg_run.stdout.on('data', (stdout) => {
if (rec.acceptWaveform(stdout))
if (rec.result().text!="") { log(rec.result().text);
setState('text2command.0.text',rec.result().text);}
});
onStop(function (callback) {
ffmpeg_run.kill();
rec.free();
console.log('stop');
}, 2000);