6.语音板使用科大讯飞离线命令词识别

语音识别技术(AutoSpeechRecognize,简称ASR),就是把人的自然语言音频数据转换成文本数据的技术。理论上在线ASR是可以把所有的语音转换成对应的文本,但是我们这里只是介绍离线ASR的应用,就是只在本地识别个数受限制的语音。这里的离线ASR识别就是离线的命令词识别,又可以叫语法识别,它是基于语法规则,可以将与语法一致的自然语言音频转换为文本输出的技术。语法识别的结果值域只在语法文件所列出的规则里,故有很好的匹配率。另外,语法识别结果携带了结果的置信度,应用可以根据置信分数,决定这个结果是否有效。语法识别多用于要更准确结果且有限说法的语音控制,如在家庭环境中空调、电视、电灯的控制。因为这些设备的只有几个确定的常用固定功能。所以做出离线的识别就非常适合,这里在使用离线语法识别时,需要先编写一个语法文件,然后通过调用QISRBuildGrammar接口编译本地语法文件,以及获得语法ID,并在会话时,传入语法ID,以使用该语法,在之后的会话中,继续使用此语法进行识别,无需再次构建。

当下载好SDK后,我们就可以将其发送到树莓派板子上,大家可以使用如下的命令进行操作:

scpLinux_aitalk1226_5d5b***.zipcorvin@192.168.*.*:~/

这里需要注意的是发送的文件名和树莓派板的IP地址,大家需要根据自己的情况来做相应修改即可,如下图所示:

在树莓派上我们首先需要将离线命令词识别的SDK压缩包解压,完整的解压命令如下:

unzip-qLinux_aitalk1226_5d5b9efd.zip-dxf_aitalk/

接下来就是修改一下Makefile文件了,因为在make.sh中我们修改了编译时加载库的路径。主要就是修改13行的LDFLAGS,最终修改后的Makefile文件如下:

#commonmakefileheaderDIR_INC=../../includeDIR_BIN=../../binDIR_LIB=../../libsTARGET=asr_offline_record_sampleBIN_TARGET=$(DIR_BIN)/$(TARGET)CROSS_COMPILE=CFLAGS=-g-Wall-I$(DIR_INC)LDFLAGS:=-L$(DIR_LIB)/LDFLAGS+=-lmsc-lrt-ldl-lpthread-lasound-lstdc++OBJECTS:=$(patsubst%.c,%.o,$(wildcard*.c))$(BIN_TARGET):$(OBJECTS)$(CROSS_COMPILE)gcc$(CFLAGS)$^-o$@$(LDFLAGS)%.o:%.c$(CROSS_COMPILE)gcc-c$(CFLAGS)$<-o$@clean:@rm-f*.o$(BIN_TARGET).PHONY:clean#commonmakefilefoot在修改好make.sh和Makefile文件后,我们就可以来开始编译程序了,编译过程也很简单,我们直接在源码目录下执行make.sh脚本就可以了:

当我们执行完make.sh编译脚本后,就可以在bin目录下生成可执行文件asr_offline_record_sample。但是在执行之前,我们需要认识一下这个巴科斯范式格式的语法文件,因为这个语法文件就是我们后面要离线识别的命令词了。如下图所示:

在了解了语法文件后,我们还需要查看下示例源码,因为这里的语法文件中的规则,我们是可以动态的更新的。就是说我们不用重新启动程序,就可以实时的修改检测的语法规则,更新语法规则的API如下:

那接下来看一下在asr_offline_record_sample.c源码中是如何更新本次语法词典文件的,调用该API的代码如下:

那在了解整个示例程序的流程后,我们就可以来测试离线命令词识别的效果了,如下视频所示:

前面的一节介绍的是科大讯飞提供的示例代码,在了解背后的原理后,我们就可以来自己修改源码,实现自己想要的功能了。那我们在这里可以利用离线命令词识别这个功能,实现一个家庭里电灯的控制。由于我们的语音板上自带有一个可以编程控制的LED灯,那么我们就把这颗LED灯当做家里的电灯来使用。这样我们利用离线命令词识别,就可以实现一个电灯控制的示例了。那首先第一件事,我们就是要创建我们自己的语法文件了。在编写语法文件之前,我们还是要先来学习一下这种巴科斯范式的语法规则。大家可以在SDK源码目录下的docs中找到该完整的手册,我这里给大家简单介绍下需要的知识点,如果要想学习完整的语法编写规则还是要好好的学习下文档。

1.记号:对应英文为Token,其描述了用户语音所对应的文本内容,类似于“说法“,如“中国|美国”表示支持中国|美国两个记号的并列。

