讯飞小车比赛语音控制

第一次写这玩意可能写的不咋地,主要也是看了一些网上的资料后面给了连接,千万不要骂人,不行我删掉。谢谢

1.硬件层面

本次比赛所使用的麦克风为ucar小车自带的环形六麦克风阵列,该麦克阵列采用平面式分布结构,包六个麦克风可实现 360 度等效拾音,唤醒分辨率为 1度。用户可以使用麦克风阵列获取原始和降噪音频,获取唤醒角度,主麦编号也可以设置主麦编号,灯光点亮和关闭。

在麦克风阵列中,我们一般指定一个主麦来实现指定方向声音加强,其他方向抑制的目的,且降噪音频的获取也基于该主麦方向的。若未主动设置主麦,则主麦方向随机,其获取到的降噪音频不一定基于你说话的方向,这时生成的降噪音频可能不是最优的。用户可通过唤醒或手动设置主麦的方式来设置主麦,以此来提高录音质量。

2.麦克风相关ros包

1.上传音频和关闭上传音频(服务)

服务名称:/xf_asr_offline_node/start_record_srv

服务类型:xf_mic_asr_offline::Start_Record_srv

int8 whether_start
---
string result
string fail_reason

内容:1为开启录音,录音开启即开始上传,0 为关闭音频,关闭音频则停止上传。

2.音频流(话题)

话题名称:/mic/pcm/deno

话题类型:xf_mic_asr_offline/Pcm_msg

Int32 length
char[] pcm_buf

内容:话题内容包括两部分,length 表示 pcm_buf 中的长度,即有效音频的大小,pcm_buf 存放的是指定大小的音频字节。

3.唤醒角度被动(话题)

话题名称:/mic/awake/angle

话题类型:std_msgs/Int32

std_msgs/Int32

内容:0-360 之间的整数,分辨率为1,表示唤醒角度。

4.唤醒角度主动(服务)

服务名称:/xf_asr_offline_node/get_offline_recognise_result_srv

服务类型:xf_mic_asr_offline::Get_Offline_Result_srv

---
string result
int32 awake_angle
string fail_reason

内容:0-360 之间的整数,分辨率为1,表示唤醒角度。

5.点亮和关闭灯光(服务)

服务名称:/xf_mic_asr_offline/set_target_led_on_srv

服务类型:xf_mic_asr_offline::Set_Led_On_srv

int8 led_id
---
string result
string fail_reason

内容:0-11 之间的整数,若输入值是 1-11,则分别代表 0-11 号灯。特殊地,99 表示关闭灯光。

6.设置主麦克风(服务)

服务名称:/xf_asr_offline_node/set_major_mic_srv

服务类型:xf_mic_asr_offline::Set_Major_Mic_srv

int8 mic_id #取值为 0-5
---
string result
string fail_reason

内容:输入为 0-5 时,对应编号为 0-5 的麦克风。

7.获取主麦克风(服务)

服务名称:/xf_asr_offline_node/get_major_mic_srv

服务类型:xf_mic_asr_offline::Get_Major_Mic_srv


---
string result
int8 mic_id
string fail_reason

内容:获取主麦 id,0-5.

8.更改唤醒词(服务)

服务名称:/xf_asr_offline_node/set_awake_word_srv

服务类型:xf_mic_asr_offline::Set_Awake_Word_srv

string awake_word
---
string result
string fail_reason

内容:输入字符串形式唤醒词,要 4-6 个汉字,其他参数无效。

8.更改唤醒词(服务)

服务名称:/xf_asr_offline_node/set_awake_word_srv

服务类型:xf_mic_asr_offline::Set_Awake_Word_srv

string awake_word
---
string result
string fail_reason

内容:输入字符串形式唤醒词,要 4-6 个汉字,其他参数无效。

8.获取离线命令词识别结果(服务)

服务名称:/xf_asr_offline_node/get_offline_recognise_result_srv

服务类型:xf_mic_asr_offline::Get_Offline_Result_srv

int8 offline_recognise_start #1 表示开启
int8 confidence #指定置信度
Int8 time_per_order #指定单次离线命令时麦克风接收语音的时长(秒)
---
string result

