谷谷小师妹 发表于 2023-10-21 22:22:57

智能离线语音识别全屋智能语音控制方案

智能离线语音识别全屋智能语音控制方案


应用场景演示//player.bilibili.com/player.html?aid=555729991&bvid=BV1jv4y1M7s1&cid=765292199&p=1
概述
方便用户控制智能设备、电器,用户只须说一下口令就实现制智能设备、电器。
特性
电气特性1、供电:DC===5V 0.5A2、功耗:
[*]待机-----0.1mA
[*]工作-----300mA
Zigbee相关参数(了解Zigbee,请参阅:介绍一款高性比的Zigbee无线模块,我们烧录好程序的,开箱即用)
[*]通讯频率:2.4G
[*]接收灵敏度:-95dBM      
[*]通信协议:ZigBee3.0协议
[*]发射功率:20.5dB
语音相关参数
[*]支持语种: 默认普通话+自学习语言及其他语种
[*]扬声器: 4欧姆2.5W
[*]识别距离:远场离线语音识别15米内
系统框架
语音识别原理
语音识别的本质就是将语音序列转换为文本序列,其常用的系统框架如下:接下来对语音识别相关技术进行介绍,为了便于整体理解,首先,介绍语音前端信号处理的相关技术,然后,解释语音识别基本原理,并展开到声学模型和语言模型的叙述。
一、语音前处理
前端的信号处理是对原始语音信号进行的相关处理,使得处理后的信号更能代表语音的本质特征,相关技术点如下表所述:
1、语音端点检测
语音端点检测(VAD)用于检测出语音信号的起始位置,分离出语音段和非语音(静音或噪声)段。VAD算法大致分为三类:基于阈值的VAD、基于分类器的VAD和基于模型的VAD。
[*]基于阈值的VAD是通过提取时域(短时能量、短时过零率等)或频域(MFCC、谱熵等)特征,通过合理的设置门限,达到区分语音和非语音的目的;
[*]基于分类的VAD是将语音活动检测作为(语音和非语音)二分类,可以通过机器学习的方法训练分类器,达到语音活动检测的目的;
[*]基于模型的VAD是构建一套完整的语音识别模型用于区分语音段和非语音段,考虑到实时性的要求,并未得到实际的应用。
2、降噪
在生活环境中通常会存在例如空调、风扇等各种噪声,降噪算法目的在于降低环境中存在的噪声,提高信噪比,进一步提升识别效果。常用降噪算法包括自适应LMS和维纳滤波等。
3、回声消除
回声存在于双工模式时,麦克风收集到扬声器的信号,比如在设备播放音乐时,需要用语音控制该设备的场景。回声消除通常使用自适应滤波器实现的,即设计一个参数可调的滤波器,通过自适应算法(LMS、NLMS等)调整滤波器参数,模拟回声产生的信道环境,进而估计回声信号进行消除。
4、混响消除
语音信号在室内经过多次反射之后,被麦克风采集,得到的混响信号容易产生掩蔽效应,会导致识别率急剧恶化,需要在前端处理。混响消除方法主要包括:基于逆滤波方法、基于波束形成方法和基于深度学习方法等。
5、声源定位
麦克风阵列已经广泛应用于语音识别领域,声源定位是阵列信号处理的主要任务之一,使用麦克风阵列确定说话人位置,为识别阶段的波束形成处理做准备。声源定位常用算法包括:基于高分辨率谱估计算法(如MUSIC算法),基于声达时间差(TDOA)算法,基于波束形成的最小方差无失真响应(MVDR)算法等。
6、波束形成
波束形成是指将一定几何结构排列的麦克风阵列的各个麦克风输出信号,经过处理(如加权、时延、求和等)形成空间指向性的方法,可用于声源定位和混响消除等。波束形成主要分为:固定波束形成、自适应波束形成和后置滤波波束形成等。
二、语音识别的基本原理
所谓语音识别,就是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取、声学模型、语言模型以及字典与解码四大部分,其中为了更有效地提取特征往往还需要对所采集到的声音信号进行滤波、分帧等预处理工作,把要分析的信号从原始信号中提取出来;之后,特征提取工作将声音信号从时域转换到频域,为声学模型提供合适的特征向量;声学模型中再根据声学特征性计算每一个特征向量在声学特征上的得分;而语言模型则根据语言学相关的理论,计算该声音信号对应可能词组序列的概率;最后根据已有的字典,对词组序列进行解码,得到最后可能的文本表示。其中声学模型与语言模型的关系,将通过贝叶斯公式表示为:其中,P(X|W)称之为声学模型,P(W)称之为语言模型。大多数的研究将声学模型和语言模型分开处理,并且,不同厂家的语音识别系统主要体现在声学模型的差异性上面。此外,基于大数据和深度学习的端到端(Seq-to-Seq)方法也在不断发展,它直接计算P(X|W),即将声学模型和语言模型作为整体处理。
三、传统HMM声学模型
声学模型是将语音信号的观测特征与句子的语音建模单元联系起来,即计算P(X|W)。我们通常使用隐马尔科夫模型(Hidden Markov Model,HMM)解决语音与文本的不定长关系,比如下图的隐马尔科夫模型中。将声学模型表示为:其中,初始状态概率P(w1)和状态转移概率(P(w2|w1)、P(w2|w2))可用通过常规统计的方法计算得出,发射概率(P(x1|w1)、P(wx2|w2)、P(x3|w2))可以通过混合高斯模型GMM或深度神经网络DNN求解。传统的语音识别系统普遍采用基于GMM-HMM的声学模型,示意图如下:其中,awiwj表示状态转移概率P(wj|wi),语音特征表示X=,通过混合高斯模型GMM建立特征与状态之间的联系,从而得到发射概率P(xj|wi),并且,不同的wi状态对应的混合高斯模型参数不同。基于GMM-HMM的语音识别只能学习到语音的浅层特征,不能获取到数据特征间的高阶相关性,DNN-HMM利用DNN较强的学习能力,能够提升识别性能,其声学模型示意图如下:GMM-HMM和DNN-HMM的区别在于用DNN替换GMM来求解发射概率P(xj|wi),GMM-HMM模型优势在于计算量较小且效果不俗。DNN-HMM模型提升了识别率,但对于硬件的计算能力要求较高。因此,模型的选择可以结合实际的应用调整。
四、Seq-to-Seq模型
语音识别实际上可以看成两个序列之间转换的问题。语音识别实际上的目标就是把输入的音频序列转录为对应的文本序列,音频序列可以描述为 O=o1,o2,o3,…,ot 其中oi表示每一帧语音特征,t表示音频序列的时间步(通常情况下,每秒语音会被分为100帧,每帧可以提取39维或者120维的特征),同样的,文本序列可以描述为 W=w1,w2,w3,…,wt 其中n表示语音中对应的词数(不一定是词,也可能是音素等其他建模单元)。由此可见,语音识别问题可以用序列到序列的模型建模。传统的语音识别问题是DNN-HMM的混合结构,并且还需要语言模型、发音词典和解码器等多个部件共同建模。其中发音词典的构建需要大量的专家知识,多个模型组件之间也需要单独训练不能进行联合优化。Seq2Seq模型给语音识别建模提供了一种新的解决思路。将Seq2Seq模型应用于语音识别问题有很多明显的优势:可以进行端到端联合优化,彻底摆脱了马尔科夫假设,不需要发音词典。
CTC
语音识别中,一般包含语音段和对应的文本标签,但是却并不知道具体的对齐关系,即字符和语音帧之间对齐,这就给语音识别训练任务带来困难;而CTC在训练时不关心具体的唯一的对齐关系,而是考虑所有可能对应为标签的序列概率和,所以比较适合这种类型的识别任务。CTC是和声学特征序列同步进行解码,就是每输入一个特征,就输出一个label,所以它的输入和输出序列长度是相同的。但是我们前面说输入输出的长度明显差别是很大的,所以在CTC里面引入了一个blank的符号,带有blank的文本序列称为CTC的一个对齐结果。拿到对齐之后,首先对进行符号去重,再删掉blank,就恢复到标注的文本了。RNN Transducer
CTC对于语音识别的声学建模带来了极大的好处,但是CTC模型仍然存在着很多的问题,其中最显著的就是CTC假设模型的输出之间是条件独立的。这个基本假设与语音识别任务之前存在着一定程度的背离。此外,CTC模型并不具有语言建模能力,同时也并没有真正的实现端到端的联合优化。RNN-T不再是一个输入对应一个输出的结构,而是使其给一个输入能够产生多个token输出,直到输出1个空字符∅表示需要下一个输入,也就是说最后的∅数量一定是和输入的长度相同,因为每一帧输入一定会产生一个∅。
五、语言模型
语言模型与文本处理相关,比如我们使用的智能输入法,当我们输入“nihao”,输入法候选词会出现“你好”而不是“尼毫”,候选词的排列参照语言模型得分的高低顺序。语音识别中的语言模型也用于处理文字序列,它是结合声学模型的输出,给出概率最大的文字序列作为语音识别结果。由于语言模型是表示某一文字序列发生的概率,一般采用链式法则表示,如W是由w1,w2,…wn组成,则P(W)可由条件概率相关公式表示为:由于条件太长,使得概率的估计变得困难,常见的做法是认为每个词的概率分布只依赖于前几个出现的词语,这样的语言模型成为n-gram模型。在n-gram模型中,每个词的概率分布只依赖于前面n-1个词。例如在trigram(n取值为3)模型,可将上式化简:
操作说明
此产品必须与我司生产的Zigbee智能网关一起使用,开机后,听到“欢迎使用使用小谷离线语音”,则系统启动成功。说“小谷同学”唤醒后,说出控制口令即可控制控制智能设备、电器。
Zigbee入网
操作前确保家中入网欧米家智能超级网关, 小欧智能离线语音在无zgibee网络状态(LED闪)。
首先,在移动终端打开“欧米家智能”APP;
然后,添加zigbee设备,APP会启动Zigbee扫描, 当扫描设备时APP会提示找到设备(小欧智能离线语音会熄灭),保存返回即可。
Zigbee退网
方法一:点击小谷智能离线语音图标,点删除图标即可,退网成功后,燃气阀门控制器在无zgibee网络状态(LED闪)。方法二:说“小谷同学”唤醒后,说“清除网络设置”,听回复后“是”
学习控制指令
说“小谷同学”唤醒后,说“开始语音学习”,听回复后,说出口令(命令词),然后在APP上对应操作,则学习完成一条指令录入,依次重复上述操作,学习完成后,说“结束语音学习”,则退出学习口令模式,切换到语音控制模式。
更改唤醒词或命令词

