close
当前位置: 物联网在线 > 物联网设计开发 > 澳门美高梅娱乐城文章 >

Raspberry Pi智能语音助手应用程序的快速原型开发

语音助手已经迅速成为一个重要的澳门美高梅娱乐在线功能,这要归功于流行的基于智能语音的澳门美高梅娱乐在线,如Amazon Echo和Google Home。虽然语音服务提供商为开发人员提供了应用程序编程接口(API)支持,所以他们不必成为语音识别和解析细节方面的专家,但是将音频硬件和语音处理软件相结合的要求仍然是一个重大障碍。
另外,在声学设计,音频工程和基于云计算的服务方面没有丰富经验的项目在通过与每个学科相关的细节工作中可能会面临严重的延迟。
为了解决这些问题,供应商已经提供了完整的语音助手开发工具包,以大大简化问题。本文将分别介绍两种这样的套件,一套来自XMOS,一套来自Seeed Technology,能够快速开发基于亚马逊Alexa语音服务(AVS)和谷歌助理的定制澳门美高梅娱乐在线。这些电路板设计用于与树莓派基金会 树莓派3(RPi 3)电路板接口。
本文将介绍如何让每个套件运行起来,并展示每个套件如何使语音助手澳门美高梅娱乐城易于访问。

快速AVS评估

亚马逊公司推出了一款面向家庭的澳门美高梅娱乐在线,它提供了智能语音助手功能,而这些功能在很大程度上仅限于智能手机。对于开发人员来说,AVS API的可用性为在定制系统设计中使用这些相同的语音助手打开了大门,但仍然需要音频硬件和软件方面的丰富专业知识。现在,亚马逊AVS提供的XMOS xCORE VocalFusion 4-Mic套件为实现语音助手提供了最后一块难题。
XMOS套件包括一个XVF3000处理器基板,一个由四个英飞凌 IM69D130 MEMS麦克风组成的100 mm线性阵列,xTAG调试器,安装套件和电缆。开发人员需要提供RPi 3有源扬声器和USB电源,以及USB键盘,鼠标,监视器和Internet连接。在使用安装套件将XMOS板和麦克风阵列连接到RPi 3之后,开发人员可以快速评估Amazon Alexa语音助理(图1)。
XMOS xCORE VocalFusion套件的图像
图1:开发人员使用XMOS xCORE VocalFusion套件开始工作,将提供的麦克风阵列板(最左侧)和XMOS处理器板(中间)插入Raspberry Pi 3板(右侧)。(图片来源:XMOS)
将RPi 3连接到USB键盘,鼠标,监视器和Internet服务之后,下一步骤是从SD微型卡安装Raspbian OS,在RPi 3上打开终端,并克隆XMOS VocalFusion存储库。安装操作系统和仓库后,只需运行auto_install.sh位于克隆vocalfusion-avs-setup目录中的安装脚本即可。
安装脚本配置Raspberry Pi音频系统及其与xCORE VocalFusion套件的连接,并在Raspberry Pi上安装和配置AVS Device SDK。此安装过程可能需要大约两个小时才能完成。
安装完成后,开发人员需要执行一个简单的过程来加载他们的Amazon开发人员凭据,并开始测试大量的语音命令和内置功能。此时,XMOS套件将能够展示Alexa的全套功能,如定时器,闹钟和日历,以及使用Alexa技能套件构建的第三方功能。

参考设计

