0

我正在使用 npm 模块与 IBM 的 Watson 一起进行语音转文本。我在这里使用这个包:https ://github.com/watson-developer-cloud/speech-javascript-sdk 。

我可以很好地进行身份验证,但除此之外什么都没有发生。我想从响应中获取文本并将其插入 DOM。我尝试了以下只是为了尝试一下,但我没有得到任何反馈。

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

文档对此方法说以下内容:

如果设置了 options.outputElement,则传递给 WritableElementStream 的其他选项。

默认情况下通过 FormatStream 管道结果,设置 options.format=false > 禁用。

我认为 WatsonSpeech.SpeechToText.recognizeMicrophone 会采用回调函数,因此我可以处理响应并将其插入到我的 DOM 中,但我无法弄清楚。另外,我不是真正的 JS 人,所以我不知道 promise 的作用。

4

1 回答 1

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");
    });

}

于 2017-05-15T01:47:43.123 回答