2017-08-09 79 views
1

我正在瀏覽器或控制檯中看到單詞副本,但我沒有看到諸如{'state': 'listening'}之類的消息。更重要的是,我沒有看到如{"results": [{"alternatives": [{"transcript": "name the mayflower "}],"final": true}],"result_index": 0}的結果。IBM Watson語音到文本JavaScript SDK:如何獲取消息?

我讀了RecognizeStream documentation,並試圖將此代碼:

stream.on('message', function(message) { 
    console.log(message); 
    }); 

,但不起作用。我在truefalse都試過object_mode,但輸出結果是一樣的。

下面是我使用的全碼:

document.querySelector('#button').onclick = function() { 

    var stream = WatsonSpeech.SpeechToText.recognizeMicrophone({ 
    token: token, 
    model: 'en-US_BroadbandModel', 
    keywords: ["Colorado"], 
    keywords_threshold: 0.50, 
    word_confidence: true, 
    // outputElement: '#output' // send text to browser instead of console 
    object_mode: false 
    }); 

    stream.setEncoding('utf8'); // get text instead of Buffers for on data events 

    stream.on('data', function(data) { // send text to console instead of browser 
    console.log(data); 
    }); 

    stream.on('error', function(err) { 
    console.log(err); 
    }); 

    document.querySelector('#stop').onclick = function() { 
    stream.stop(); 
    }; 
}; 

回答

2

recognizeMicrophone()方法是一個幫手鍊結合在一起的多個流。 message事件在中間的其中一個流上觸發。但是,您可以通過stream.recognizeStream訪問該鏈接 - 它始終與鏈中的最後一個鏈接,以支持這種情況。

所以,在你的代碼,它應該是這個樣子:

stream.recognizeStream.on('message', function(frame, data) { 
    console.log('message', frame, data) 
}); 

然而,這主要是沒有進行調試。如果您設置objectMode: true請勿請致電stream.setEncoding('utf8');,結果JSON應在data事件中發出。

(這是沃森的Node.js SDK有些不同,如果你熟悉它的行爲。有計劃統一兩個,但從來沒有足夠的時間...)

+0

謝謝,成功了!你能提出我的問題嗎? –

相關問題