内容:其中,若离线识别成功检测到文字内容,result 为“ok”,其他情况均反馈为“fail”;
若反馈为“fail”,则 fail_reason 项不再为空,且会返回错误类型。

3.功能包的运行

在运行功能包的时候直接把环形麦克风阵列的功能包xf_mic_asr_offline放到创建好的catkin_ws工作空间中,再进行编译,即使编译成功往往也是不能运行的,比如直接执行:

$ roslaunch xf_mic_asr_offline xf_mic_asr_offline.launch

直接执行启动麦克风接口功能包往往会报错因为还有一些准备工作没有完成。

1.检查麦克风连接是否正常

环形麦克风阵列通过一个usb接口可与电脑连接,在插后输入如下指令:

$ lsusb

若检测到 VID:PID 为 10d6:b003 的设备,则设备读取成功可以进行环境配置以及下一步的工作。

2.配置麦克风的 udev 规则

找到xf_mic.rules这个文件,在此打开终端运行如下指令:

$ sudo cp xf_mic.rules /etc/udev/rules.d/

然后执行如下指令重启 udev 服务:

$ sudo service udev restart

再次重启设备或插拔麦克风设备,然后再重复第一步检查麦克风是否连接成功。

3.安装声卡库和音频播放库

安装必要的声卡库:

$ sudo apt-get install libasound2-dev

安装必要的音频播放库:

 $ sudo apt-get install sox$ sudo apt-get install mplayer

4.配置动态库文件

在功能包的lib文件夹中有动态库文件,根据自己的设备类型选择相应的库进行配置。进相应的文件夹下面打开终端运行 :

 sudo cp lib*.so /usr/lib/

5.为工作空间配置环境

在主目录下打开.bashrc文件在文件最后加入

source /home/lishubo/xf_ws/devel/setup.bash
#(根据实际情况输入绝对路径)

6.修改CMakelist里面的内容

将该文件中18-20行内容进行检查和修改
若为 Nvidia Jetson 平台,则修改为lib/arm64。若为 x64 平台,如笔记本电脑,则修改为lib/x64。

link_directories(
lib/x64
#lib/arm64
)

7.讯飞开放平台

讯飞开放平台的网址为:
https://www.xfyun.cn/
在该平台注册,登录,申请应用,下载离线命令词识别的SKD。

1.替换common.jet文件

将自己下载SKD功能包的common.jet文件复制粘贴到功能包相应的文件夹中,替换掉功能包中原有的common.jet文件。
commonn.jet文件在功能包中的路径为:

xf_mic_asr_offline/config/msc/res/asr
2.更改用户参数文件中的appid

打开参数文件

xf_mic_asr_offline/config/mic_offline_params.yaml

将其中的appid更换为自己的appid。

8.启动

顺利完成上述步骤之后重新编译一下,就可以简单运行这个功能包了

$ roslaunch xf_mic_asr_offline xf_mic_asr_offline.launch

9.错误码

错误码查通道:
https://www.xfyun.cn/document/error-code

10.相关参考教程通道

科大讯飞六麦克环形阵列板快速上手

讯飞六麦环形阵列基本功能测试

