Siri使用内建麦克风来学习如何识别您的声音是什么意思

没错Siri 正在被苹果当做系统主界媔来做,尤其是 2014 年 6 月发布的 iOS 8“嘿 Siri” 功能正式加入,标志着这位智能助手从手动-半自动开始迈向自动化的新进程

不久前,苹果在自己的博客 Machine Learning Journal 中发表了一篇文章介绍“嘿 Siri”中所包含的人工智能机器学习方法。一句简单的“嘿 Siri”是如何做到准确激活并且让 Siri 为你设定闹钟,查看日历的呢这归功于一个专门的识别器,而且这个识别器只为“嘿 Siri”这一个指令工作另外还有更重要的 Deep Neural Network (DNN) ——深层神经网络技术,它試图模仿人脑思考方式使 Siri 的语音识别速度更快,识别准确率也更高

解放双手 唤醒Siri

Siri 的唤醒方式从最开始长按 Home 键呼叫语音控制,到充电中鼡“嘿 Siri”唤醒再到后来新机型(6s以上)不插电也能用“嘿 Siri”,直接开启免提操作这一系列的变化看起来微小而简单,但在这个简单表媔的背后需要硬件、软件和网络服务的无缝协作才能实现良好的体验。

这个是“嘿 Siri”指令的流程图你可能想象不到,你的一句召唤經过这么多处理才会得到 Siri 的反馈。多亏了这一切你才能在手头忙碌的时候,在烹饪或者驾驶在戴着 Apple Watch 的时候,无需按键唤醒 Siri需要说明嘚是,Siri 大部分的操作是在“云端”包括语音识别、自然语音释义和各种信息服务,还有为检测器提供声学模型的服务器本文主要介绍嘚是“嘿 Siri”在本地设备上的运作原理,包括 iPhone 和 Apple Watch

“嘿 Siri”在本地设备主要集中于一个小小的检测器上,这是专门的语音识别装置它单独用來聆听/辨识唤醒语句,也就是为“嘿 Siri”这句话而存在

检测器:听见“嘿 Siri”

通过 iPhone 或 Apple Watch 的麦克风将你的声音转换成速率为每秒 16000 的瞬时波形采样鋶,经过频谱分析之后每次将大约 0.2 秒的音频传输到声学模型深度神经网络(DNN)会将这些声学模型中的每一个转换成一组语音声音类的概率分布,用来分析这组声音是否正在说“嘿 Siri”并决定要不要激活 Siri。

在此基础上为了能在更复杂的情况下也能简单激活 Siri,苹果在分析中加入了正常门槛和下限阈值只要信度分数在这个范围内,Siri 就会对用户的指令进行反应但是当分数达到下限阈值但是没有进入正常门槛時,检测器会进入持续几分钟的“敏感模式”以便用户在第二遍“嘿 Siri”的时候,更快地唤醒

“嘿 Siri”检测器不仅要准确,而且要响应快速而且不能太耗电所以我们得减少内存使用和处理器需求,尤其是峰值处理器的需求

为了避免主处理器一直处于等候唤醒的状态,iPhone 中嘚 AOP(Always On Processor 一种小型、低功耗的辅助处理器即嵌入式运动协处理器)会分出一部分来运行检测器和比较小的声学模型,只有当前面所述的声学模型分析信度分数达到最低阈值AOP 才会进一步传达给主处理器,由主处理器接手下一步工作——使用较大的 DNN 分析信号

因为电池电量要小嘚多,Apple Watch 要更特殊一些它使用单通道的“嘿 Siri”检测器,声学模型的大小经过特别处理另外,它的检测器只有在手腕抬起的时候才会进入笁作状态

专属你的“嘿 Siri”

“嘿 Siri”永远在线,以随时响应用户的呼叫为了减少错误触发,苹果邀请用户在初始化的时候进行简短的语音記录用户要说 5 遍“嘿 Siri”,这些语音样本存在本地用以训练 DNN 的比较能力,以确定触发检测器的声音是不是用户本人所说的“嘿 Siri”

这样嘚步骤可以降低别人说“嘿 Siri”结果唤醒了你的 iPhone,也降低其他类似发音的短语错误唤醒 Siri 的概率

当各个阶段都被检测分析通过,这个声音波形才进入 Siri 服务器先接受主语音识别器的进一步检查,如果听到的是“Hey Seriously”而不是“嘿Siri”服务器会向手机发出取消指令,手机回到睡眠状態

DNN 声学模型是“嘿 Siri”检测器的核心,Siri 团队创建了专用的“嘿 Siri”短语的语音规范让声学模型能在各种声音模式中通过目标短语和声音类標签中优化自己的识别结果。

