2016-12-17 84 views
0

我正在使用npm模块与IBM的Watson一起对文本进行演讲。我在这里使用这个软件包:https://github.com/watson-developer-cloud/speech-javascript-sdkIBM Watson Speech to Text API with node。如何输出到DOM?

我可以认证好,但除此之外没有任何反应。我想从响应中获取文本并将其插入到DOM中。我尝试了下面的尝试,但没有得到任何反馈。

WatsonSpeech.SpeechToText.recognizeMicrophone({token: token, keepmic: true, ouputElement: "body"}).promise().then(function() { 
    console.log("talking"); 
    }) 

文档说这种方法如下:

过去了,如果options.outputElement 设置为WritableElementStream其他选项。

而且

管道结果通过默认一个FormatStream,设置options.format =假>禁用。

我倒觉得 WatsonSpeech.SpeechToText.recognizeMicrophone 将需要一个回调函数,这样我就可以处理响应,并把我的DOM插入,但我不明白这一点。另外,我不是一个真正的JS家伙,所以我不知道这个承诺是什么。

回答

1

“从零到认知”的第3章恰好应用了这段代码。

https://github.com/rddill-IBM/ZeroToCognitive

我建议你看看他在YouTube上的经验教训,但这里是我发现的代码。

function initPage() 
{ 
    var _mic = $('#microphone'); var _stop = $("#stop"); 
_mic.addClass("mic_enabled"); 
_stop.addClass("mic_disabled"); 

    _mic.on("click", function() 
    { 
     var _className = this.className; 
     if(this.className == "mic_enabled") 
     { 
     _mic.addClass("mic_disabled"); 
    _mic.removeClass("mic_enabled"); 
    _stop.addClass("mic_enabled"); 
    _stop.removeClass("mic_disabled"); 
    $.when($.get('/api/speech-to-text/token')).done(
     function (token) { 
     stream = WatsonSpeech.SpeechToText.recognizeMicrophone({ 
      token: token, 
      outputElement: '#speech' // CSS selector or DOM Element 
     }); 
     stream.on('error', function(err) { console.log(err); }); 
     }); 
    } 
    }); 

    _stop.on("click", function() { 
     console.log("Stopping text-to-speech service..."); 
     if (stream != undefined) {stream.stop(); } 
     _mic.addClass("mic_enabled"); 
     _mic.removeClass("mic_disabled"); 
     _stop.addClass("mic_disabled"); 
     _stop.removeClass("mic_enabled"); 
    }); 

}