基于ARM的非特定人语音识别系统的设计方案
扫描二维码
随时随地手机看文章
0 引言
语音交互是人类交流和交换信息中最便捷的手段和最重要的媒体,长久以来,人们都希望找寻一种新的途径解决人类与机器的交互方式,希望机器设备能够“听”懂人类的语音信息进行交互,识别其含义并响应、从而做出相应动作,这样的交互方式更能被使用者接受,取代原有的键盘、按钮、开关等传统交互方式,基于非特定人的语音识别技术已然成为人机交互新方式的一个重要发展方向和研究热点。
语音信号的识别涉及众多学科知识体系,与计算机、语言学、通信、数理统计、信号处理和人工智能等学科都有着密切的关系,由于语音信号具有信息量大、不确定性、动态性和连续性的特点,在语音信号的预处理、特征提取等阶段处理数据量非常大,对软件的处理算法和硬件的处理能力都有较高的要求,传统使用PC机或者工控机等高处理性能的平台实现语音信号识别,但硬软件开发造价无疑是阻碍普及的重要因素,本系统采用ARM Cortex M3 内核ST 公司的32 位高性能单片机STM32F103C8T6结合LD3320语音识别芯片,通过构建SD卡文件系统实现非特定人语音识别关键词动态编辑功能,适用于嵌入式语音识别场合。系统电路简单,性价比高,识别距离和识别精度都可以满足嵌入式应用。
1 非特定人语音识别技术原理
非特定人语音识别技术研究的最终目的是让计算机等设备能够“听懂”人类语音,提取出语音中所包含的特定信息,成为人机通信和交互最便捷的手段。由于语音信号本身具有不确定性、动态性和连续性,这就为准确量化和处理该信号带来非常大的困难,每个人的语音要建立不同的语音样本也为识别的普及带来瓶颈约束。目前的语音识别是先建立特征库然后将待识别的信号经处理与特征库比对得到相似结果判定输出。从本质上属于基于统计模式的基本理论,分语言模型训练、识别分析两个大阶段构成和实现,如图1所示。
声学训练阶段通常是离线完成的,由语言学家对预先收集好的海量语音样本、语言数据库、噪声数据进行信号处理和知识挖掘,通过语音信号处理理论及相应数学算法模型建立语音识别系统所需要的“声学模型”和“语言模型”.
识别分析阶段通常是在线完成的,对用户实时的语音进行自动识别。识别过程通常又可以分为“前端”和“后端”两大模块:“前端”模块主要的作用是进行端点检测、降噪、特征提取等;“后端”模块的作用是利用训练好的“声学模型”和“语言模型”对用户说话的特征向量进行统计模式识别,得到其包含的文字信息,此外,后端模块还存在一个“自适应”的反馈模块,可以对用户的语音进行自学习,从而对“声学模型”和“语音模型”进行必要的“校正”,进一步提高识别的准确率。
2 系统设计的整体结构
本系统以STM32F103C8T6 微控制器为控制核心,搭配微控制器最小核心电路、LD3320语音识别电路、SD卡电路、电源电路、用户按键输入电路、串口数据输出电路、状态指示电路等综合组成。该系统体积小巧,可以作为嵌入式组件单元融入用户电路或者板卡中,上电后STM32F108C8T6内部程序进行程序初始化、SD 卡文件系统初始化、LD3320初始化、随后等待识别音频接收,识别完成后输出响应信息或者解码音频,系统整体结构如图2所示,最终实现积木式功能组件的全部功能。
3 系统硬件电路设计
3.1 微控制核心方案选型及电路
系统采用ARM Cortex M3内核ST公司的32位高性能单片机STM32F103C8T6 为控制核心,该芯片可以达到72 MHz的工作频率,内置高速存储器(64 KB的闪存和20 KB的SRAM),拥有丰富的I/O口资源和链接到两条APB 总线的外设。包括了12 b 的ADC、通用16 b 的定时器、还包括I2C、SPI、USART、USB、CAN等总线或串行通信接口,片内资源和扩展接口都十分丰富,该微控制核心是专门设计于满足高稳定性、低功耗、实时性、高性价比的嵌入式产品应用。该内核芯片可以满足非特定人语音识别的功能要求,利用相关电路构成STM32F103C8T6 的最小系统,在硬件PCB 中还集成了功能引针输出接口、SD卡接口、USB下载\调试电路,用户按键、电源电路等,核心系统电路图如图3所示,配合其他外围扩展达到功能要求。
3.2 非特定人语音识别方案选型及电路
本系统中选用IC Route公司生产的LD3320非特定人语音识别芯片,该芯片是非特定人语音识别的专用芯片,内部已经集成了语音识别处理器和一些信号调制电路,拥有高性能的A/D转换器、D/A转换器、麦克风音频信号输入接口、音频解码输出接口等,用户只需要用软件编辑好待识别的关键词列表,LD3320最大可以支持50 条关键词句,把这些列别以字符的形式传送到芯片中,就可以对待识别的语音信号进行近似度分析,识别后输出结果。
LD3320 整体工作电路如图4 所示,总体上可以把电路图分为8个部分,分别是LD3320基础外围电路、电源电路、外部晶体振荡器电路、麦克风信号处理电路、去耦合滤波电路、解码音频去直流成分电路、功能引针输出电路、状态信号指示电路。语音识别单元对于电源供电电路的要求较高,电路中注重对供电纯净度的要求,由系统中的LDO芯片LM1117-3.3 V为语音识别系统供电,加上电感、电容为供电进行滤波,RSTB为LD3320复位引脚,连接到主控制器进行复位控制。LD3320支持并行数据通信和串行数据通信,在本系统设计中考虑对主控I/O 资源的占用问题,故而选用串行通信方式对LD3320 进行数据传送和控制,LD3320 的MD 引脚通过上拉电阻钳位为高电平。SPI总线的SDI、SDO、SDCK和SCS引脚连接到主控芯片对应引脚。INTB为中断信号引脚,遇到识别结果输出或者是内部音频文件解码完成等状态,该引脚会对应输出电平状态通知主控。MBS引脚作为麦克风偏置电压输入,连接了RC电路,保证产生一个浮动电压供给麦克风信号。
4 系统软件功能设计
4.1 语音识别软件设计
系统主控上电后首先进行各项初始化,包括LD3320 需要的8M 时钟信号,由STM32 初始化后输出8M 频率供给LD3320使用,初始化STM32内部时钟、SD卡文件系统、SPI相关寄存器、SDIO数据初始化、中断设置等等。经过初始化后SD 卡文件系统会在SD 卡中寻找system.ini配置文件,将里面的字段进行拆分后提取,送给LD3320相关寄存器,随后把关键字句列表和长度信息传送给LD3320并启动识别过程,当识别成功后串口会发出响应的返回值参数,并且按照用户需求可以指定需要解码的音频文件,经过LD3320进行MP3文件解码输出,程序流程图如图5所示。[!--empirenews.page--]
主控程序初始化代码如下:
4.2 SD卡文件系统软件设计
在实际应用中,修改主控制单片机程序较为复杂,本系统将识别关键语句写在一个命名为system.ini文件中,将此文件拷贝到SD卡中,SD卡需要实现格式化,只能出现一个。ini 文件,其他的文件均为XXX.mp3 文件,SD 的片选信号CS、数据输入信号DI、数据输出信号DO、时钟信号SCLK 在硬件上已经与STM32的SPI接口相连接,系统上电后会初始化SD卡文件系统,发送至少74个时钟以上确保SD卡片选正常后将SD卡复位等待8个时钟周期进入SPI读写模式,通过STM32内部编写好的文件系统程序找寻“配置文件”即system.ini文件,读取关键词识别列表内容,在系统软件编程中,采用3个字段进行功能约定,字段功能约定配置如下:
5 性能测试与分析
为保证系统对非特定人的语音识别效果、环境底噪影响、语音识别过程响应时间、非特定人声音样本识别成功率等参数达标,本文针对各项参数指定了测试方案,实验环境分为安静环境(如家居环境)和相对嘈杂的环境(如课堂环境)进行了实测,指定3名发音人作为3个不同的声音识别样本,选定了短句识别语句、中长句识别语句,长句识别语句各2条进行样本测试(约定3字以下为短句,3~5字为中长句,5字以上为长句),每种测试语句结合不同发音人重复20次结果进行统计,在安静环境下测试短句识别准确率为93.37%、中长句识别准确率为91.67%、长句识别准确率为90.23%.在嘈杂环境下测试短句识别准确率为87.25%、中长句识别准确率为84.36%、长句识别准确率为81.12%.从实验数据上分析,制约识别准确率的原因是多方面的,与发音人本身声音质量、环境底噪、识别语句近似度、识别语句长度均有关系,单从数据上不难得到总体识别率应该是在81%以上,可以满足应用需求,系统实物图如图6所示,硬件结构小巧,功耗低、性价比高,因此具备市场应用前景和市场需求。
6 结语
普及语音识别技术是当前研究和发展的新趋势,特别是对于非特定人的语音识别是语音信号领域处理的热点和难点,本方案利用了STM32F103C8T6与LD3320结合,配合各种外围电路完成了非特定人语音识别的嵌入式平台,在平台中通过硬软件构建,在不更改主控制芯片程序的前提下,用户可以通过更改SD 卡内配置文件的方法随意设定识别关键语句,经过不同发音人和环境的实测,该系统在嘈杂环境中的识别准确率可达81%,在安静环境中的识别准确率可达90%以上,本系统可以方便的嵌入用户系统或者板卡中,积木式搭建灵活实用,因而具有广泛的市场需求和应用前景。