零、前言

很久以来,能够用电脑说话的想法一直吸引着许多人。然而,直到最近,这似乎是科幻小说的素材。现在情况发生了变化,拥有智能手机或平板电脑的人可以使用语音在他们的设备上执行许多任务——您可以发送短信、更新日历、设置闹钟,以及询问您以前会在搜索框中键入的查询种类。语音输入通常更方便,尤其是在物理限制使打字和敲击更困难的小型设备上。

这本书为安卓设备的语音应用开发提供了实用指南,使用谷歌语音应用接口进行文本到语音(TTS)和自动语音识别(ASR)以及其他开源软件。虽然一般来说有很多书涉及安卓编程,但没有一个单一的来源全面处理安卓基于语音的应用的开发。

为语音用户界面开发与为更传统的界面开发有许多相同的特点,但是语音应用开发也有自己特定的需求,重要的是开发人员要意识到常见的陷阱和困难。这本书提供了一些介绍性材料,涵盖了主流计算背景的专业人士可能不熟悉的方面。然后,它继续详细展示如何组合完整的应用,从简单的程序开始,发展到更复杂的应用。通过借鉴书中的例子并尝试所描述的技术,您将能够将语音的力量带到您的安卓应用中,使它们更智能、更直观,并提升用户的移动体验。

这本书涵盖了什么

第 1 章安卓设备上的语音,讨论了语音如何在安卓设备上使用,并概述了相关技术。

第二章文语合成,讲述了文语合成技术以及如何使用谷歌 TTS 引擎。

第 3 章语音识别,概述了语音识别技术以及如何使用谷歌语音转文本引擎。

第 4 章简单语音交互,展示了如何构建简单的交互,用户和 app 可以通过对话来检索一些信息或执行一个动作。

第 5 章填表对话,说明了如何创建类似于传统网络应用中填表的语音对话。

第 6 章对话语法介绍了如何使用语法来解释来自用户的输入,而不仅仅是单个单词和短语。

第 7 章多语言和多模式对话,介绍如何构建使用不同语言和模式的应用。

第 8 章与虚拟个人助理的对话,展示了如何构建一个支持语音的个人助理。

第九章再进一步,展示如何开发更高级的虚拟个人助理。

这本书你需要什么

要运行代码示例并开发自己的应用,您需要安装安卓软件开发工具包和平台工具。一个完整的包,包括基本的安卓软件开发工具包组件和一个带有内置 ADT(安卓开发工具)的 Eclipse 集成开发环境版本以及教程,可在http://developer.android.com/sdk/下载。

您还需要一个安卓设备来构建和测试示例,因为安卓语音识别在虚拟设备(仿真器)上不起作用。

这本书是给谁的

这本书面向所有对语音应用开发感兴趣的人,包括语音技术和移动计算的学生。我们一般假设一些编程背景,特别是在 Java 中。我们还假设对安卓编程有些熟悉。

惯例

在这本书里,你会发现许多区分不同种类信息的文本风格。以下是这些风格的一些例子,以及对它们的含义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“下面几行代码创建了一个TextToSpeech对象,该对象实现了onInitListener界面的onInit方法。”

代码块设置如下:

TextToSpeech tts = new TextToSpeech(this, new OnInitListener(){ 
    public void onInit(int status){ 
       if (status == TextToSpeech.SUCCESS) 
             speak("Hello world", TextToSpeech.QUEUE_ADD, null); 
    }
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

Interpret field i:
       Play prompt of field i
       Listen for ASR result
       Process ASR result:
               If the recognition was successful, then save recognized
           keyword as value for the field i and move to the next field
               If there was a no match or no input, then interpret field i
               If there is any other error, then stop interpreting
Move to the next field:
       If the next field has already a value assigned, then move to the next one
       If the last field in the form is reached,thenendOfDialogue=true

新名词重要词语以粗体显示。你在屏幕上看到的单词,例如在菜单或对话中看到的单词,会出现在这样的文本中:“请说出专辑标题中的一个单词。”

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或可能不喜欢什么。读者反馈对我们开发您真正能从中获得最大收益的标题非常重要。

要给我们发送一般反馈,只需向<[feedback@packtpub.com](mailto:feedback@packtpub.com)>发送电子邮件,并通过您的消息主题提及书名。

如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参阅我们在www.packtpub.com/authors上的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以从您在http://www.packtpub.com的账户中下载您购买的所有 Packt 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

书的网页

http://lsi.ugr.es/zoraida/androidspeechbook有这本书的网页,有额外的资源,包括练习和项目的想法,进一步阅读的建议,以及有用网页的链接。

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表 提交 表格链接,并输入您的勘误表详情。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站上,或添加到该标题的勘误表部分下的任何现有勘误表列表中。通过从http://www.packtpub.com/support中选择您的标题,可以查看任何现有的勘误表。

盗版

互联网上版权材料的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决。