0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你快速定制Google助理器件

电子设计 来源:互联网 作者:佚名 2018-08-08 09:19 次阅读

语音助理已经迅速成为一个重要的产品功能,这要归功于流行的基于智能语音的产品,例如 Amazon Echo 和 Google Home。虽然语音服务提供商为开发人员提供了应用程序编程接口 (API) 支持,因此他们不必成为语音识别和解析细节方面的专家,但是将音频硬件和语音处理软件相结合的要求仍然是一个重大障碍。

此外,在与每个学科相关的细节工作中,在声学设计、音频工程、基于云的服务方面没有丰富经验的项目可能会面临严重延迟。

为了解决这些问题,供应商提供了完整的语音助理开发套件,以求显著简化问题。本文将分别介绍两种此类套件,一个套件来自XMOS,另一个套件来自Seeed Technology,它们分别实现了基于 Amazon Alexa 语音服务 (AVS) 和谷歌助理的定制产品的快速开发。这些电路板可与Raspberry Foundation的Raspberry Pi 3(RPi 3) 电路板连接。

本文将介绍如何让每个套件投入运行,并展示每个套件如何随时利用语音助理技术。

快速 AVS 评估

Amazon 公司推出了 Alexa 智能音箱,这是一款面向家庭的产品,提供智能语音助理功能,但过去这些功能在很大程度上仅限于智能手机。对于开发人员来说,AVS API 的发布为在定制系统设计中使用相同的语音助理功能打开了大门,但其仍然需要音频硬件和软件方面的丰富专业知识。现在,随着适用于 Amazon Alexa 语音服务 (AVS) 的 XMOSxCORE VocalFusion 4-Mic 套件的推出,实施语音助理功能的最后一个难题也迎刃而解。

XMOS 套件包括一个 XVF3000 处理器基板、由四个InfineonIM69D130MEMS 麦克风组成的 100 mm 线性阵列、xTAG调试器、安装套件和电缆。开发人员需要为 RPi 3 提供有源扬声器、USB 电源,以及 USB 键盘、鼠标、监视器和互联网连接。在使用安装套件将 XMOS 板和麦克风阵列连接到 RPi 3 之后,开发人员可以快速评估 Amazon Alexa 语音助理(图1)。

图 1: 开发人员使用 XMOS xCORE VocalFusion 套件开始工作,将提供的麦克风阵列板(最左侧)和 XMOS 处理器板(中间)插入 Raspberry Pi 3 板(右侧)。(图片来源: XMOS)

将 RPi 3 连接到 USB 键盘、鼠标、监视器和互联网服务之后,下一步骤是从 SD 微型卡安装 Raspbian 操作系统,在 RPi 3 上打开端子,并克隆XMOS VocalFusion 存储库。安装操作系统和存储库之后,只需运行位于克隆的vocalfusion-avs-setup目录下的auto_install.sh。

安装脚本将配置 Raspberry Pi 音频系统及其与 xCORE VocalFusion 套件的连接,并在 Raspberry Pi 上安装和配置 AVS Device SDK。这个安装过程可能需要大约两个小时完成。

安装完成后,开发人员需要执行一个简单的过程来加载他们的 Amazon 开发人员凭据,然后开始测试大量的语音命令和内置功能。此时,XMOS 套件将能够演示 Alexa 的全套功能,如定时器、闹钟和日历,以及使用 Alexa Skills 套件构建的第三方功能。

参考设计

虽然设置步骤简单,但 XMOS 套件中的硬件和软件组件的功能却非常复杂。该套件为开发人员提供了实现定制设计的全面参考设计。XMOS 套件的核心是 XMOS XVF3000-TQ128 器件,它提供了很高的处理能力(图 2)。

图 2: XMOS XVF3000-TQ128 器件集成了两个 xCORE Tile,每个 Tile 包含八个内核,以提供高性能音频处理。(图片来源: XMOS)

该器件专为并行处理任务而构建,包含两个 xCORE Tile,每个 Tile 包含八个带集成 I/O 的 32 位 xCORE 内核、256 KB 的 SRAM、8 KB 的一次性可编程(OTP)片上存储器。xTIME 调度程序管理内核,并触发来自 I/O 引脚的硬件事件的内核操作。每个内核都可以独立执行计算、信号处理或控制任务,利用了 xCORE VocalFusion 套件中的集成式 2MB 闪存,以及用于套件设置和执行的代码和数据。

