语音识别,Node JS



我目前正在开发一个工具,由于连接到不同的 API,我可以阅读所有通知。

它工作得很好,但现在我想放一些声音命令来做一些动作。

就像当软件说"一封来自鲍勃的邮件"时,我想说"阅读它"或"存档它"。

我的软件通过节点服务器运行,目前我没有任何浏览器实现,但它可以是一个计划。

节点JS中启用语音转文本的最佳方法是什么?

我已经看到了很多线程,但主要是它使用浏览器,如果可能的话,我想在开始时避免这种情况。可能吗?

另一个问题是某些软件需要输入 wav 文件。我没有任何文件,我只是希望我的软件始终听我说的话,以便在我说命令时做出反应。

您有任何关于我如何做到这一点的信息吗?

干杯

这里的两个答案都已经很好了,但我认为你正在寻找的是Sonus。它为您处理音频编码和流媒体。它总是离线收听可自定义的热词(如Siri或Alexa)。还可以以编程方式触发侦听。结合像 比如 说 这样的模块,你可以通过执行以下操作来启用你的示例:

say.speak('One mail from Bob', function(err) {
  Sonus.trigger(sonus, 1) //start listening
});

您还可以使用不同的热词以不同的方式处理后续识别的语音。例如:
"通知。最近"和"发送消息。你今天好吗"

把它扔到Pi或CHIP上,在你的桌子上有一个麦克风,你有一个私人助理来阅读你的通知并对命令做出反应。

简单的例子:
https://twitter.com/_evnc/status/811290460174041090

有点复杂的东西:
https://youtu.be/pm0F_WNoe9k?t=20s

完整文档:
https://github.com/evancohen/sonus/blob/master/docs/API.md

免责声明:这是我的项目:)

要识别一些命令而不将它们流式传输到服务器,您可以使用node-pocketsphinx模块。在 NPM 中可用。

在 continuos 流中识别少量命令的代码应如下所示:

var fs = require('fs');
var ps = require('pocketsphinx').ps;
modeldir = "../../pocketsphinx/model/en-us/"
var config = new ps.Decoder.defaultConfig();
config.setString("-hmm", modeldir + "en-us");
config.setString("-dict", modeldir + "cmudict-en-us.dict");
config.setString("-kws", "keyword list");
var decoder = new ps.Decoder(config);
fs.readFile("../../pocketsphinx/test/data/goforward.raw", function(err, data) {
    if (err) throw err;
    decoder.startUtt();
    decoder.processRaw(data, false, false);
    decoder.endUtt();
    console.log(decoder.hyp())
});

您不必readFile只需从麦克风读取数据并将其传递给识别器即可。要检测的关键字列表应如下所示:

read it /1e-20/
archive it /1e-20/
有关使用口袋狮身人面像识别的

更多详细信息,请参阅语音中的关键字识别和使用口袋狮身人面像识别多个关键字

要将音频数据放入您的应用程序中,您可以尝试像麦克风这样的模块,我没有使用它看起来很有希望。这可能是避免使用浏览器进行音频输入的一种方法。

要进行实际的语音识别,您可以使用 IBM Watson Developer Cloud 的语音转文本服务。此服务支持 websocket 接口,因此您可以拥有完整的双工服务,将音频数据管道传输到云并取回生成的转录。您可能需要考虑实现一种形式的发病检测,以避免向服务传输大量(相对)静默 - 这样,您就可以保持在免费层内。

还有一个文本到语音转换服务,但听起来您已经为工具的该部分提供了解决方案。

披露:我是IBM Watson的布道者。

相关内容

  • 没有找到相关文章

最新更新