用于语音命令的 Watson Wake Word

Watson Wake Word for voice commands

我正在考虑使用 Watson 的 Speech to Text 软件来帮助驱动我们产品的语音命令。

我见过的所有示例都要求用户在发出命令之前按下按钮。但是,我不想让用户按下按钮,而是希望使用 "wake word" 或关键字来向我们的产品发出命令开始的信号。也就是说,我不想持续将声音流式传输到 Watson 的 Speech To Text 软件,但我正在寻找一种方法让用户输入关键字或唤醒词以开始发送声音,然后让 Watson 的 Speech To Text return 它听到的命令的文本。

例如,"OK, Google" 开始向 Google 发送声音以进行语音转文本。

IBM 是否提供了一种方法来创建我自己的 "OK, Google" 关键字,而不必将我的应用程序可能听到的所有内容发送到 Watson 的 Speech to Text?

目前 Watson Speech to Text 服务不支持单独的 "wake word" 检测模块。为此,我们当前的客户将使用一些边缘设备或服务来处理。像 Snowboy (https://snowboy.kitt.ai/) 或类似的东西。

不确定 Watson 是否支持唤醒词。 如果您计划在 PC、平板电脑或 phone 上运行的软件应用程序中集成语音,您可以实施唤醒词。您可以使用 Microsoft 语音识别引擎或 Sphinx 来实现它。

这是使用 Microsoft 语音引擎的示例代码。

SpeechRecognitionEngine sr = new SpeechRecognitionEngine();
 sr.SetInputToDefaultAudioDevice();
 // Create a grammar that recognizes Wake-up word e.g. your app name
 Choices wakeWord = new Choices();
 wakeWord.Add("Cooper");

 GrammarBuilder gb = new GrammarBuilder();
 gb.Append(wakeWord);
 Grammar g = new Grammar(gb);

 sr.LoadGrammarAsync(g);
 sr.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sr_SpeechRecognized);

您的应用程序将在说出唤醒词 "Cooper" 后被激活。在事件处理程序代码中,您可以 capture/record 发出声音并将其发送给 Watson。