Watson IBM语音到文本:没有临时结果(Node.JS)

Watson IBM语音到文本:没有临时结果(Node.JS),node.js,speech-recognition,speech-to-text,ibm-watson,Node.js,Speech Recognition,Speech To Text,Ibm Watson,我正在尝试使用node.js获取临时结果 var params = { audio: fs.createReadStream('./out.wav'), content_type: 'audio/l16;rate=16000', continuous: true, interim_results: true, word_confidence: true }; 我使用speech\u to\u text.createSession创建会话,然后尝试启动识别功能: function recogni

我正在尝试使用node.js获取
临时结果

var params = {
audio: fs.createReadStream('./out.wav'),
content_type: 'audio/l16;rate=16000',
continuous: true,
interim_results: true,
word_confidence: true
};
我使用
speech\u to\u text.createSession
创建会话,然后尝试启动
识别功能:

function recognize(params,session_id,cookie_session) {
setInterval(function(){ observe_results(session_id,cookie_session) }, 1000);
speech_to_text.recognize(params, function(err, transcript) {
    if (err) {
        console.log(err);
    }
    else {
        console.log("OK")
        console.log(JSON.stringify(transcript, null, 2));
        fs.writeFile('./transcript.txt', JSON.stringify(transcript), function(err) {if(err){return console.log('err')}});
    }
});}
但我只收到最后一次转录,而没有收到中间结果。
提前感谢您的帮助。

更新:11/4: 从v1.0开始,
watson developer cloud
npm模块支持WebSocket

见:


原始答案
您正在调用
recognize
,而不是
recognizeLive

请参见下面的示例:

var watson = require('watson-developer-cloud'),
  fs = require('fs');

var speechToText = watson.speech_to_text({
 password: '<password>',
 username: '<username>',
 version: 'v1'
});

var noop = function(){};

var observeResult = function(err, transcript) {
  if (err){
    console.log(err);
    return;
  }
  // print the transcript
  console.log(JSON.stringify(transcript, null, 2));
};

speechToText.createSession({}, function(err, session){
  if (err){
    console.log('error:', err);
    return;
  }

  var request = speechToText.recognizeLive({
    content_type: 'audio/l16;rate=44100',
    continuous: true,
    word_confidence: true,
    interim_results: true,
    session_id: session.session_id,
    cookie_session: session.cookie_session }, noop);

  // call observe result to get intermin results
  speechToText.observeResult({
    interim_results: true,
    session_id: session.session_id,
    cookie_session: session.cookie_session }, observeResult);

  // pipe the audio to the request
  // once the stream is consumed it will call request.end()
  fs.createReadStream('audio.wav').pipe(request);
});
var watson=require('watson-developer-cloud'),
fs=要求('fs');
var speechToText=watson.speech\u to\u text({
密码:“”,
用户名:“”,
版本:“v1”
});
var noop=function(){};
var observesult=函数(错误,转录本){
如果(错误){
控制台日志(err);
返回;
}
//打印成绩单
log(JSON.stringify(transcript,null,2));
};
createSession({},函数(err,session){
如果(错误){
log('error:',err);
返回;
}
var request=speechToText.recognizeLive({
内容类型:“音频/l16;速率=44100”,
是的,
自信:真的,
中期结果:正确,
session\u id:session.session\u id,
cookie\u session:session.cookie\u session},noop);
//调用observe result以获取中间结果
speechToText.observer结果({
中期结果:正确,
session\u id:session.session\u id,
cookie_session:session.cookie_session},observer结果);
//通过管道将音频传输到请求
//一旦流被使用,它将调用request.end()
fs.createReadStream('audio.wav').pipe(请求);
});
替换
用户名
密码
,使用此选项


我写了一封信以备将来参考。它还包含使用上述音频时的输出。

更新:11/4: 从v1.0开始,
watson developer cloud
npm模块支持WebSocket

见:


原始答案
您正在调用
recognize
,而不是
recognizeLive

请参见下面的示例:

var watson = require('watson-developer-cloud'),
  fs = require('fs');

var speechToText = watson.speech_to_text({
 password: '<password>',
 username: '<username>',
 version: 'v1'
});

var noop = function(){};

var observeResult = function(err, transcript) {
  if (err){
    console.log(err);
    return;
  }
  // print the transcript
  console.log(JSON.stringify(transcript, null, 2));
};

speechToText.createSession({}, function(err, session){
  if (err){
    console.log('error:', err);
    return;
  }

  var request = speechToText.recognizeLive({
    content_type: 'audio/l16;rate=44100',
    continuous: true,
    word_confidence: true,
    interim_results: true,
    session_id: session.session_id,
    cookie_session: session.cookie_session }, noop);

  // call observe result to get intermin results
  speechToText.observeResult({
    interim_results: true,
    session_id: session.session_id,
    cookie_session: session.cookie_session }, observeResult);

  // pipe the audio to the request
  // once the stream is consumed it will call request.end()
  fs.createReadStream('audio.wav').pipe(request);
});
var watson=require('watson-developer-cloud'),
fs=要求('fs');
var speechToText=watson.speech\u to\u text({
密码:“”,
用户名:“”,
版本:“v1”
});
var noop=function(){};
var observesult=函数(错误,转录本){
如果(错误){
控制台日志(err);
返回;
}
//打印成绩单
log(JSON.stringify(transcript,null,2));
};
createSession({},函数(err,session){
如果(错误){
log('error:',err);
返回;
}
var request=speechToText.recognizeLive({
内容类型:“音频/l16;速率=44100”,
是的,
自信:真的,
中期结果:正确,
session\u id:session.session\u id,
cookie\u session:session.cookie\u session},noop);
//调用observe result以获取中间结果
speechToText.observer结果({
中期结果:正确,
session\u id:session.session\u id,
cookie_session:session.cookie_session},observer结果);
//通过管道将音频传输到请求
//一旦流被使用,它将调用request.end()
fs.createReadStream('audio.wav').pipe(请求);
});
替换
用户名
密码
,使用此选项

我写了一封信以备将来参考。它还包含使用上述音频时的输出