2016-12-17 29 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"); 
    }); 

}