diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 30eef07f..8a381b73 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -21,7 +21,7 @@ class TaskGather extends Task { 'speechTimeout', 'timeout', 'say', 'play' ].forEach((k) => this[k] = this.data[k]); - this.timeout = (this.timeout || 5) * 1000; + this.timeout = (this.timeout || 15) * 1000; this.interim = this.partialResultCallback; if (this.data.recognizer) { const recognizer = this.data.recognizer; @@ -266,19 +266,30 @@ class TaskGather extends Task { _onTranscription(cs, ep, evt) { if ('aws' === this.vendor && Array.isArray(evt) && evt.length > 0) evt = evt[0]; if ('microsoft' === this.vendor) { - const nbest = evt.NBest; - const newEvent = { - is_final: evt.RecognitionStatus === 'Success', - alternatives: [ - { - confidence: nbest[0].Confidence, - transcript: nbest[0].Display - } - ] - }; - evt = newEvent; + const final = evt.RecognitionStatus === 'Success'; + if (final) { + const nbest = evt.NBest; + evt = { + is_final: true, + alternatives: [ + { + confidence: nbest[0].Confidence, + transcript: nbest[0].Display + } + ] + }; + } + else { + evt = { + is_final: false, + alternatives: [ + { + transcript: evt.Text + } + ] + }; + } } - this.logger.debug(evt, 'TaskGather:_onTranscription'); if (evt.is_final) this._resolve('speech', evt); else { if (this.bargein && evt.alternatives[0].transcript.split(' ').length >= this.minBargeinWordCount) {