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

    文章

    53

    浏览量

    43333
  • Amazon
    +关注

    关注

    1

    文章

    121

    浏览量

    17184
  • Alexa
    +关注

    关注

    2

    文章

    196

    浏览量

    23302
收藏 人收藏

    评论

    相关推荐

    IP Your Way——您提供规格,然后SmartDV为您生成定制IP

    快速、可靠且高性价比的定制IP模式提升芯片设计公司竞争力
    的头像 发表于 12-17 17:27 54次阅读

    大联大推出基于MediaTek Genio 130与ChatGPT的AI语音助理方案

    大联大控股,作为亚太地区市场领先的半导体元器件分销商,近日宣布了一项重要创新。其旗下子公司品佳,成功推出了基于联发科技(MediaTek)Genio 130芯片与ChatGPT功能的AI语音助理方案
    的头像 发表于 12-11 11:07 297次阅读

    工业手持终端厂家教你怎样快速选择手持移动终端PDA

    工业手持终端厂家教你怎样快速选择手持移动终端PDA选择手持移动终端PDA时,需要考虑多个因素以确保它能满足您的业务需求和技术规格。以下是深圳远景达整理的建议,帮助您快速选择合适的PDA:1、确定功能
    的头像 发表于 11-20 16:20 140次阅读
    工业手持终端厂家<b class='flag-5'>教你</b>怎样<b class='flag-5'>快速</b>选择手持移动终端PDA

    PCB电路板元器件种类繁多,如何快速识别?

    人员来说,能够快速准确地识别电路板上的元器件种类及其符号,是日常工作中的一项重要技能。本文将详细介绍如何在PCB电路板上识别元器件的种类及其符号,帮助大家提升专业技能和工作效率。 一、电阻器 电阻器是电路板上最常见的元件之一,
    的头像 发表于 11-19 09:32 202次阅读
    PCB电路板元<b class='flag-5'>器件</b>种类繁多,如何<b class='flag-5'>快速</b>识别?

    钉钉重磅升级:六大场景AI助理正式上线

    上线的“精选AI助理”涵盖了六大关键场景,包括工单助理、Excel助理、法务助理等。这些AI助理通过智能化的手段,能够帮助企业解决在日常运营
    的头像 发表于 11-14 13:50 190次阅读

    如何在Altium Designer中快速定位器件

    想知道如何在Altium Designer中快速定位器件嘛?
    的头像 发表于 10-12 09:28 2567次阅读
    如何在Altium Designer中<b class='flag-5'>快速</b>定位<b class='flag-5'>器件</b>

    CC13xx 的定制射频前端无源集成器件在433MHz~510MHz频段的应用

    电子发烧友网站提供《CC13xx 的定制射频前端无源集成器件在433MHz~510MHz频段的应用.pdf》资料免费下载
    发表于 09-10 14:29 0次下载
    CC13xx 的<b class='flag-5'>定制</b>射频前端无源集成<b class='flag-5'>器件</b>在433MHz~510MHz频段的应用

    使用google-translate和wwe合并后无法使用google-tts怎么解决?

    我打算使用lyrat-mini做一个使用唤醒词唤醒然后后续通过google-sr和google-tts进行交流的聊天机器人,但是当我合并了adf的例子中的wwe和google-translate之后
    发表于 06-28 06:05

    手把手教你在orcad中设置CIS元器件数据库,提高工作效率

    我们常用到的cadence原理图设计工具orcad ,其可以配置CIS元器件数据库,通过这个数据库,我们可以快速地根据指定的料号/参数/封装等条件查询所需要的元件,双击即可放置到原理图中。 CIS
    的头像 发表于 06-15 17:27 5866次阅读
    手把手<b class='flag-5'>教你</b>在orcad中设置CIS元<b class='flag-5'>器件</b>数据库,提高工作效率

    谷歌Pixel 10系列手机配备Tensor G5定制芯片,将迎来显著升级

    据悉,在 Google Pixel 9 系列尚未正式发布之际,Android Authority已揭晓了其后续产品 Google Pixel 10 的关键规格参数,其中包括采用谷歌与台积电联手打造的“首款完全定制”Tensor
    的头像 发表于 05-27 16:02 695次阅读

    谷歌:iOS版Chrome浏览器将支持“圈选即搜”功能,整合Google

    据了解,截至5月17日,Google已在Galaxy S24及Pixel 8系列智能手机中引入了所谓的“圈选即搜”功能,该功能旨在帮助用户快速寻找关键信息。而日前,有消息透露,Google有意将此项技术引入iOS版Chrome浏
    的头像 发表于 05-17 10:00 654次阅读

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

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

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

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

    如何在鸿蒙系统上安装Google Play

    随着鸿蒙(HarmonyOS)系统的逐渐普及和用户基数的增加,一些用户希望能在鸿蒙系统上使用Google Play商店以获取更多应用。然而,由于鸿蒙系统与Google服务不兼容,官方并未提供官方支持
    的头像 发表于 01-31 17:13 1.6w次阅读

    教你在Ubuntu系统上定制文件系统

    开发板都需要去apt-get安装,这样会大幅增加工作量,很不便于批量化生产。 能不能把软件一起打包到镜像呢?这样每次烧写完就不用再去apt-get在线安装了。答案当然是肯定的,这就涉及到文件系统的定制
    发表于 12-26 16:33