汽车Xamarin语音命令

时间:2017-10-20 15:54:58

标签: xamarin voice-recognition

我正在寻找在Xamarin应用中实施语音命令的最佳方法。 以下是我的要求:

  • 我不需要通过语音启动我的应用。相反,我的用户将通过触摸启动应用程序(因此,当应用程序未运行时,我的应用程序不需要语音识别)
  • 我的应用是客户端/服务器应用,它将始终有效(后端将在上运行)
  • 我的应用程序主要用于汽车(因此请考虑环境噪音)
  • 我的应用程序可以使用多种语言,例如意大利语,西班牙语,法语和英语
  • 我的应用应该使用(最终或类似的)
  • 进行开发
  • 在我的应用中,会有两种语音命令:
    1. 从短名单中选择一个项目:应用程序将显示项目列表,例如"苹果,猕猴桃,香蕉和草莓"并且用户将不得不说出其中一个词。
    2. 更改当前视图。通常,这些语音命令将类似于"取消","确认","更多"和这样的东西



用户,应用和服务器之间的典型交互应为:

  1. 用户说当前视图/活动/页面中的一个可用命令
    • 在这里假设用户完全知道他/她可以使用哪些命令,现在无论他/她如何知道这些命令(他/她只是知道它们)
    • 用户可以在命令前添加一些特殊单词,例如"嘿' appname '"",以获得类似"的命令。嘿' appname',确认"
      • 注意:"嘿' appname '"部分语音命令的唯一目的是允许应用程序知道命令何时开始。应用程序可以始终处于侦听模式,但必须避免将音频流连续发送到服务器以识别命令
  2. 最好的情况是app是否会在本地识别这些命令,而不涉及远程服务器,因为语音命令是预定义的并且在每个视图中是众所周知的。无论如何,应用程序可以将音频波发送到将返回字符串的服务器(在此示例中,返回的文本将是"确认",因为音频是"嘿' appname ',确认")
  3. app将映射使用可用命令识别的文本,并将调用正确的命令
  4. 用户将收到应用的反馈。反馈可能是:
    • 语音反馈(文字转语音)
    • 视觉反馈(屏幕上显示的内容)
    • 以上


  5. 我一直在寻找,但在这种情况下,据我所知,没有办法在本地识别命令的开始(一切都在服务器端通过REST api或客户端)。因此,用户必须在每个语音命令之前按下按钮,我需要避免这种交互。 由于应用程序正在运行,我的用户将他/她的手放在方向盘上,并且每次显示时他/她都不能触摸。不是吗?

    此外,我一直在寻找,但是:

    1. 似乎Cortana Skills仅提供英文版
    2. 实际上,我不需要让Cortana参与启动我的应用
    3. 我没有这些主题的经验,所以,希望我的问题很清楚,一般来说,这对其他新手用户也很有用。


      *更新1 *

      使用语音命令定义(VCD)文件进行语音识别非常接近我所需要的,因为:

      • 它有一种通过命令名称快捷方式
      • 激活命令的方法
      • 它适用于前景(以及背景,即使在我的情况下我也不需要背景)

      不幸的是,此服务仅适用于Windows,因为它使用本地API。也许正确的方法可以基于以下考虑因素:

      • 每个平台都会公开本地语音识别API(Cortana,Siri,Google Now)
      • Xamarin公开了Siri和Google Now apis,并通过C#
      • 提供
      • 创建 facade 组件以通过公共接口公开三种不同的本地语音api将非常有用

      我想知道是否还有其他解决办法。 Cortana作为个人助理,可在Windows,iOS和Android上使用。由于Cortana既可以使用本地api,也可以使用远程服务(Cortana Skills),Cortana是正确的方法吗? Cortana是否支持多种语言(或者至少支持路线图)? 所以,这里只是一些想法。如果您有其他想法或建议,请在此处添加。感谢

0 个答案:

没有答案