热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

flask与js交互的示例代码_基于EAIDK310和SoundAIAzero的语音交互系统

一、概述语音交互技术的发展,给我们的生活带来了很大的改变,智能音箱就是其典型的应用产品,比如现在常见的小爱、小度、天猫精灵等智能音箱。我们

一、概述

语音交互技术的发展,给我们的生活带来了很大的改变,智能音箱就是其典型的应用产品,比如现在常见的小爱、小度、天猫精灵等智能音箱。我们通过与智能音箱对话,就可以实现听歌、听书、听新闻等等功能。

今天,我们就介绍下以EAIDK-310开发套件为核心,“制作”一款智能音箱,通过语音交互,让它给我们唱歌、读书、讲段子。

二、产品介绍

EAIDK(Embedded Artificial Intelligence Development Kit)- 嵌入式人工智能开发套件,是全球首个采用Arm架构的人工智能开发平台,是OPEN AI LAB专为 AI 开发者精心打造,面向边缘计算的人工智能开发套件。硬件平台具备语音、视觉等传感器数据采集能力,及适用于多场景的运动控制接口;智能软件平台支持视觉处理与分析、语音识别、语义分析、SLAM等应用的基础平台和主流开源算法,满足端侧AI教育、算法应用开发、产品原型开发验证等需求。

EAIDK-310作为EAIDK产品系列中的一款套件,该套件硬件平台使用的是含有4核A53 CPU的高性能Arm SoC(瑞芯微rk3228H),通过搭载OPEN AI LAB开发的嵌入式深度学习框架Tengine,为AI应用提供简洁、高效、统一的API接口,加速终端AI产品的场景化应用落地实现。同时,使用自建的源服务器,便于用户快速上手使用。

EAIDK平台,配置专有更新源文档内容服务,该源服务器支持Tengine/Blade CV以及其他标准第三方软件安装和更新。

6e8169958a1724f54e2691578ff1fa96.png

EAIDK-310 硬件规格

002e26da889335b738f8ca2ccb6d0590.png

EAIDK-310 软件规格

31e7df5dc32831e677bd4499eca7fd49.png

实现本案例除了需要一块EAIDK-310核心板,我们还需要一个usb麦克风阵列和一个usb音箱 。麦克风阵列用于音频采集,usb音箱用于音频播放。

