嗨,我正在使用Watson语音文本,一切顺利,我设置了超时,然后打印我说的。我的下一个目标是实时解析我在说什么,例如,当我说“停止”时,我会停止识别流。
代码是:
const recognizeStream = speechToText.createRecognizeStream({
content_type: 'audio/wav',
});
const micInstance = mic({
channels: 2,
debug: true,
rate: '44100',
});
const wavStream = new wav.Writer({
channels: 2,
sampleRate: 44100
});
const micInputStream = micInstance.getAudioStream();
micInputStream.on('data', (_data) => {
console.log('Recieve Input Stream: ' + _data.length);
});
micInputStream.on('error', (err) => {
console.log('Error in Input Stream: ' + err);
});
micInputStream.on('startComplete', () => {
console.log('Got SIGNAL startComplete');
setTimeout(() => {
micInstance.stop();
}, 5000);
});
micInputStream.on('silence', () => {
console.log('Got SIGNAL silence');
});
micInputStream.on('processExitComplete', () => {
console.log('Got SIGNAL processExitComplete');
});
micInputStream.pipe(wavStream);
wavStream.pipe(recognizeStream);
// process.stdin.resume();
recognizeStream.on('end', () => {
process.exit();
});
recognizeStream.on('data', (data) => {
console.log('data: ', data.toString());
});
micInstance.start();
这可能吗?
答案 0 :(得分:0)
您将在此处遇到的问题是延迟。即。你说'停止'和你的应用程序意识到已经请求'停止'并关闭流之间的时间间隔。
当你说“停止”时,必须将流的一部分转移到云中的服务;该服务在“停止”之前,期间和之后发出的语音上执行语音操作。该服务将转录发送回应用程序。该应用程序意识到已经请求“停止”。与此同时,应用程序继续将音频流式传输到服务。