除了 XVF3000-TQ128 器件之外,XMOS 处理器基板还需要少量的附加组件(图 3)。除了基本的缓冲器和针座连接外,基板还包括Cirrus LogicCS43L21数模转换器DAC),用于为外部扬声器生成输出音频。最后,底板还引出了 XVF3000-TQ128 器件 I2C 端口,以及经过音频优化的 I2S 数字音频接口。

XMOS 套件的基板包括 XVF3000-TQ128 器件的图片(单击放大)

图 3: XMOS 套件的基板包括 XVF3000-TQ128 器件、DAC、缓冲器,以及用于连接 Raspberry Pi 3 板和外部扬声器的针座。(图片来源: XMOS)

该套件的整体功能分为两个部分:XMOS 板上的音频处理、RPi 3 上的高级语音处理服务(图 4)。RPi 的Broadcom四核处理器运行软件,该软件用于分析音频流,进行唤醒词识别,并且处理与 Amazon AVS 的交互。

图 4: XMOS VocalFusion 套件将基板和 Raspberry Pi 3 板上的 Alexa 功能分开,前者用于音频信号处理,后者用于语音识别和更高级别的 Alexa 服务。(图片来源: XMOS)

软件安装过程配置这些子系统并加载所需的软件包,包括 Sensory 的独立于扬声器的唤醒词引擎,以及 AVS 客户端软件等。

AVS 提供了一系列与高级功能(如语音识别、音频回放和音量控制)相关的接口。操作通过来自 AVS 的消息(指令)和来自客户端的消息(事件)进行。例如,为了响应某些条件,AVS 可能会向客户端发送指示,指示客户端应播放音频、设置闹钟或打开灯光。相反,来自客户端的事件可通知 AVS 发生了某些事件,例如来自用户的新语音请求。

开发人员可以使用AVS 器件软件开发套件(SDK) API 和 C++ 软件库来扩展其 XMOS 套件或 XMOS 定制设计的功能。AVS Device SDK 通过一系列单独的 C++ 类和对象,提取出低级别操作,如音频输入处理、通信和 AVS 指令管理,开发人员可以使用或扩展它们,用于定制应用程序(图 5)。

图 5: Amazon AVS Device SDK 将 AVS 的广泛功能组织为单独的功能区域,每个功能区域都有自己的接口和库。(图片来源: AWS)

包含在 AVS Device SDK 中的完整样例应用程序展示了关键设计模式,包括创建设备客户端和唤醒词交互管理器(列表 1)除了全套的样例服务例程之外,该应用还显示了主程序如何只需要实例化样例应用程序对象sampleApplication,并使用一个简单的命令来启动它:sampleApplication->run().

Copy/*
*CreatingtheDefaultClient-thiscomponentservesasanout-of-boxdefaultobjectthatinstantiatesand"glues"
*togetherallthemodules.
*/
std::shared_ptrclient=
alexaClientSDK::defaultClient::DefaultClient::create(
m_speakMediaPlayer,
m_audioMediaPlayer,
m_alertsMediaPlayer,
speakSpeaker,
audioSpeaker,
alertsSpeaker,
audioFactory,
authDelegate,
alertStorage,
settingsStorage,
{userInterfaceManager},
{connectionObserver,userInterfaceManager});

...

//Ifwakewordisenabled,thencreatingtheinteractionmanagerwithawakewordaudioprovider.
autointeractionManager=std::make_shared(
client,
micWrapper,
userInterfaceManager,
holdToTalkAudioProvider,
tapToTalkAudioProvider,
wakeWordAudioProvider);

...

client->addAlexaDialogStateObserver(interactionManager);

//Creatingtheinputobserver.
m_userInputManager=alexaClientSDK::sampleApp::UserInputManager::create(interactionManager);

...

voidSampleApplication::run(){
m_userInputManager->run();
}

列表 1: 开发人员可以使用 AVS Device SDK C++ 样例应用程序来扩展设备 AVS 客户端,AVS Device SDK C++ 样例应用程序演示了用于创建 AVS 客户端、唤醒词交互管理器和用户输入管理器等的关键设计模式。(列表来源: AWS)

Google 助理快速原型

XMOS 套件可加快 Amazon Alexa 原型的开发速度,Seeed Technology 的Google AIY 语音套件可帮助开发人员使用 Google Assistant 构建原型。与 XMOS AVS 套件相同,Seeed Google AIY 语音套件可与 Raspberry Pi 3 板配合使用来构建原型,并提供必要的组件(图 6)。

图 6: 开发人员可将 Raspberry Pi 3 与 Seeed Technology 的 Google AIY 语音套件配合使用(它提供了构建原型所需的组件),从而快速创建 Google 助理应用。(图片来源:Google)