用户可免代码开发,会excel表格,就能替换唤醒词、命令词,当然可找我们定制开发。
离线语音控制+SOS模块唤醒词和命令词学习与删除方法
1、学习唤醒词
唤醒后,说学习唤醒词,根据语音提示,说唤醒词3遍注:只能学习唤醒词
2、学习命令词
唤醒后,说"学习命令词",根据语音提示,说命令词2遍注:此更改数量、命令,要改代码
3、学习结束或中断学习
学习完全后,说“退出学习"
4、重新学习
学习完全后,说“重新注册"
5、删除学习内容
唤醒后,说"我要删除",根据语音提示,删除唤醒词--说“删除唤醒词”删除命令词--说“删除命令词”唤醒词和命令词都删除--说“全部删除”删除结束--说“退出删除”
往期精彩:
介绍一款高性比的Zigbee无线模块「Shell」Linux shell 脚本编程——认识Shell(一)
「Shell脚本」Shell脚本程序开发——变量(二)
【Shell脚本】Shell脚本程序开发 -- 注释(三)
【openwrt】移植sqlite 交叉编译sqlite3
锦锐单片机 CA51F251L2
BK3432_SDK BLE广播包详解及代码配置
【Linux应用开发】fork()函数详解
NXP Zigbee JN516X JN517x JN518X 用vsCode studio 环境开发编译
用AB32VG1开发板基于RT-Thread开发的BLE智能灯和门锁控制并带语音提示演示方案谢谢阅读!请大家帮忙点赞、转发、在看,为小编加鸡腿,请点亮关注,关注我不迷路,更多软硬件开发知识推送给您。
页: [1]
查看完整版本: 智能离线语音识别全屋智能语音控制方案