Annyang 将语音转换为文本

Annyang converting speech to text

我正在尝试使用 annyang 将语音转换为文本,但 运行 遇到了一些问题。它有效,但还有一些事情还没有。首先,我想知道如何将用户所说的任何内容传递到警报功能中。接下来,我想知道如何在用户说完后结束annyang功能。最后,我想知道如何防止允许和禁止麦克风提示一次又一次出现。

<script>
if (annyang) {

  var commands = {
    'Hello': function() {
      alert("Success");
    }
  };

  annyang.addCommands(commands);

}
</script>

<input type = 'submit' value = 'listen' onclick = "annyang.start();">

I would like to know how would I be able to pass whatever the user said, into the alert function.

你可以做类似

<script>
if (annyang) {

  var commands = {
    'Hello :variable': function(variable) {
      alert(variable);
    }
  };

  annyang.addCommands(commands);

}
</script>

variable为字符串,webspeech-api已识别。

Next, I would like to know how to end the annyang function when the user finished speaking.

设置 continuous 为假。 Annyang 会在用户说完后自动停止识别。

annyang.start({ autoRestart: false, continuous: false });

您还可以添加一个回调函数,当语音识别完成时,annyang 将调用该函数:

annyang.addCallback('end', function () { // your code here});

And finally, I'd like to know how to keep the allow and disallow microphone prompt from appearing again and again once it appeared once.

防止这种情况发生的唯一方法是通过 https 而不是 http 提供网站。没有其他方法可以实现。也会提高识别速度。

而不是使用 annyang 转换为文本,您可以使用原始 google 语音识别演示

来测试自己

Original Demo

查看上面的源代码,你会很容易地用 SpeechRecognition 做你想做的事

我推荐这个,因为annyang更像是一个语音控制插件。另一方面,如果您想为此使用库,则可以使用 Artyom.js

Artyom 提供了一个简单的 "dictation" 对象来快速将语音转换为文本:

var settings = {
    continuous:true, // Don't stop never because i have https connection
    onResult:function(text){
        console.log(text);
    },
    onStart:function(){
        console.log("Dictation started by the user");
    },
    onEnd:function(){
        alert("Dictation stopped by the user");
    }
};

var UserDictation = artyom.newDictation(settings);

// Start listening
UserDictation.start();

// To stop
//UserDictation.stop();

需要在initialize方法中提供语言。

var anything = function(anything) {
    alert(anything);
};
var commands = {
    '*anything': anything
};

这行得通, 它也不会提醒定义的命令