除了 Seeed Voice HAT 扩展板(图 6 中的 1)、麦克风板 (2) 和扬声器 (4) 之外,套件还包括纸板外壳 (8) 和内部框架 (9),以及一些基本组件,包括支座 (3)、电缆(6 和 7)和按钮 (5)。

开发人员首先将 RPi 3、扬声器电线、麦克风电缆连接到语音 HAT,然后组装套件。与 AVS 套件不同,Google 套件提供了一个简单的外壳和内部框架,用于固定电路板组件和扬声器(图 7)。

图 7: Seeed Google AIY 语音套件包括一个内部纸板框架,开发人员将其折叠成为电路板组件的载体。(图片来源: Seeed Technology)

框架安装在支撑按钮和麦克风阵列的外壳内,完成装配(图 8)。

图 8: 除了固定内部框架和扬声器之外,Seey Google AIY 语音套件的外壳还包括按钮和麦克风(看起来像外壳顶部的两个孔)。(图片来源: Seeed Technology)

下载语音套件镜像并将其载入 SD 卡中后,只需将 SD 卡插入 RPi 并打开电路板电源,即可调出套件。经过短暂的初始化过程以确认每个组件正常工作之后,开发人员需要激活 Google Cloud 端的服务。为此,请设置工作沙箱区域并启用 Google 助理 API,以创建和下载身份验证凭据。

最后,开发人员需要在 RPi 3 上打开一个终端控制台并执行 Python 脚本assistant_library_demo.py,以便在套件上启动 Google 助理。此时,开发人员可以毫不费力地使用完整的 Google 助理功能。

定制 Google 助理器件

使用 Seeed Google AIY 语音套件进行自定义开发,可以充分利用 Raspberry Pi 的灵活性。Seeed Voice HAT 引出了多个已经为典型 IO 功能配置的 RPi 3 GPIO(图 9)。

图 9: 开发人员可以使用 Seeed Voice HAT 扩展板上引出的 I/O 端口,快速扩展 Seeed Google AIY 语音套件的硬件功能。(图片来源: Raspberry Pi)

在软件方面,开发人员可以使用 Google 的语音套件 API软件,轻松扩展套件的基准功能。除了支持软件和实用程序之外,该软件包还包含样例应用程序软件,演示了通过 Google Cloud Speech API 和 Google Assistant SDK 实施语音服务的多种方法。

云语音服务与智能助理方法截然不同,它提供了语音识别功能,将实现特定语音启动操作的任务留给了程序员。对于只需要语音输入功能的设计,该服务提供了一个简单的解决方案。开发人员只需将音频传递到云语音服务,即可将语音转换为文本,并返回识别的文本,如语音套件 API 中包含的样例 Python 脚本所示(列表 2)。

Copy...

importaiy.audio
importaiy.cloudspeech
importaiy.voicehat


defmain():
recognizer=aiy.cloudspeech.get_recognizer()
recognizer.expect_phrase('turnoffthelight')
recognizer.expect_phrase('turnonthelight')
recognizer.expect_phrase('blink')

button=aiy.voicehat.get_button()
led=aiy.voicehat.get_led()
aiy.audio.get_recorder().start()

whileTrue:
print('Pressthebuttonandspeak')
button.wait_for_press()
print('Listening...')
text=recognizer.recognize()
ifnottext:
print('Sorry,Ididnothearyou.')
else:
print('Yousaid"',text,'"')
if'turnonthelight'intext:
led.set_state(aiy.voicehat.LED.ON)
elif'turnoffthelight'intext:
led.set_state(aiy.voicehat.LED.OFF)
elif'blink'intext:
led.set_state(aiy.voicehat.LED.BLINK)
elif'goodbye'intext:
break


if__name__=='__main__':
main()

列表 2: 在 Google 语音套件 API 提供的软件例程中,样例程序的这个片段演示了如何使用 Google Cloud Speech 服务,将语音转换为文本,并将实现任何语音指导操作的任务留给了程序员。(列表来源: Google)

对于需要 Google 助理的更广泛功能的开发人员,Google Assistant SDK 提供了两个实施选项: Google Assistant Library 和 Google Assistant Service。

基于 Python 的 Google Assistant Library 提供了一种在原型中快速实施 Google Assistant 的入门方法,例如在 Seeed 语音套件中。使用这种方法,原型可以即时利用基本的 Google 助理服务,包括音频捕获、对话管理和定时器。

