[ 讯飞六麦语音linux ] : Linux上科大讯飞六麦语音模块使用方法
1.首先将xf_mic_asr_offine和xf_mic_tts_offine
两个包放在自己创建的工作空间下的src
目录中,接着去科大讯飞开放平台注册自己的账号,并设
置密码。(密码要记住哦!)
2.点击“控制台”,点击“创建新应用”,输入自己的应用的名字(随便输入),下面的选项同理。完成后会生成一个以自己设置的应用的名字为名字的应用,
(还会有一个APPID,这个巨重要!)。
3.接着点进去,看左侧的那一栏,点击“语音识别”,然后你就会看到最下面的那一个为"离线命令词识别",点击他。
4.在右侧那一栏中你会看到有个"linux MSC",而且后面还跟个“1227”,点击右侧的”下载“。
5.然后出现的第一个是你的应用名称,第二个你需要把平台选为“linux”,稍等片刻,依次点亮“离线命令词识别”,“离线语音合成(普通)”。(这一步很重要!)
6.接着点击“SDK下载”(注意这一步必须要你实名认证了才能下载),下载好了之后,将zip文件提取。
7.将库文件导入自己的库中,依次点击提取的文件中的libs->x64
,然后你就会看到libmsc.so
的库文件,然后在当前页面打开终端,输入
sudo cp libmsc.so /usr/lib/
即可。
8.文件与路径与APPID的更换,巨重要!千万不能出错!
(1)依次点击提取的文件中的bin->msc->res->asr,
然后你就会看到有一个名为common.jet
的文件。我们要用它替换掉xf_mic_asr_offine-
>config->msc->res->asr
中的common.jet
。并将Grmuild
删掉。
(2)依次点击提取的文件中的bin->msc->res->tts
,然后你就会看到有一个名为common.jet
和xiaofeng.je
t和xiaoyan.jet
的三个文件。我们要用
这三个文件替换掉 xf_mic_tts_offine->config->config->msc->res->tts
中的三个文件。
(3)在自己创建的工作空间中左侧文件栏找“搜索”选项,在文件中找到旧的appid号,将其复制到搜索的第一栏中,并将上文提到的自己创建的appid号
放到替换一栏中,点击“全部替换”。
(4)在自己创建的工作空间中左侧文件栏找“搜索”选项,在文件中找到旧的路径,例如/home/robotprg/xf/src/xf_mic_asr_offline
,将其复制到
搜索的第一栏中,换成自己的用户名和工作空间名,
例如/home/
用户名/工作空间名/src/xf_mic_asr_offline
,其他不变,然后进行全部替换。
(5)最后进行编译,只要到100%就行。
9.配置udev
规则,找到xf_mic.rules
所在的文件夹,在当前页面打开终端,运行
sudo cp xf_mic.rules /etc/udev/rules.d/
接着运行
sudo service udev restartsh
10.安装驱动
(1)声卡库
sudo apt-get install libasound2-dev s
(2)音频播放库
sudo apt-get install sox
sudo apt-get install mplayer
(3)命令输入lsusb,如果检测到了10d6:b003
的设备,麦克风设备读取成功!
11.在终端运行xf_mic_asr_offine
和xf_mic_tts_offine
两个launch文件就可以进行语音人机交互了。注意人只能说call.bnf中的关键词才能被语音模
块识别到!
12.有关于bnf语法
BNF(巴科斯范式)是一种用来描述语法的语言,它能够以简洁的方式定义编程语言或命令格式。
在编写BNF文件时,需要遵循一定的结构和规则,比如使用“::=”来表示非终止符和它的替换规则。例如,如果用BNF来定义中文句子的结构,可能会写出如下的规则:<句子> ::= <主语><谓语><宾语>,其中<主语>、<谓语>和<宾语>都是非终止符,它们可以进一步被名词、代词、动词、形容词等其他非终止符或终止符替换。
BNF使用一些特定的符号来表示选项和重复:
| 表示选择,即“或”的关系。
, 用于分隔列表中的项。
[ ] 表示里面的部分是可选的。
{ } 表示里面的部分可以重复
例如
#BNF+IAT 1.0 UTF-8;
!grammar call;
!slot <thing>;
!slot <direction>;
!start <callstart>;
<callstart>:<first>|<second>|<third>|<forth>|<fifth>|<end>;
<first>:(启动|关闭)跟随模式|(启动|关闭)导航|建图模式|保存地图|停下|跟我走|准备打开跟随;
<second>:该点要放置<thing>;
<third>:[<action>][<Locations>][<name>];
<forth>:living room;
<fifth>:go to;
<end>:我需要的物品是<thing>|我想要的商品是<thing>|我想要<thing>;
<Locations>:corridor|bedroom|dining room|living room|kitchenble|sink|counter|dishwasher;
<name>:Alex|Charlie|Elizabeth|Francis|Jennifer|Linda|Mary|Patricia|Robin|Skyler|Jame;
<action>:go|Follow|navigate;
<thing>:饼干|薯片|乐事薯片|可乐|芬达|水|洗手液|洗洁精|雪碧|曲奇|面包|收银台;
<direction>:左|右|左边|右边;
<finally>:去终点|去收银台;