热门标签 | 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




推荐阅读
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社区 版权所有