与 Cloud Speech 方法相反,Google Assistant Library 通过将每个对话处理为一系列与对话和发声状态相关的事件来管理对话。语音识别完成后,实例化的助理对象将提供事件对象,其中包括了适当的处理结果。如另一个 Google 样例脚本所示,开发人员使用特征事件处理设计模式和一系列的 if/else 语句来处理预期的事件结果(列表 3)。

Copy...

importaiy.assistant.auth_helpers
importaiy.audio
importaiy.voicehat
fromgoogle.assistant.libraryimportAssistant
fromgoogle.assistant.library.eventimportEventType


defpower_off_pi():
aiy.audio.say('Goodbye!')
subprocess.call('sudoshutdownnow',shell=True)


defreboot_pi():
aiy.audio.say('Seeyouinabit!')
subprocess.call('sudoreboot',shell=True)


defsay_ip():
ip_address=subprocess.check_output("hostname-I|cut-d''-f1",shell=True)
aiy.audio.say('MyIPaddressis%s'%ip_address.decode('utf-8'))


defprocess_event(assistant,event):
status_ui=aiy.voicehat.get_status_ui()
ifevent.type==EventType.ON_START_FINISHED:
status_ui.status('ready')
ifsys.stdout.isatty():
print('Say"OK,Google"thenspeak,orpressCtrl+Ctoquit...')

elifevent.type==EventType.ON_CONVERSATION_TURN_STARTED:
status_ui.status('listening')

elifevent.type==EventType.ON_RECOGNIZING_SPEECH_FINISHEDandevent.args:
print('Yousaid:',event.args['text'])
text=event.args['text'].lower()
iftext=='poweroff':
assistant.stop_conversation()
power_off_pi()
eliftext=='reboot':
assistant.stop_conversation()
reboot_pi()
eliftext=='ipaddress':
assistant.stop_conversation()
say_ip()

elifevent.type==EventType.ON_END_OF_UTTERANCE:
status_ui.status('thinking')

elifevent.type==EventType.ON_CONVERSATION_TURN_FINISHED:
status_ui.status('ready')


defmain():
credentials=aiy.assistant.auth_helpers.get_assistant_credentials()
withAssistant(credentials)asassistant:
foreventinassistant.start():
process_event(assistant,event)


if__name__=='__main__':
main()

列表 3: 如 Google Voice 套件中的样例所示,使用 Google Assistant Library 的应用程序中的主循环启动一个助理对象,然后生成一系列事件,由开发人员的代码处理。(图片来源: Google)

对于要求更高的定制需求,开发人员可以转向使用 Google Assistant Service(以前称为 Google Assistant gRPC API)提供的全套接口。Google Assistant Service 基于 Google RPC(gRPC),让开发人员能够将音频查询传送到云端,处理识别的语音文本,并且处理相应的响应。为了实现定制功能,开发人员可以使用各种编程语言(包括 C++、Node.jsJava)来访问 Google Assistant Service API。

在将 Google Assistant SDK 用于自己的设计时,设计人员可以使用 Google 的器件匹配功能,实现特定于硬件的功能。作为器件设置的一部分,开发人员提供关于定制器件的信息,包括功能和特性,称为特质。对于涉及到定制器件的用户语音请求,服务会识别器件的有效特质,并为器件生成适当的响应(图 10)。开发人员只需在器件的事件处理程序中包括与器件特质相关的对应代码(例如列表 3 中的def power_off_pi())。

图 10: Google Assistant SDK 使用自动语音识别 (ASR) 和自然语言处理 (NLP) 服务,将用户请求与特定设备进行匹配,并发出与定制设备及其认可特质一致的响应。(图片来源: Google)

总结

过去,智能语音助理在很大程度上是主流开发人员无法实现的。随着两个现成套件的推出,开发人员可以在定制设计中快速实施 Amazon Alexa 和 Google 助理。每个套件都允许开发人员在基本原型中快速调用相应的智能助理,或者使用定制的硬件和软件来扩展设计。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • XMOS
    +关注

    关注

    6

    文章

    27

    浏览量

    43055
  • Amazon
    +关注

    关注

    1

    文章

    115

    浏览量

    17062
  • Alexa
    +关注

    关注

    2

    文章

    193

    浏览量

    23152