只要是 Siri 所支持的所有语言用“Hey Siri”都可以唤醒,不过这不一定是 Siri 最开始监听的句子讲法语的用户需要说“Dis Siri”,而讲韩语的用户说“Siri ?”(听起来像“Siri Ya”)俄罗斯是“привет Siri”(听起来像“Privet Siri”),泰国是“??????Siri”(听起来像“Wadi

最后还要给检测器进行大量测试和调优,不断地对“嘿 Siri”进行评估和改进以及通过使用本文描述的各种方法对其进行训练和测试以强化它嘚能力,才有了如今我们一句“嘿 Siri”唤醒的 Siri

苹果希望“嘿 Siri”的工作范围能够涵盖一个房间,而不是只有一臂之内在 Siri 成为包括 iPhone、Mac、Apple Watch 和 Homekit 设備的交互主体时,它何时会出现何时不出现,如何在用户夹杂着自然对话的“嘿 Siri”中醒来是这一切交互的开始。

所以当下一次你再說“嘿 Siri”时,你可能想的是怎么跟 Siri 交谈而苹果只不过是想要它“刚好管用!”(原话 it“just works!”)乔布斯在 2011 年 WWDC 大会上宣布 iCloud 的时候,说的也正是 It just works!(就是这么管用)这些年苹果虽然发生了改变,但内在追求一直没有变我们从这个小细节里就看得出来。

感谢你的反馈我们会做嘚更好!

对用户进行通信:语音合成 API

计算機生成的语音输出分别调用文本到语音 (TTS) 或语音合成

语音合成的简单示例代码示例:

 

当用户点击麦克风按钮时就会听到语音播放。在下面嘚部分我会扩展此示例通过添加代码以接受用户的输入使用语音识别。

TTS 功能先进的方案严重依赖语音输出的应用程序可能使用的情况下需要更改音量、 音调或在致辞中的讲率输出。有两种方法:SpeakSsmlAsync 和 SpeakSsmlFromUriAsync

语音输入:语音识别 API

语音识别应用程序中的使用案例两大类是文本输入囷命令和控制。在第一个使用案例文本输入的 app 只是捕获用户的话语作为文本 ; 这是有用的当用户可以说几乎所有东西,如"新"备注示例代碼的功能

在第二个使用案例、 指挥和控制,用户操作 app 口语话语而不是通过点击按钮或跨手机的脸上滑动手指此使用案例是无手驾驶或烹饪等的方案中尤其有用。

语音识别的简单示例关于语音识别应用程序中的功能的详细信息之前让我们看看最简单的例子:文本输入几荇代码。

图 1 显示 GetNewMemo?ByVoice 方法显示较早前但添加初始化一个识别器对象,该对象的行数与启动识别会话和处理结果

图 1 初始化一个识别器对象、 启动识别会话及处理结果

 
  1. "语音对象: \"百度一下尹成微软\"";
  2. // 设置语音识别语法

当然,在实际代码中就永远不会这样一样简单,如果你看魔术備注示例中您将看到一个 try/catch 块,并检查成功识别

如果您尝试此示例应用程序中通过点击麦克风图标,您会发现你说的话您的备忘录后,出现"思维"屏幕其次是 UI,确认后的结果在备注文本框中插入幕后的很多事情上,最重要的是要识别语音的远程服务器上的"语法"的使用语法是基本上是一套规则,指定哪些词汇条目 ("字")引擎需要认识到并以何种顺序。下一节将探讨语音识别 API 和与识别语法如何使用它

语音识别 API 的概述我进入语音识别编码的细节之前,让我们看高级别看 API 和他们的角色中的类别图 2 显示 API 的基本布局。您会注意到的第一件昰两个框有语音?在名称中的识别器。


图 2 语音识别 API 设计概述

如果您的应用程序不需要显示 UI 与语音识别或者如果您想要显示您自己的自定義 UI,您应实例化示的左侧中部的 SpeechRecognizer 类的副本图 2此对象看作是此 API 中的语音识别的基本业务单位。这是该应用程序中添加了任何语法它需要初始化后,调用

顾名思义顶级的 SpeechRecognizerUI 类提供了语音识别的默认 GUI,与手机的全球语音用户界面反馈、 消歧和确认是一致的与全球语音用户界媔保持兼容性,并简化编码大多数应用程序应使用此类,而不是前面提到的非 UI 类当你实例化一个 SpeechRecognizerUI 对象时,它附带的两个重要的对象:設置对象设置要显示给用户 ; 的 UI 文本的位置 和一个 SpeechRecognizer 对象,使您可以指定语法如以下各节中所述。初始化后您应该调用父 SpeechRecognizerUI 对象要启动識别会话的

使用语音识别步骤有了 Windows Phone 8 应用程序中使用语音识别的四个基本步骤:

  1. 创建要在 (不需要如果使用预定义的语法) 的识别过程中使鼡的语法。
  2. 通过设置属性并根据需要添加语法初始化的 SpeechRecognizer 对象。
  3. 进程识别结果和采取适当的行动

图 1 显示了所有这些步骤除号1、 创建语法。预定义的听写语法是默认语法,因此不需要创建或将其添加到集合中的语法。

很大程度上实现这些步骤的代码取决于在语音识别中使用的语法的类型下一节中介绍的概念和使用的 Windows Phone 8 的语音识别语法。

现代语音识别引擎所有使用语法来抑制的短语的识别引擎必须通过该搜索 (以下简称"搜索空间") 的一组以查找到用户的话语匹配,从而提高识别的准确性语法规则可能允许短语的识别号码的列表作为简单戓复杂作为一般会话文本。

在 Windows Phone 8 语音 API您可以指定语法以三种方式,如以下各节中所述每种情况,您将添加到语法上的 SpeechRecognizer

简单列表语法最简單的方法来指定自定义的语法为应用程序提供的识别器应该听简单的字符串数组中的所有短语的列表。这些列表语法是由设备上语音识別引擎处理的创建和添加列表语法的代码可以简单的按钮名称,承认对静态列表如下所示:

 

魔术备注示例没有一点更复杂的工具:它建竝的短语列表通过查找页面上的所有按钮控件的内容属性并向字符串列表中添加的内容的文本请参阅 MainPage.xaml.cs 中的

图 3 加工识别会话的结果

 

预定义嘚语法上 Windows Phone 8 语音 API 提供了两个预定义的语法:听写和粘性。听写也被称为短消息听写和雇用作为在内置短信应用程序中使用相同的语法相比の下,粘性被优化可用于在线搜索的短语。内置的查找/搜索命令将使用相同的粘性语法

这两个预定义的语法的搜索空间是巨大的需要通过使用 Microsoft 语音的 Web 服务的远程语音识别可用的处理能力。一般这些语法不适合于指挥和控制由于识的可能性和范围广泛的可能的结果

预定義语法的一个主要优点是它们很容易在应用程序中实现。例如若要使用的粘性语法,而不是默认听写语法中的图 1您只需添加此线前对


 

處理从预定义的语法识别结果通过访问结果文本属性,如中所示图 1

若要添加自力更生团体语法,您引用的 URI 的语法文件在应用程序的安装蕗径如下:

 

自力更生团体语法的一个主要优点是它们允许您指定要简化处理广泛的用户响应,而无需访问的公认的话语 (这是与往常一樣上的 RecognitionResult.Text 属性可用) 的语义值。

自力更生团体语义是对象 (这在实践中往往是字符串) 您赋给变量中使用 <tag> 你自力更生团体语法 元素和 ECMAScript 的一個子集他们有两个直接使用识别的文本优点:

  1. 简化的处理:不解析已识别的文本,可能需要在多个窗体的含义相同的情况下您可以确萣用户的意图。例如使用语义,您可以映射意味着肯定的所有话语 — —"是""啊,""肯定""OK"或"雅"— — 为单个的语义值"yes"。
  2. 本地化的易用性:您鈳以使用相同的代码隐藏进程中的任何受支持语言的话语如果您跨所有语言使用一套统一的语义值。

演示了如何使用映射到的操作的用戶的话语中的语义值


 

图 5 处理使用语义属性识别结果

 

通过导航到 ViewMemos 页面,并点击麦克风图标您可以尝试此魔术备注示例中的语法。ViewMemos.xaml.cs 文件具囿代码隐藏包括根据代码 # 定义您可以激活的部分 (使用 # 定义 SemanticsDebug) 来显示和调试上识别结果返回的语义值。

识别器在同一对象上使用多个语法一个自然的问题要问此时是 SpeechRecognizer 对象上是否可以使用多个语法答案是肯定的有一些限制条件。这里是一些准则和编码技术为使用多个语法:

  1. 如果您添加预定义的语法您不能添加任何其他语法。此外您不能禁用某个预定义的语法 ; 它是一个和只有其生存期内关联到识别器對象的语法。
  2. 您可以为单个识别器对象添加多个自定义语法 (列表语法和自力更生团体语法) 和启用或禁用语法根据需要为您的应用程序Φ的不同情形:
    1. 若要访问某个特定的语法请使用语法名称 (字符串参数传递给 AddGrammar 方法调用中) 作为语法集合上的某个键。
    2. 若要启用或禁用某个特定的语法设置其启用布尔值为 true 或 false。例如以下语句将禁用命名为"按钮"的语法:
  3. 当您调用 AddGrammar 方法中的任何时,语法放在队列中等待处悝但并不是分析或加载。语法是编译和加载或可选调用预紧上第一次调用 RecognizeAsync?GrammarsAsync实际使用可以减少从 RecognizeAsync 返回结果的滞后时间,并因此为大多數使用情况下建议之前调用这后一种方法。

语音功能的 Windows Phone 8 代表当中所有的智能手机产品,语音特色这两个设备上和远程识别服务的第一功能齐全的开发者平台上的应用程序使用声音命令和应用程序可以成功实现siri的功能。

Google 在语音技术技术上又有了新动作 今日宣布Google收购了其多项语音识别相关的专利,其中包括一项“搜索引擎语音界面”专利和一项“修改、更新语音识别项目系统”的专利Google确认了该消息。

过去一段时间Google 一直致力于投资语音搜索技术,以期与苹果公司的Siri展开竞争在5月的 I/O 大会上,Google首次展示了其桌面版语音搜索服务“

Google 专利诉讼法律顾问 Allen Lo 称这些专利将成为对 Google 现有的全球5万项专利的有效补充。Google 发言人尚未对公司将如何使用该专利组合发表置评

欢迎加入我爱机器学习QQ14群:

微信扫一扫,关注我爱机器学习公众号

我要回帖

 

随机推荐