讯飞小车比赛语音控制(基础)相关推荐

  1. 【Qbot】6.讯飞文字转语音Api使用/VITS派蒙复读机实现

    该项目计划长期进行维护更新,欢迎star:https://github.com/zstar1003/Qbot 前言 看完流浪地球2之后,萌生了一个想法:我想给机器人完整的一生.作为一个完整的机器人,声 ...

  2. 长话无需短说 讯飞输入法超长语音输入不限时

    原标题:长话无需短说 讯飞输入法超长语音输入不限时 对用户来说,衡量语音输入好坏无外乎两个指标,一个是输入准确率,另一个是识别速度.搭载自然语言理解(NLU)优化模型的讯飞输入法语音识别率提升至98% ...

  3. 5.39 综合案例2.0 - STM32蓝牙遥控小车2(语音控制)

    综合案例2.0 - 蓝牙遥控小车1- 语音控制 成品展示 案例说明 器件说明 小车连线 小车源码 语音模块遥控 语音遥控连线 模块使用说明 1.MLT-BT05 4.0 蓝牙模块 2.ASRPRO-2 ...

  4. 讯飞文本转语音(语音合成TTS)中添加控制静音和停顿方法

    讯飞的文本转语音和语音合成TTS中,用标点符号.回车换行可以实现一定的停顿效果.如果想要更长时间的静音或停顿怎么办? 插入停顿 这里有个特殊的标记实现静音或停顿,在文字中需要停顿的地方加入 [p100 ...

  5. 【AI生态如何从软到硬】专访胡郁:不能把讯飞只看成语音公司

    6月28日,讯飞开放平台"万物一听"智能硬件新品发布会在深圳举行,本次新品发布会除了揭晓硬件方面的新品--"MORFEI 麦克风".二麦DSP芯片降噪方案及光学 ...

  6. 讯飞文字转语音_unity3D

    前言 讯飞语音是国内的智能语音前沿,有语音合成及语音识别还有一些其他高级的语音服务.前面已经写过一篇unity中使用在线语音的方式,不过由于是国外的网站不稳定,速度相对也慢,目前貌似已经不能用了.所以 ...

  7. 讯飞房屋租赁比赛开源

    好久没有写博客了,这里我分享一下最近参加的一个比赛的方案把. 比赛简介 在这个比赛中我们需要通过官方给的数据以及字段说明对房屋的租金进行预测,赛题数据由训练集和测试集组成,总数据量超过30w,包含31 ...

  8. 科大讯飞:讯飞输入法日语音交互次数超10亿,将发力5G和AIoT领域

    蓝鲸TMT频道10月20日,讯飞输入法在10周年沙龙活动中发布了10.0版本,据介绍,该版本搭载了"动态自适应编解码语音识别引擎",新增的唇形辅助输入,能够提高嘈杂环境及近距离多人 ...

  9. 讯飞AIUI集成语音语义的21003错误

    昨天尝试着使用了一下科大讯飞的AIUI,主要是使用其中的语音语义理解,在使用的过程中碰到了一个21003的错误,也就是初始化失败.找了好久问题出现在哪里,最后发现是由于自己的粗心大意,就是缺少了这一关 ...

最新文章

  1. Android开发:怎样把Android studio中的Library公布到Jcenter
  2. 第七周实践项目3 负数把正数赶出队列
  3. 小程序 web socket_程序员的薪水和发展方向大全
  4. java 分布式事务处理
  5. html 圆饼画布,html5 canvas画饼
  6. 【元胞自动机】基于matlab激进策略元胞自动机三车道(开放辅路,软件园影响)交通流模型【含Matlab源码 1298期】
  7. java认证考试例题_2016年Java认证考试题(3)
  8. php是什么币种的外汇英文,外汇币种英文_我要最常用的10个外汇币种和英文简称!_合拍网...
  9. bugku bingo题解
  10. 【数据库基础笔记】3、约束和隔离
  11. 【动手学习pytorch笔记】28.机器翻译数据集
  12. 3个小球放入4个盒子
  13. Android App屏幕旋转要点
  14. IIFE【JavaScript】
  15. DateUtil时间处理插件
  16. css -- position : absolute 在不同的浏览器位置不同
  17. 15天精读掌握《高德纳_具体数学》 第7天 2019.6.3
  18. C# 利用GraphicsPath 画螺旋桨控件
  19. 如何读取照片的GPS信息?—最好的语言Java实现起来就这么简单【手把手教程+完整代码】
  20. 【超图+CESIUM】【基础API使用示例】10、超图|CESIUM - 场景出图、下载当前截图

热门文章

  1. DVWA-Upload(Low、Medium、Hight)
  2. python迷你项目:8个知识点实现今日A股涨跌幅排行榜前10名股票信息
  3. Markdown文档书写规范
  4. 如何正确的关闭计算机 分步骤作答,如何正确关闭电脑谁比较了解
  5. 不调用库函数实现strcpy
  6. 运用Easyx图形库实现火柴人游戏左右跑动
  7. 利用JML开发的一个小例子,附详细注释
  8. Hibernate Annotation的 *ToOne默认的FetchType是EAGER的
  9. 2018之江杯全球人工智能大赛
:零样本图像目标识别 baseline 全部代码+注释+招队友
  10. 左程云老师算法课笔记(三)