简单的设置步骤掩盖了XMOS套件中复杂的硬件和软件组件。该套件为开发人员提供了实现定制设计的全面参考设计。在XMOS套件的核心,XMOS XVF3000-TQ128器件提供了大量的处理能力(图2)。
XMOS XVF3000-TQ128设备图
图2:XMOS XVF3000-TQ128器件集成了两个xCORE磁贴,每个磁卡具有八个内核,以提供高性能音频处理。(图片来源:XMOS)
该器件专为并行处理任务而构建,包含两个xCORE磁贴,每个磁片包含八个带集成I / O的32位xCORE内核,256 KB SRAM和8 KB一次性可编程(OTP)片上存储器。xTIME调度程序管理内核并触发来自I / O引脚的硬件事件的核心操作。反过来,每个核心都可以独立执行计算,信号处理或控制任务,利用xCORE VocalFusion套件中预先集成的集成式2MB闪存以及用于套件设置和执行的代码和数据。
除了XVF3000-TQ128器件之外,XMOS处理器基板还需要少量附加组件(图3)。除了基本的缓冲器和接头连接外,基板还包括一个Cirrus Logic CS43L21数模转换器(DAC),用于通过外部扬声器生成输出音频。最后,底板带出了XVF3000-TQ128器件的I 2 C端口以及音频优化的I 2 S数字音频接口。
XMOS套件的底板包括XVF3000-TQ128器件(点击放大)
图3:XMOS套件的底板包括XVF3000-TQ128器件,DAC,缓冲器和用于连接Raspberry Pi 3板和外部扬声器的接头。(图片来源:XMOS)
该套件将XMOS板上的音频处理和RPi 3上的高级语音处理服务(图4)之间的整体功能分开。RPi的Broadcom四核处理器运行的软件可分析音频流中的唤醒词识别并处理与亚马逊AVS的交互。
XMOS VocalFusion套件图(点击放大)
图4:XMOS VocalFusion套件将底板和树莓派3板上的Alexa功能分开,前者用于音频信号处理,后者用于语音识别和更高级别的Alexa服务。(图片来源:XMOS)
软件安装过程配置这些子系统并加载所需的软件包,包括Sensory独立于扬声器的唤醒词引擎和AVS客户端软件等等。
AVS提供了一系列与高级功能(如语音识别,音频回放和音量控制)相关的接口。操作通过来自AVS(指令)的消息和来自客户端(事件)的消息进行。例如,为了响应某些条件,AVS可能会向客户端发送指示,指示客户端应播放音频,设置闹钟或打开灯光。相反,来自客户端的事件通知AVS某些事件,例如来自用户的新的语音请求。
开发人员可以使用AVS器件软件开发套件(SDK)API和C ++软件库来扩展其XMOS套件或XMOS定制设计的功能。AVS Device SDK通过一系列单独的C ++类和对象抽象出低级操作,如音频输入处理,通信和AVS指令管理,开发人员可以使用或扩展它们的定制应用程序(图5)。
Amazon AVS设备SDK的图表
图5:亚马逊AVS设备SDK将AVS广泛的功能组织到单独的功能区域,每个功能区域都有自己的接口和库。(图片来源:AWS)
包含在AVS Device SDK中的完整示例应用程序说明了关键设计模式,包括创建设备客户端和唤醒词交互管理器(清单1)。随着全套样品服务程序,该应用程序显示了主程序如何只需要实例化示例应用程序对象sampleApplication,并用一个简单的命令来启动它:sampleApplication->run()
    /*
     * Creating the DefaultClient - this component serves as an out-of-box default object that instantiates and "glues"
     * together all the modules.
     */
    std::shared_ptr<alexaClientSDK::defaultClient::DefaultClient> client =
        alexaClientSDK::defaultClient::DefaultClient::create(
            m_speakMediaPlayer,
            m_audioMediaPlayer,
            m_alertsMediaPlayer,
            speakSpeaker,
            audioSpeaker,
            alertsSpeaker,
            audioFactory,
            authDelegate,
            alertStorage,
            settingsStorage,
            {userInterfaceManager},
            {connectionObserver, userInterfaceManager});
 
 . . .
 
    // If wake word is enabled, then creating the interaction manager with a wake word audio provider.
    auto interactionManager = std::make_shared<alexaClientSDK::sampleApp::InteractionManager>(
        client,
        micWrapper,
        userInterfaceManager,
        holdToTalkAudioProvider,
        tapToTalkAudioProvider,
        wakeWordAudioProvider);
 
 . . .
 
    client->addAlexaDialogStateObserver(interactionManager);
 
    // Creating the input observer.
    m_userInputManager = alexaClientSDK::sampleApp::UserInputManager::create(interactionManager);
 
 . . .
 
void SampleApplication::run() {
    m_userInputManager->run();
}
清单1:开发人员可以使用AVS Device SDK C ++示例应用程序来扩展设备AVS客户端,AVS Device SDK C ++示例应用程序演示了用于创建AVS客户端,唤醒词交互管理器和用户输入管理器等的关键设计模式。(清单来源:AWS)

Google助手快速原型

XMOS套件加快了亚马逊Alexa原型的开发速度,Seeed Technology的Google AIY语音套件可帮助开发人员使用Google智能助理构建原型。与XMOS AVS套件一样,Seeed Google AIY语音套件可与Raspberry Pi 3板一起构建原型,并提供必要的组件(图6)。
树莓派3与Seeed澳门美高梅娱乐城谷歌AIY语音工具包的图像
图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)。
Seeed Google AIY语音工具包的图像
图7:Seeed Google AIY语音工具包包括一个内部纸板框架,开发人员将其折叠到电路板组件的载体中。(图片来源:Seeed Technology)
框架依次安装在支撑按钮和麦克风阵列的外壳内,完成组装(图8)。
Seeed Google AIY语音工具包的外壳的图像
图8:除了握住内部框架和扬声器之外,Seey Google AIY语音套件的外部外壳还包括按钮和麦克风(看起来像机箱顶部的两个孔)。(图片来源:Seeed Technology)
下载语音套件映像并将其载入到SD卡中后,只需将SD卡插入RPi并打开电路板即可调出套件。经过短暂的初始化过程以确认每个组件的操作,开发人员需要激活Google Cloud端的服务。为此,请设置工作沙箱区域并启用Google智能助理API,以创建和下载身份验证凭据。
最后,开发人员需要在RPi 3上打开一个终端控制台并执行一个Python脚本,以在其套件上启动Google Assistant assistant_library_demo.py。在这一点上,开发人员可以毫不费力地使用各种Google助手功能。