2.语义:对应英文为Sementic,表示用户说法所对应的用户所关心的内容,在应用开发中,可以将部分语义内置于语法文本中,以方便应用程序的处理。如在语音拨号的场景中,记号对应为“火警”,而语义为“119”。通过在语法中定义“火警”的语义,当用户说法为“火警”时,识别引擎将“119”返回给应用程序,而无须在应用程序内部再进行文本的解释工作,大大方便了应用程序的开发。

3.规则:规则定义了一系列记号及其相互关系的集合,且可以包含其它子规则。通过指定规则的唯一的名称,使其它的规则可以通过名称引用该规则。

4.槽:槽是一种特殊的规则。槽描述了一系列记号的并列关系,且不包含任何子规则。利用AitalkSDK,用户可以在程序运行过程中实时增减槽中的记号。借用此功能,用户通过定义槽,描述语法中的频繁变化的内容,如通讯录中的人名,而无须更改语法文件。

在这里我们编写一个自己的语法识别文件,我们命名为control.bnf,具体的内容如下:

#BNF+IAT1.0UTF-8;!grammarcontrol;!slot;!slot;!start;:;:打开!id(1)|关闭!id(2);:灯!id(3)|风扇!id(4);可以看出来,我们这里打算控制两个设备。分别是灯和风扇,那这里的语法就可以识别:“打开灯”、“打开风扇”、“关闭灯”、“关闭风扇”四个命令了。这里需要注意一下!id()的作用,它其实就是起到一个字符串的标识的作用,当id=1的时候就知道是“打开”,当id=2的时候就知道是“关闭”。那我们接下来就可以来修改下asr_offline_record_sample.c这个源码文件了,修改后的具体代码如下:

最后我们来测试一下,看看我们自己的语法文件能否来控制灯和风扇,在这里的风扇控制我是外接了一个继电器模块,通过树莓派上的GPIO.25来控制继电器的通断,从而可以控制风扇的通电、断电。可以先看一下测试设备,如下图所示:

下面来看视频演示效果:

在这里需要注意的是离线语音识别返回的结果格式,这里返回的是xml格式的结果。其实还可以修改为json格式,大家可以根据自己的编程习惯来选择对应的来解析。我这里默认选择的是xml格式,那反馈的xml格式结果就是如下图所示这样:

如果你想要反馈json格式的结果该怎么修改代码呢?这里就需要修改下run_asr()函数中调用语音识别时候的参数了,如下图所示:

假如修改为json格式,那反馈的结果是什么样子呢?如下所示:

