首页 > 编程知识 正文

语音控制模块编程,51单片机语音识别模块

时间:2023-05-06 14:46:33 阅读:121053 作者:3181

引言

服务机器人以服务为目的,因此需要以更方便、自然、人性化的方式与机器人对话,而不满足于复杂的键盘和按钮操作。 基于听觉的人机交互是该领域的重要发展方向。 目前主流的语音识别技术基于统计模型。 但统计模型训练算法复杂、运算量大,一般在机床、PC或笔记本电脑上进行,运用肯定受到限制。 嵌入式语音对话已成为当前研究的热点课题。

嵌入式语音识别系统与PC语音识别系统相比,运算速度和内存容量有一定的限制,但具有体积小、功耗低、可靠性高、投入低、安装灵活等优点,特别适用于智能家居、机器人、家电等领域。

1整个模块的方案和体系结构

语音识别的基本原理如图1所示。 语音识别包括两个阶段:训练和识别。 无论是训练还是识别,都必须对输入语音进行预处理和特征提取。 训练阶段进行的具体工作是用户输入几次训练语音,经过预处理和特征提取得到特征向量参数,最后通过特征建模达到训练词的建立

声音参考模型库的目的。 在识别阶段,主要工作是比较输入语音的特征向量参数与参考模型库的参考模型的相似性尺度,输出相似性最高的输入特征向量作为识别结果。 至此,最终实现了语音识别的目的。

现有的语音识别技术根据识别对象可以分为特定人识别和不特定人识别。 特定人识别是指识别对象是专业的人,不特定人识别是指识别对象以大多数用户为对象,一般需要采集多人的声音进行录音和训练,经过学习达到了较高的识别率。

基于现有技术开发嵌入式语音交互系统目前主要有两种方法。 一种是在嵌入式处理器上直接调用语音开发包。 另一种是嵌入式处理器的外围扩展语音芯片。 第一种方法程序量大、计算复杂、需要大量处理器资源,开发周期长的第二种方法比较简单,只关注语音芯片接口部分与微处理器相连,结构简单、易于构建、微处理器

语音识别技术在国内外发展非常迅速。 目前,我国在电脑应用领域具有代表性的有科大讯飞的InterReco2.0、中科模式识别的Pattek ASR3.0、捷通华声的jASRv5.5; 在嵌入式APP应用领域,凌阳的SPCE061A、ICRoute的LD332X、上海华镇电子的WS-117具有代表性。

本文的语音识别方案以嵌入式微处理器为核心,在周边添加非特定人群的语音识别芯片和相关电路组成。 语音识别芯片使用ICRoute公司的LD33 20芯片。

2硬件电路设计

如图2所示,硬件电路主要由主核心部分和语音识别部分构成。 进入语音识别部后,将处理后的数据并行传输到主控制器,主控制器处理后,将指令数据发送到USART。 USART可用于扩展外围串行设备,如语音合成模块。

2.1主控制器电路

本文的主控制器选择了ST公司的STM32F103C8T6芯片。 该芯片基于ARM Cottex-M3 32位RISC内核,工作频率高达72 MHz,支持集成高速存储器(64 KB闪存和20kb SRAM )、丰富的扩展I/O端口和连接到两条APB总线的外围设备STM32系列提供全新的32位产品选项,结合高性能、实时、低功耗、低电压等特性,同时保持高集成度和易开发优势,推动32位MCU世界的性能和效果达到新水平。

2.2语音识别电路

图3是语音识别原理图的一部分,参照ICRoute发行的LD3320数据手册进行了设计。 LD3320内部集成了快速稳定的优化算法,无需外置Fla-sh、RAM,用户无需提前训练或录音,即可完成非特定人的语音识别,识别精度高。

在图中,LD3320以并行方式直接连接到STM32F103C8T6,采用的都是1k的电阻上拉,用以确定A0是数据段还是地址段; 控制信号、复位信号和中断恢复信号INTB直接连接到STM32F103C8T6,采用10k的电阻上拉,辅助系统的稳定工作; 采用与STM32F103C8T6相同的外部8 MHz时钟; 发光二极管D1、D2用于复位后电源接通指示; MBS )端子12 )连接RC电路作为麦克风偏置,使得浮动电压可以输出到麦克风。

3软件系统设计

软件系统的设计主要由三部分组成。 主单元的嵌入式C/OS-II移植、LD3320的语音识别程序设计、交互管理单元的设计。

3.1嵌入式C/OS-II移植