自定义Google智能助理设备

利用Seeed Google AIY语音套件进行自定义开发充分利用了Raspberry Pi的灵活性。Seeed Voice HAT带出了多个已经为典型IO功能配置的RPi 3 GPIO(图9)。
Seeed Voice HAT附加板的图片
图9:开发人员可以使用Seeed Voice HAT附加板上带出的I / O端口快速扩展Seeed Google AIY语音套件的硬件功能。(图片来源:树莓派)
在软件方面,开发人员可以使用Google的语音套件API软件轻松扩展套件的基准功能。除了支持软件和实用程序之外,该软件包还包含示例应用程序软件,演示了通过Google Cloud Speech API和Google Assistant SDK实施语音服务的多种方法。
云语音服务与智能助理方法截然不同,它提供了语音识别功能,将特定的语音启动操作的执行留给了程序员。不过,对于只需要语音输入功能的设计,该服务提供了一个简单的解决方案。开发人员只需将音频传递到云语音服务即可将语音转换为文本,并返回识别的文本,如语音套件API(清单2)中包含的示例Python脚本所示。
 . . .
 
import aiy.audio
import aiy.cloudspeech
import aiy.voicehat
 
 
def main():
    recognizer = aiy.cloudspeech.get_recognizer()
    recognizer.expect_phrase('turn off the light')
    recognizer.expect_phrase('turn on the light')
    recognizer.expect_phrase('blink')
 
    button = aiy.voicehat.get_button()
    led = aiy.voicehat.get_led()
    aiy.audio.get_recorder().start()
 
    while True:
        print('Press the button and speak')
        button.wait_for_press()
        print('Listening...')
        text = recognizer.recognize()
        if not text:
            print('Sorry, I did not hear you.')
        else:
            print('You said "', text, '"')
            if 'turn on the light' in text:
                led.set_state(aiy.voicehat.LED.ON)
            elif 'turn off the light' in text:
                led.set_state(aiy.voicehat.LED.OFF)
            elif 'blink' in text:
                led.set_state(aiy.voicehat.LED.BLINK)
            elif 'goodbye' in text:
                break
 
 
if __name__ == '__main__':
    main()
清单2:在Google Voice Kit API中提供的软件例程中,示例程序的这个片段演示了如何使用Google Cloud Speech服务将语音转换为文本,并将任何语音指导操作的实现留给程序员。(清单来源:Google)
对于需要Google智能助理的更广泛功能的开发人员,Google助手SDK提供了两个实施选项:Google智能助理图书馆和Google智能助理服务。
基于Python的Google智能助理图书馆提供了一种快速实施Google助理的入门方法,如Seeed语音工具包等原型。采用这种方法,原型可以立即利用基本的Google助理服务,包括音频捕获,会话管理和定时器。
与“云语音”方法相反,Google智能助理图书馆通过将每个对话处理为一系列与对话和话语状态相关的事件来管理对话。语音识别完成后,实例化的助手对象将提供包含适当处理结果的事件对象。如另一个Google示例脚本所示,开发人员使用特征事件处理设计模式和一系列if / else语句来处理预期的事件结果(清单3)。
. . .
 
import aiy.assistant.auth_helpers
import aiy.audio
import aiy.voicehat
from google.assistant.library import Assistant
from google.assistant.library.event import EventType
 
 
def power_off_pi():
    aiy.audio.say('Good bye!')
    subprocess.call('sudo shutdown now', shell=True)
 
 
def reboot_pi():
    aiy.audio.say('See you in a bit!')
    subprocess.call('sudo reboot', shell=True)
 
 
def say_ip():
    ip_address = subprocess.check_output("hostname -I | cut -d' ' -f1", shell=True)
    aiy.audio.say('My IP address is %s' % ip_address.decode('utf-8'))
 
 
def process_event(assistant, event):
    status_ui = aiy.voicehat.get_status_ui()
    if event.type == EventType.ON_START_FINISHED:
        status_ui.status('ready')
        if sys.stdout.isatty():
            print('Say "OK, Google" then speak, or press Ctrl+C to quit...')
 
    elif event.type == EventType.ON_CONVERSATION_TURN_STARTED:
        status_ui.status('listening')
 
    elif event.type == EventType.ON_RECOGNIZING_SPEECH_FINISHED and event.args:
        print('You said:', event.args['text'])
        text = event.args['text'].lower()
        if text == 'power off':
            assistant.stop_conversation()
            power_off_pi()
        elif text == 'reboot':
            assistant.stop_conversation()
            reboot_pi()
        elif text == 'ip address':
            assistant.stop_conversation()
            say_ip()
 
    elif event.type == EventType.ON_END_OF_UTTERANCE:
        status_ui.status('thinking')
 
    elif event.type == EventType.ON_CONVERSATION_TURN_FINISHED:
        status_ui.status('ready')
 
 