本案例中我们使用的是4mic麦克风线型阵列SoundPi linear麦克风模组,购买链接(https://dwz.cn/67hqlbFD)。

三、操作步骤


3.1 下载源码

首先我们从下面链接中下载源码包Azero_SDK_for_Linux.tar.gz
ftp://ftp.eaidk.net/EAIDK310_Source/SoundAI/

把下载好的源码包拷贝到U盘,把U盘插入EAIDK310设备usb口,将源码包拷贝到板子目录下

cp /run/media/openailab/Azero_SDK_for_Linux.tar.gz ~

解压源码包Azero_SDK_for_Linux.tar.gz,然后进入Azero_SDK_for_Linux目录

tar -xzvf Azero_SDK_for_Linux.tar.gz
cd Azero_SDK_for_Linux/

可以看到,SDK工程结构如下

|-- sai_config : 配置文件、唤醒模型目录
|-- include : Azero SDK的.h文件
|-- link-libs : 编译示例代码所需的依赖库,目录中分版本放置。
    |-- lib : Azero SDK库
    |-- libvlc : SDK依赖的播放器库,默认支持的播放器为VLC
    |-- 其它 :其它类型的播放器,视版本而定
|-- src : 示例代码
    |-- main.cpp
|-- toolchain-cmake :cmake交叉编译配置文件

3.2 修改文件参数

下载源码后,我们需要根据我们设备实际情况修改某些文件参数,如麦克风节点、比特率等。

首先将麦克风通过USB接口连接到EAIDK-310开发套件e00f87a791964fe0becd19682b767811.png

此时可以在开发套件上用命令可查询到麦克风线性阵列的设备节点,结果如下:

arecord -l

33c1fcc3789822e41d3452574d99962b.png

从上图可知,card2就是我们的usb麦克风阵列,设备节点为2,0

修改代码Azero_SDK_for_Linux/src/main.cpp的麦克风数量mic_num和实际节点号*hw,此麦克风比特率默认16000。

void* load_plugin_basex() {  
   void *handle;  
   int mic_num = 4;  
   int board_num = 8;  
   int frame = 16*16;  
   const char *hw = "hw:2,0";  
   char chmap[16] = "0,1,2,3,4,5,6,7";  
   handle = SaiMicBaseX_Init(board_num, mic_num, frame, hw);  
 
   SaiMicBaseX_SetBit(handle,16);  
   SaiMicBaseX_SetSampleRate(handle,16000);  
   SaiMicBaseX_SetMicShiftBits(handle,16);  
   SaiMicBaseX_SetRefShiftBits(handle,16);  
   SaiMicBaseX_SetPeroidSize(handle,512);  
   SaiMicBaseX_SetBufferSize(handle,2048);  

注:在修改上述参数之前,我们可以先使用arecord进行录音测试,看是否能够正常获取音频数据,以此为依据来确认我们mic的具体参数

arecord -Dhw:2,0 -d 10 -f S16_LE -r 16000 -c 8 -t wav test.wav

参数解析
-D 指定了录音设备,2,0 是card 2 device 0的意思
-d 指定录音的时长,单位时秒
-f 指定录音格式
-r 指定了采样率,单位时Hz
-c 指定channel 个数
-t 指定生成的文件格式

拷贝资源及配置文件到/data目录

sudo mkdir -p /data
sudo chmod 777 /data
sudo cp sai_config/arm/* /data -rf

设置环境变量,指定动态链接库路径

export LD_LIBRARY_PATH=./link-libs/aarch64-linux-gnu/lib/

3.3 编译运行

根据麦克风实际情况修改完上述参数后,即可执行编译

./run.sh aarch64-gnu

编译成功的话会显示如下08c8e08d268db9efbee657735427e9d5.png

执行如下命令来启动软件

./sai_client

启动软件之后,在联网的情况下,通过喊 “小艺小艺”来唤醒设备,然后即可进行语音交互。将 usb音箱接到EAIDK-310开发套件上,即可听到小艺的回应。

到这里,我们就可以与小艺进行对话了。除常见的聊天、新闻、广播、天气、音乐等功能外,还可以查百科、查路况、听相声、做算术等,有几十项实用、好玩的技能,内容还是比较丰富的,可以满足简单的娱乐需求。

3.4 补充

main.cpp软件初始化时有三个重要参数:clientIdproductId以及device_SN(Device Serial Number)。其中,clientIdproductId用以标识产品类别,device_SN用以标识个体设备。

//config customer info    
const char *client_ID = "xxxxxxxx"; //set to your own client    
const char *product_ID = "xxxxxxxx"; //set your owner product ID    
const char *device_SN = "xxxxxxxx"; //set the unique device SN.
azero_set_customer_info(client_ID,product_ID,device_SN);

此处软件已经配置了默认的ID ,所以上面我们跳过了这个步骤;如需使用自己创建的技能,可以参考https://github.com/sai-azero/Azero_SDK_for_Linux的《示例运行》,注册、填写自己的clientIdproductId以及device_SN等参数,重新编译运行即可。

关于麦克风阵列,此处使用的是声智科技的4mic线型阵列,另外也可以使用声智科技的6mic环型阵列,如下图

1257c8efa4685e4f93a0faa68ae91de6.png

四、总结

此案例可以帮助大家在EAIDK-310开发套件上完成SoundAI Azero语音交互系统示例的部署和运行。

通过此案例,EAIDK-310摇身一变,成为了我们所熟知的智能音箱。智能语音助手是存在于智能音箱中的虚拟形象,当你无聊的时候,或者需要提神醒脑的时候,可以试着问它一些“有趣的问题”,或许能够得到一些“有趣的回答 ”。

如有疑问或想要了解更多关于EAIDK开发平台方面的内容,欢迎加入EAIDK开发者大本营,QQ群:625546458。

16445bfc75df6bcc3b3347ade3fb0db2.png

b373f9018979cc770f2b4c5909d31bb4.png




推荐阅读
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • mapreduce数据去重的实现方法
    本文介绍了利用mapreduce实现数据去重的方法,同时还介绍了人工智能AI领域中常用的框架和工具,包括Keras、PyTorch、MXNet、TensorFlow和PaddlePaddle,并提供了深度学习实战的代码下载链接。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • linux下的mesa一般版本比较低,按照高版本mesa1.下载代码下载路径:https:www.mesa3d.org用git下载容易失败。用Downl ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • TensorFlow入门上
    前置准备在阅读本文之前,请确定你已经了解了神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。神经网络初探​chrer.com也可以直接在我博客阅读Te ... [详细]
  • 目录一、window下的配置0、准备工作1、python3.5安装2、tensorflow1.9的安装3、测试二、Ubuntu下的配置0、准备工作.1、python ... [详细]
  • tengine(nginx)部署文档
    环境:centos67安装(1)安装更新所需组件工具#yumupdate#yuminstallgccgcc-c++autoconfautomake(2)准备安装包tengine-2 ... [详细]
author-avatar
qtl4431541
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有