收藏 人收藏

    评论

    相关推荐

    Google Cloud推出基于Arm Neoverse V2定制Google Axion处理器

    Arm Neoverse 平台已成为云服务提供商优化其从芯片到软件全栈的心仪之选。近日,Google Cloud 推出了基于 Arm Neoverse V2 打造的定制 Google Axion 处理器,面向通用计算和人工智能
    的头像 发表于 04-16 14:30 296次阅读

    谷景教你如何快速辨别储能磁环电感的质量好坏

    谷景教你如何快速辨别储能磁环电感的质量好坏 编辑:谷景电子 储能磁环电感是电路中特别普遍的电感元件之一,它对于电路运行的稳定性有着特别重要的影响。所以,我们在实际使用中怎样来快速辨别储能磁环电感
    的头像 发表于 03-19 22:32 73次阅读

    华曦达北交所IPO丨多重优势赋能,快速响应客户定制化需求

    近日,深圳市华曦达科技股份有限公司(董事长:李波)在北交所更新IPO上市申请审核动态,该公司已回复第二轮审核问询函。在回复中,华曦达明确回答了“如何快速响应客户的定制化需求”等相关问题。   科学
    的头像 发表于 12-21 11:39 321次阅读
    华曦达北交所IPO丨多重优势赋能,<b class='flag-5'>快速</b>响应客户<b class='flag-5'>定制</b>化需求

    负压脉冲高?教你3招制伏

    负压脉冲高?教你3招制伏
    的头像 发表于 12-15 16:50 247次阅读
    负压脉冲高?<b class='flag-5'>教你</b>3招制伏

    教你几种电路分析的高效方法

    教你几种电路分析的高效方法
    的头像 发表于 12-15 09:16 475次阅读
    <b class='flag-5'>教你</b>几种电路分析的高效方法

    哪些晶体、谐振器和振荡器可旋转180°使用?一招儿教你快速识别

    哪些晶体、谐振器和振荡器可旋转180°使用?一招儿教你快速识别
    的头像 发表于 12-05 16:37 200次阅读
    哪些晶体、谐振器和振荡器可旋转180°使用?一招儿<b class='flag-5'>教你</b><b class='flag-5'>快速</b>识别

    大电流磁棒电感厂家教你如何快速识别电感好坏

    大电流磁棒电感厂家教你如何快速识别电感好坏 编辑:谷景电子 大电流磁棒电感线圈是一种在电子产品中应用非常广泛的一类电感产品,大家都在讨论是否有什么办法能够比较快速的识别它的好坏?要严谨的确认一款电感
    的头像 发表于 11-06 14:41 202次阅读

    App CAD设计助理

    电子发烧友网站提供《App CAD设计助理.exe》资料免费下载
    发表于 07-26 15:04 0次下载
    App CAD设计<b class='flag-5'>助理</b>

    定制快速芯片ASIC可实现高达9GHz的射频功能

    ADI公司有两种不同的HF ASIC开发方法:半定制QuickChip设计方法和更传统的全定制设计方法。下面将讨论半定制设计方法,为开发客户设计的RF ASIC提供了一种低成本、快速
    的头像 发表于 06-26 17:47 504次阅读
    半<b class='flag-5'>定制</b><b class='flag-5'>快速</b>芯片ASIC可实现高达9GHz的射频功能

    家庭助理的房间监视器

    电子发烧友网站提供《家庭助理的房间监视器.zip》资料免费下载
    发表于 06-19 11:05 0次下载
    家庭<b class='flag-5'>助理</b>的房间监视器

    将数据发送到Google表格时出错怎么解决?

    我已经按照教程将数据从 NodeMcu 加载到 Google 表格 Google 表格并且脚本编辑器工作正常 NodeMcu 代码抛出错误: Temp = 19.50 HUM = 62.80
    发表于 06-05 10:08

    如何使用Google Maps API进行自我定位?

    从使用 Google Maps API 的 ESP 自我定位的简单概念验证实施开始。如果扫描本地可见的 SSID,则将请求格式化为 Google Maps Web Service 并接收其当前位置
    发表于 05-23 08:25

    Google Drive推荐的图像尺寸是多少?

    发布图片时我看到的都是;未登录时,是一个小图标,图标旁边带有“图像”。 尝试过使用 Google Drive 托管图片;登录或未登录均无效。另外,尝试过附加文件,然后复制链接地址并在图像标签之间粘贴我也尝试过调整图像大小。 包含图像的过程是什么?推荐的图像尺寸是多少?
    发表于 05-11 08:11

    Esight|类比ChatGPT的AI助理

    为了更好的服务于研发工程师,配套的上位机工具Esight集成了ChatGPT【AI助理】的功能,它可以协助研发工程师进行器件选型、知识学习、代码编写及内容创作等很多协助应用。
    的头像 发表于 05-10 13:31 332次阅读
    Esight|类比ChatGPT的AI<b class='flag-5'>助理</b>