voidcontrolDevice(intdeviceID,intflag){if(LED_DEVICE==deviceID)//controlledlight{if(ON==flag)//lighton{digitalWrite(LED_PIN,LOW);}else//lightoff{digitalWrite(LED_PIN,HIGH);}}else//controlfandevice{if(ON==flag)//fanon{digitalWrite(FAN_PIN,HIGH);}else//fanoff{digitalWrite(FAN_PIN,LOW);}}}0x05测试源码下载我已经将所有的测试代码都上传到AIVoiceSystem这个代码仓库中,大家可以从以下链接中找到对应的代码,所有这些测试代码都是放在example目录下:

当前在代码仓库中有两个分支,一个是master分支,主要是为非树莓派4板子使用的。另外一个分支是pi4-devel,这个是专门为树莓派4新开的分支代码。如果大家使用的是ROS小课堂发布的树莓派4的ROS系统镜像的话,那就可以使用这个分支的代码。

THE END
1.有什么输入法可以离线语音在安卓手机上,用户可以使用百度手机输入法和讯飞中文输入法进行离线语音输入。这两种输入法均提供了下载离线语音包的功能,以便在没有网络连接的情况下也能实现语音输入。对于电脑用户而言,目前市面上并没有可以直接离线使用的语音输入法。然而,IBM的Viavoice软件能够将录音转换成文字,为用户提供了一种替代https://zhidao.baidu.com/question/1779641331310254620.html
2.播放最新语音,探索语音技术的无限可能实时数据随着科技的飞速发展,语音技术已经成为我们日常生活中不可或缺的一部分,从手机助手到智能家居,从车载系统到智能穿戴设备,语音交互正改变着我们的生活方式,本文将带您走进语音技术的世界,探讨如何播放最新语音,以及这一技术给我们带来了哪些便利和可能性。 语音技术的发展 http://blog.o1o1o.cn/post/75.html
3.人工智能语音系统新一代交互技术的革命性变革在过去,人们通过键盘与计算机进行交流,虽然方便快捷,但对于视力障碍者或手部行动不便的人群来说却是一个巨大的障碍。随着人工智能技术的发展,语音识别系统逐渐成熟,它使得人们可以通过声音来与电脑进行交流,这为那些传统输入方式带来困难的人群打开了大门。 智能对话:自然语言处理的进步 https://www.xstkmqmgl.cn/zhi-neng/522024.html
4.人工智能语音系统革命性的通讯新篇章人工智能语音系统(AI-Voice)是基于先进的人工智能技术,能够模仿人类语言的理解和生成能力。它不仅能识别并响应各种口音、速度和说话方式,还能在多种语言之间进行转换。这项技术的发展,不仅改变了我们与计算机交互的方式,也为各行各业带来了前所未有的便利。 https://www.qoqyvmbk.cn/shu-ma/376615.html
5.人工智能语音系统未来通信的新纪元随着人工智能技术的发展,语音识别率已经大幅提高,可以准确无误地将人类的声音转换成文字或命令。这种技术在手机助手、智能家居设备和自动客服中得到了广泛应用。例如,苹果公司推出的Siri、亚马逊的Alexa以及谷歌助手等都依赖于先进的人工智能算法来理解和响应用户的声音。 https://www.fmovhaqkz.com/xing-ye-zi-xun/58065.html
6.人工智能语音系统智慧对话的未来探索人工智能语音系统的定义与发展历程 智能对话的起点:人工智能语音系统是指通过计算机技术实现的人类语言理解和生成能力,能够模仿人类交流方式。自20世纪50年代以来,随着科技的进步,这一领域经历了从简单命令识别到复杂自然语言处理的巨大飞跃。 人工智能语音系统在日常生活中的应用 https://www.ykngnhhi.cn/xing-ye-zi-xun/458444.html
7.人工智能语音朗读在线掌阅在线语音朗读总是切到离线声音?一、掌阅书城在线语音朗读和离线语音朗读有什么区别? 1. 在线语音朗读和离线语音朗读有区别。 2. 在线语音朗读是指通过网络实时获取语音朗读服务,需要保持网络连接才能使用。离线语音朗读是指将语音朗读功能嵌入到设备或应用程序中,不需要网络连接即可使用。 https://tool.a5.cn/article/show/73205.html
8.ASR语音识别服务什么是语音识别语音识别优势语音识别计费华为云短语音识别将口述音频转换为文本,通过API调用识别不超过一分钟的不同音频源发来的音频流或音频文件。适用于语音搜索、人机交互等语音交互识别场景。https://www.huaweicloud.com/special/asr-wzzhyy.html
9.modelscope是一款功能强大的语音离线文件转写服务,拥有完整的语音识别链路,结合了语音端点检测、语音识别、标点等https://developer.aliyun.com/ask/588349
10.离线/离在线语音模组:智能家电的声控心脏离线语音模组是什么? 离线语音模组是一种基于数字信号处理(DSP)技术的硬件设备,它能够在不依赖云端服务的情况下,直接在设备上进行语音识别和合成。这种模组具有自然语言语音识别、语音交互等功能,具有低延时、低功耗、高稳定性和高安全性等特点。离线语音模组通过内置的词条和先进的智能语音识别算法,能够在本地处理语音https://www.hzdusun.com/ai-voice-recognition-module-offline.html
11.语音控制灯的原理是什么智能语音灯有哪些→MAIGOO知识语音控制灯的原理是什么 智能语音灯有哪些 家装设计范 摘要:在当下,智能产品已然成为一种潮流,各种各样的智能家电进入我们的生活,智能灯也不例外。智能语音灯是区别于传统的可以用语音控制的灯。再细分为离线语音灯和在线语音灯。离线语音灯是指,不需要联网,通过芯片可以控制语音指令,来控制灯的状态。在线语音灯需要https://m.maigoo.com/goomai/214549.html
12.华米gtr3pro,可能是zdm第一个详细测评~智能手环离线语音唤醒有三种方式可以选择,我之前选的是转腕后5s内响应,但是只要你转腕,过一会儿就会出现语音识别的标志,即时你并不想用,而且跑步的时候我一抬手就自动暂停,怀疑就是这个功能搞的鬼,于是就把它关了,有需要的朋友可以看看。 心率 运动时的心率已经测试过还算准确,但是安静时的心率误差就很大。我手边的设备https://post.m.smzdm.com/p/a4dq9r98/
13.未来智能座舱什么样?看集度汽车机器人的极致科技体验也就是说,无论是车内的驾驶员还是前后排乘客,亦或是在车外,都可以控制车辆。即使在隧道、停车场、山区等弱信号乃至断网场景下,也能够和车机正常对话,实现全离线语音的交流,做到“可见即可说”、“可触即可控”。 其次,是多模融合交互。即在智能语音识别之外,提供视觉感知、声纹识别、姿势及唇语动作捕捉等多摸融https://weibo.com/ttarticle/p/show?id=2309404791209012102195
14.离线导航软件哪个好?手机离线免费导航下载离线导航软件指的就是安装了导航后可以不联网使用的手机地图导航;它主要是依赖于提前下载号的手机离线地图资源,能够帮助用户在一定程度上离线使用;同时也支持GPS定位,实时显示运动轨迹以及地图浏览缩放等等,能够更大程度上方便用户出行;目前一些常用热门导航软件均有离线导航功能,如百度地图、凯立德、腾讯地图、高德地图等等http://www.downcc.com/k/codawfz/
15.有道翻译官是否有离线发音语音包?然而,对于许多用户来说,他们关心的一个问题是:有道翻译官是否拥有离线发音语音包?接下来,我们将深入探讨这一问题。 首先,让我们了解什么是离线发音语音包。离线发音语音包是一种特殊的功能,允许用户在没有网络连接的情况下,通过下载预先录制的语音包来听译文的发音。这对于那些需要快速翻译但又不希望因为网络连接问题https://www.sousou.com/wd/41599.html
16.离线式语音AI芯片的现状和未来电子创新网直播离线式语音AI芯片的现状和未来 ┃ 直播详情 ┃ 要轻松智能地操控电子产品,什么方式最好? 自然是智能语音交互方式,因为这是人类最自然的交互方式。 但传统上采用DSP和MCU等架构的语音芯片已无法满足智能化语音时代对计算能力、处理速度和智能算法的需求,要让设备识别不同的语音控制指令,就需要用到智能语音AI芯片。 https://v.eetrend.com/node/100572842
17.{转帖}可离线的文本转语音工具MultiTTS新版v1.5.3.1(听书专用MultiTTS是一款免费可离线的文本转TTS语音工具,旨在为其它阅读软件提供丰富多5样的AI语音包,实现多音色的无障碍朗读功能,从而提升离线听书体验。弥补了手机系统自带的单一乏味2且生硬的TTS语音引擎。目前市面上大多数语音引擎都需要通过联网API接口才能使用。此外,许多小说听书破软件要么充斥满天飞的广告,要么需要付费才能https://forum.freemdict.com/t/topic/30065
18.Eleven2012/KASRSDK:语音识别SDK,集成siri和百度sdk,支持离线语音识别SDK,集成siri和百度sdk,支持离线识别 简书地址:IOS音视频(四十六)离线在线语音识别方案 @TOC 最近做了一个语音识别相关的研究,因为公司需要使用离线语音识别功能,为了兼顾性能和价格方面的问题,最终选择的方案是,在线时使用siri,离线使用百度语音识别方案。 封装了一个离线在线合成的SDK:语音识别SDK 这个Demo里面https://github.com/Eleven2012/KASRSDK
19.科大讯飞/百度/阿里/腾讯(BAT)智能语音识别(ASR)性能对比选择预计离线语音识别服务使用 RESTful API 识别语音文件,采用异步方式通知业务方全部文本结果。离线语音识别接口采用 HTTPS 协议,支持语音 URL 和本地语音文件两种请求方式。离线语音识别适用于多种标准语音格式的长段语音文件,通常应用于对识别结果返回时延要求不高的场景。目前支持的采样率为 8K 和 16K,仅支持中文。可以应用https://ptorch.com/news/192.html
20.Android语音离线识别离线语音识别模块1、什么是语音识别模块 语音识别模块是在一种基于嵌入式的语音识别技术的模块,主要包括语音识别芯片和一些其他的附属电路,能够方便的与主控芯片进行通讯,开发者可以方便的将该模块嵌入到自己的产品中使用,实现语音交互的目的。 离线语音模块 与 在线语音模块的区别: https://blog.51cto.com/u_16099186/8133241
21.毕业设计STM32智能垃圾桶自动识别各类垃圾去年上海老阿姨灵魂拷问“你是什么垃圾”犹在耳边,苏州也开启了垃圾分类之路。垃圾如何分类难倒了很多人,你看,有位同学就利用STM32做了个智能分类的垃圾桶 智能垃圾桶功能概述 离线语音识别识别垃圾种类并且垃圾桶自动翻盖:说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应关键词,便会将结果通过串口https://www.darwinlearns.com/productinfo/207947.html