C/OS-II是源代码公开、可移植、可固化、可裁剪、抢先式的实时多任务操作系统。 它是专门为计算机嵌入式APP应用设计的,大部分代码都是用c语言编写的,具有执行效率高、占用空间小、实时性能好、可扩展性强等特点,最小内核可达2 KB。 在C/OS-II中,任务的概念特别重要,因为它是可剥夺的内核,所以任务的优先级排序很重要。 基于分层和模块化的设计理念,整个系统任务的划分如表1所示。

在表1中,系统附带了OSTaskStat和OSTaskIdle任务,其他七个任务都是用户创建的。 App_TaskStart是系统的第一个任务,它初始化系统时钟和基础设备并创建一切

事件和其他各项用户任务,并对系统状态进行监测;App_TaskSR完成语音识别;App_TaskCmd完成对话集中命令的解析和执行,并通过USART1向外发送;App_TaskCom作为外围扩展任务,通过USART2向外发送指令或数据,负责控制外围扩展设备,如语音合成设备等;

App_TaskUpdate通过解析USART1接收的命令和数据进行对话集的更新;App_TaskPB是按键扫描任务,负责检测3个独立按键,分为短按和长按检测;App_TaskLed驱动4个LED指示灯,指示当前工作状态。

3.2 语音识别程序设计

语音识别程序的设计,参考了LD332X开发手册,本文中采用中断方式工作,其工作流程分为通用初始化一语音识别用初始化-写入识别列表-开始识别-响应中断。

①通用初始化和语音识别用初始化。在初始化程序里,主要完成软复位、模式设定、时钟频率设定、FIFO设定。

②写入识别列表。列表的规则是,每个识别条目对应一个特定的编号(1个字节),编号可以相同,可以不连续,但是数值要小于256(00H~FFH)。本芯片最多支持50个识别条目,每个识别条目是标准普通话的汉语拼音(小写),每2个字(汉语拼音)之间用一个空格间隔。本文中采取了连续不同编号的识别条目,表2是简单的示例。

③开始识别。设置几个相关的寄存器,即可开始语音的识别。图4是相关的流程。ADC通道即为麦克风输入通道,ADC增益也就是麦克风音量,可设定值00H~7FH,建议设置值为40H~6FH,值越大代表MIC音量越大,识别启动越敏感,但可能带来更多误识别;值越小代表MIC音量越小,需要近距离说话才能启动识别功能,好处是对远处的干扰语音没有反应。本文中设定值为43H。

④响应中断。如果麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号。而中断程序要根据寄存器的值分析结果。读取BA寄存器的值,可以知道有几个候选答案,而C5寄存器里的答案是得分最高、最可能正确的答案。

3.3 对话管理单元设计

为了方便进行对话的管理,本文中设计了一个对话管理单元,用于对等待识别的语句和等待执行的命令进行存储,在主控制器中通过定义二维数组来实现。LD3320每次识别最多可以设置50项候选识别句,每个识别句可以是单字、词组或短句,长度为不超过10个汉字或者79个字节的拼音串。基于上述原因,本文设计的对话管理数组如表3所列。

行为数组中存储要执行的行为编号,对应于50条语音识别语句,共有50组指令,每组指令中可以最多包含6个行为,并行的行为可以归为一步,通过多个行为的组合,就可以完成更复杂的任务。

4 性能测试与应用

为了保证设计的语音识别模块的语音识别率、稳定性和响应时间,本文对所描述的语音识别模块做了相应的测试,测试环境分别为安静的家庭环境和嘈杂的医院环境,共8条语音指令,对每条语音指令分别进行10次测试,每个环境下对每个特定人的总实验次数为80次,记录成功识别的次数。测试结果如表4所列。

测试中的3个非特定人中,非特定人1为女性,非特定人2和非特定人3为男性。由表中数据可以看出,家庭环境下对非特定人的语音识别率可达到90%以上,嘈杂的医院环境下的语音识别率也可达82.5%以上。识别率方面,在嘈杂环境下比在安静环境下的语音识别率有所降低;稳定性方面,在安静环境下系统的稳定性较好,语音说1遍,最多说2遍模块就可以做出正确的响应;在噪声环境下,系统的稳定性有所下降,个别语音命令需要说3遍甚至3遍以上才能被模块准确识别;实时性方面,在安静环境下的语音能保证系统响应的实时性,响应时间一般不超过1 s,在噪声环境下的响应时间相对长一些。

结语

本文讨论了基于STM32的嵌入式语音识别模块的设计和实现,对模块各个组成单元的硬件电路及软件实现进行了详细的介绍。大量实验及实际应用表明,本文设计的语音识别模块具有稳定性好、语音识别率高、抗噪声干扰能力强、结构简单和使用方便等特点。该模块实用性强,可广泛应用于服务机器人智能空间、智能家居和消费电子产品等多个领域。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。