def main():
    credentials = aiy.assistant.auth_helpers.get_assistant_credentials()
    with Assistant(credentials) as assistant:
        for event in assistant.start():
            process_event(assistant, event)
 
 
if __name__ == '__main__':
    main()
清单3:如Google Voice套件发行版中的示例所示,使用Google智能助理库的应用程序中的主循环会启动一个助理对象,然后生成一系列事件以供开发人员的代码处理。(图片来源:Google)
对于要求更高的自定义要求,开发人员可以转向Google智能助理服务(以前称为Google智能助理gRPC API)提供的全套界面。Google助理服务基于Google RPC(gRPC),允许开发人员将音频查询传送到云端,处理识别的语音文本并处理相应的响应。为了实现自定义功能,开发人员可以使用各种编程语言(包括C ++,Node.js和Java)访问Google助理服务API。
In using the Google Assistant SDK for their own designs, designers can implement hardware specific functionality using Google’s device matching capabilities. As part of the device setup, developers provide information about their custom device, including its functional capabilities and features, called traits. For a user voice request concerning the custom device, the service recognizes valid traits for the device and generates appropriate responses to the device (Figure 10). Developers simply need to include corresponding code associated with the device trait in the device’s event handlers (e.g., def power_off_pi() in Listing 3).
Google智能助理SDK自动语音识别图
图10:Google智能助理SDK使用自动语音识别(ASR)和自然语言处理(NLP)服务将用户请求与特定设备进行匹配,并发布与自定义设备及其认可特征一致的响应。(图片来源:Google)

结论

直到最近,智能语音助手基本上已经远远超过了主流开发者。随着两个现成的套件的可用性,开发人员可以在自定义设计中快速实现亚马逊Alexa和谷歌助手。每个套件都允许开发人员在基本原型中快速调出相应的智能助手,或者使用定制的硬件和软件扩展设计。

(责任编辑:ioter)

用户喜欢...

中国电信发布智能音箱,智能家居语音通道正式开启

随着语音交互澳门美高梅娱乐城及人工智能的不断发展,应用场景从语音助手、智能音箱等方面加速扩围。2014年11月,亚马逊推出...


大联大品佳集团推出基于新唐科技的智能语音识别解决方案

大联大控股宣布,其旗下品佳推出基于新唐科技(Nuvoton)ISD9160+Cyberon算法的语音识别方案,此方案可支持20条本地的语音命令,还可外挂SPI Flash存储声音数据,实现语音唤醒、语音识别、语音...


科大讯飞开始做视觉了,飞鱼2.0会成为你的智能副驾吗?

具体用来证明视觉方面能力的例子是Cityscape的榜单成绩。后者是一个用来评估视觉算法的数据集,可以检验算法在城...


大联大品佳集团推出基于新唐科技的智能语音识别解决方案

致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下品佳推出基于新唐科技(Nuvoton)ISD9160+C...


为什么巨头不约而同重视智能语音开发套件?

麦肯锡《人工智能,下一个数字前沿》报告中,不意外地,语音领域被麦肯锡重点划线了。 报告估计2016年,AI的年度外部投资总额在80亿美金到120亿美金之间,其中机器学习占了近60%的投资。...


Ayla 物联网平台全面支持主流智能语音系统

企业级物联网平台供货商Ayla Networks宣布全面支持目前市面上主流的智能语音助理生态系统,包括Apple Siri、亚马逊Al...


亚马逊智能语音助理Alexa准备前进医疗照护领域

亚马逊的语音智能助理Alexa已经进入到许多人的家庭,现在Alexa也可能进一步跨入到医院。据报导,人工智能助理现在...


巨头扎堆语音入口:三星计划推出智能音箱

三星即将推出一款智能音箱对抗亚马逊的Alexa、谷歌的Google Home,以及苹果的HomePod。IT经理网...


八大Alexa智能语音场景 拯救不开森的焦虑工作狂!

如果你被工作和琐碎的小事缠身,让智能语音Alexa与你一同工作,泄压、解乏、通通搞定...


马云:我没必要去冲击所有行业,而是那些不思进取的

淘宝和顺丰的冲突我也可以趁此讲一下。事发时我在巴黎,顺丰王卫给我发了条简讯,其实我也是看媒体报导才知道...


博聚网