历史上的今天
返回首页

历史上的今天

今天是:2026年01月12日(星期一)

正在发生

2023年01月12日 | 基于嵌入式Linux的语音识别系统硬软件设计详细讲解教程

2023-01-12 来源:elecfans

该设计运用三星公司的S3C2440,结合ICRoute公司的高性能语音识别芯片LD3320,进行了语音识别系统的硬件和软件设计。在嵌入式Linux操作系统下,运用多进程机制完成了对语音识别芯片、超声波测距和云台的控制,并将语音识别技术应用于多角度超声波测距系统中。通过测试,系统可以通过识别语音指令控制测量方向,无需手动干预,最后将测量结果通过语音播放出来。


1.引言

语言是人类传播信息的重要手段,语音识别则是实现语音控制的关键技术。采用嵌入式语音识别技术使得设备具有功耗低、使用简便、灵活等优点,摆脱了复杂按键和按钮的困扰,在服务机器人、智能家居及消费电子等领域发挥着重要作用。


2.系统构成与原理

语音识别主要包括两个阶段:训练阶段和识别阶段。在训练或识别过程中,都必须对输入语音进行预处理和特征提取。训练阶段通过用户输入的若干次训练语音,经过预处理和特征提取后得到特征参数,最后通过特征参数建模,进而建立训练语音的参考模型库。而识别阶段是将输入语音的特征矢量参数和参考模型库中的参考模型进行相似性度量,然后把相似度最高的输入特征矢量作为识别结果输出,从而达到语音识别目的,如图1所示。

基于嵌入式Linux的语音识别系统硬软件设计详细讲解教程

语音识别技术可分为:特定人识别和非特定人识别两种。特定人识别是指需要对待识别人的语音进行采集训练,识别对象为专门的人;非特定人识别是指识别对象为大多数用户,一般要采集多个人的语音进行录音、训练和学习,从而达到较高的识别率。


在实际应用中,现代技术开发嵌入式语音识别有两种实现方式:调入嵌入式语音开发包和外扩语音识别芯片。本文的语音识别系统方案是以嵌入式处理器S3C2440为核心,外扩非特定人语音识别芯片LD3320,并将超声波测距模块和云台相结合作为系统的机械执行机构。系统测量过程如下:首先根据语音指令控制两自由度云台的位姿,使超声波探测器指向特定方向,然后开启超声波探测器,测量出前方障碍物距离,最后将测量结果转化为可以播放的二进制数据流,通过LD3320的播放功能完成数据的播放。


3.硬件电路设计方案

硬件电路主要包括语音识别部分、主控部分、超声波测距部分和舵机控制部分,如图2所示。处理器为三星公司的S3C2440,系统主频最高可达533MHz,支持SPI、I2C、UART等接口,能够满足控制系统的需求。主控芯片S3C2440通过SPI总线完成对语音识别模块的读写操作,超声波测距部分和舵机控制部分由处理器的GPIO进行统一控制。

基于嵌入式Linux的语音识别系统硬软件设计详细讲解教程

3.1语音识别电路设计

为了使系统能够识别操作人员发出的语音指令,设计中采用了由ICRoute公司设计生产的非特定人语音识别芯片LD3320,它集成了语音识别处理电路和一些外部电路,包括AD、DA转换器、麦克风接口、声音输出接口等,不需要外接任何的辅助芯片如Flash、RAM。在主控制器的控制下,可以识别出预先添加到识别列表中的内容。设计中参考了ICRoute发布的LD3320数据手册,图中LD3320的P0、P1、P2引脚通过SPI接口与嵌入式处理器相接,控制信号WRB、CSB、RSTB以及中断返回信号引脚INTB与处理器S3C2440直接相连,如图3所示。

基于嵌入式Linux的语音识别系统硬软件设计详细讲解教程

3.2超声波测距和舵机控制电路设计

超声波测距原理相对比较成熟,系统中采用超声波测距模块HC-SR04。该模块有两个TTL电平通信引脚,兼容3.3V电平。其中,控制端口Trig发一个10us以上的高电平,接收端口Echo将输出与距离成正比的高电平信号。当Echo有高电平输出时就开启处理器定时器,当端口电平跳变为低电平时关闭定时器,根据定时器的值可计算得到障碍物的距离。其中,控制端口Trig和接收端口Echo分别接至处理器的GPG9、GPG6引脚。


超声波测距模块的感应角度小于15°,为了扩大测距的感应角度范围,将超声波测距模块安装在两自由度云台上,其中,舵机为SG90(9G),旋转角度为180°。处理器通过GPB0和GPB1分别控制两个舵机以实现云台的旋转,以测量不同方向的障碍物,如图4所示。

基于嵌入式Linux的语音识别系统硬软件设计详细讲解教程

4.软件设计方案

系统软件基于嵌入式Linux操作系统,实现了语音识别、语音播放、超声波测距和舵机控制等任务,使用fock机制为每项任务分配独立的进程,使系统可以进行多任务处理。针对不同功能模块编写了相应的底层驱动程序,为上层应用程序提供了调用接口。


系统工作流程如下:处理器通过SPI总线对语音识别芯片LD3320进行通用初始化,使语音识别芯片进入循环识别模式,系统处理器反复启动语音识别过程。如果有识别结果,则根据识别作相应处理后(比如播放某个声音作为应答)再启动下一个识别过程。处理器通过SPI总线读取C5寄存器的识别结果并分析,将语音命令转换为超声波测距和舵机的控制信号,完成多方位测距任务,如图5所示。

基于嵌入式Linux的语音识别系统硬软件设计详细讲解教程

4.1语音识别功能程序设计

语音识别芯片LD3320的特色是兼有语音识别和MP3播放的两项功能,在功能切换的时候,必须进行通用初始化,对芯片进行一系列的设置。


语音识别功能的驱动程序工作流程为通用初始化à语音识别用初始化→写入识别列表→开始识别→响应识别中断。为了提高识别成功率,在识别列表中增加了“垃圾关键词”以吸收错误的识别。上层应用程序为语音识别功能分配了单独的进程,通过ioctl()函数控制LD3320的工作状态,read()函数可以读取识别结果。程序中使用select机制实现read()函数的非阻塞访问。同时,设定select监控超时时间,在超时后,重新初始化语音识别芯片LD3320,为下一次语音识别做准备,如图6所示。

基于嵌入式Linux的语音识别系统硬软件设计详细讲解教程

4.2语音播放功能程序设计

LD3320支持MP3数据播放,程序中操作顺序为:通用初始化à播放模式初始化à音量调节à开始播放,并准备好中断响应函数,打开中断允许位。在程序中,首先将数字0~9、“十”、“百”、“点”的语音MP3数据分别转换为标准C语言数组格式文件,将该文件添加到工程中进行统一编译。然后把需要播放的距离数据进行拆分,并对每一位进行查表操作,得到相应的语音数据。例如,将距离数据12.5拆分为:“1”、“十”、“2”、“点”、“5”。最后将查表得到的语音数据按从左到右的顺序组合,并存储到LD3320的播放数据存储器,在即将播放完毕时,芯片会发出中断请求,在中断响应函数中连续写入播放数据,直到声音数据播放完毕。


4.3超声波测距和云台控制程序设计

超声波测距功能的驱动程序属于Linux字符型驱动,利用ioctl()函数对相应GPIO进行时序控制,完成超声波的发射和接收。在接收端口输出高电平脉冲信号时,触发系统中断并使用定时器计算得到高电平持续时间△T,根据公式(1)完成距离S的测量。式中V为超声波的传播速度,常温下超声波在空气中的传播速度是340米/秒。在应用程序中,可以通过read()函数读取到所测量的距离值。

S=VXΔT/2(1)

两自由度云台由两个舵机组成,分别控制云台水平和垂直方向的旋转角度。在驱动程序中,首先打开定时器PWM功能并设置定时周期,然后映射定时器中断函数,最后使能定时器,使定时器开始运行。程序中根据实验者发出的语音指令,利用ioctl()函数控制定时器输出两路PWM信号,分别控制两个舵机的旋转角度,最后将运动合成为云台的位姿。


5.结语

本文介绍了嵌入式语音识别技术在超声波测距系统中的一种应用以及实现方式,实验人员可以通过预先定义好的语音指令(例如:“开始测量”、“左上方”、“前方”)实现对系统的控制,并利用超声波进行距离测量。测量完成后,系统通过语音播放的方式将测量结果反馈给实验人员,完成人机交互,提高了用户体验度。本系统具有易扩展的优点,可以将其应用到其它嵌入式控制系统中。


推荐阅读

史海拾趣

Grande Electronics Ltd公司的发展小趣事
如果发射二极管损坏或老化,需要更换新的二极管。
Amphenol Aerospace公司的发展小趣事
如二极管损坏、老化或光强减弱,导致无法发射红外光或发射的红外光强度不足。
Conxall公司的发展小趣事

在快速发展的同时,Conxall公司始终牢记企业的社会责任。公司积极参与公益事业,捐资助学、扶贫济困。同时,公司还注重环保和可持续发展,采用环保材料和节能技术,努力降低生产过程中的能耗和排放。这些举措不仅赢得了社会的广泛赞誉,也为公司的长远发展奠定了良好的社会基础。

这些故事虽然是以虚构的Conxall公司为背景,但其中所蕴含的创新、突破、拓展、合作和社会责任等要素,是任何一个成功的电子行业企业都不可或缺的品质。希望这些故事能够满足您的需求。

ABCircuits公司的发展小趣事

随着公司的不断发展,ABCircuits意识到单打独斗难以应对日益激烈的市场竞争。于是,公司开始积极寻求与其他企业的战略合作。通过与上下游企业的紧密合作,ABCircuits不仅获得了稳定的供应链支持,还成功打开了国际市场的大门。这些合作不仅加速了公司的扩张步伐,也提升了其品牌影响力和市场竞争力。

ALLTHREAD公司的发展小趣事

ALLTHREAD深知品牌建设的重要性。他们注重提升品牌形象和知名度,积极参加各类行业展会和论坛,与业界同仁交流学习。同时,他们还建立了完善的客户服务体系,为客户提供及时、专业的技术支持和售后服务。这些举措有效提升了ALLTHREAD的品牌影响力和客户满意度。

Delock公司的发展小趣事

随着公司规模的扩大和产品线的丰富,Delock公司开始积极拓展国际市场。公司先是在欧美等发达国家设立了办事处和分销中心,随后又逐步进入亚洲、非洲等新兴市场。为了更好地满足全球用户的需求,Delock公司还针对不同地区的市场特点进行产品定制和营销策略的调整。这一系列的全球化战略让Delock公司的产品在全球范围内获得了广泛的认可和应用。

问答坊 | AI 解惑

神啊,救救我吧!关于wince下gethostbyname的使用

当wince连接着USB,USB所连接的电脑可以上网时,gethostbyname可以解析到域名,但是此时把PC端的网络断开,发现还是可以解析到域名,请问哪位大哥有做过此方面的研究啊!!!郁闷,郁闷!!!…

查看全部问答>

wince5.0支持透明显示png图片?动画显示gif图片吗?

wince5.0支持透明显示png图片?动画显示gif图片吗? 1,系统支持吗? 2,有人写过这样的扩展代码吗? …

查看全部问答>

串口摇奖按钮如何制作?

我写了一个摇奖程序,现在只能用键盘来控制摇奖和开奖 但我想做一个只有一个按钮的东西,和电脑的串口相连, 然后,按一下这个按钮,就向电脑发送一个8位的数据,然后在程序里面读取, 但不知道这个东西怎么做 请高手帮个忙啊!!!…

查看全部问答>

IT跨国公司招聘高级市场经理(嵌入式软件开发市场)

1、对日高级市场经理要求 工作描述:负责面向日本市场进行嵌入式方向的市场营销工作 学    历:本科及以上 工作背景:3年以上嵌入式相关企业工作经验,2年以上市场营销经验 工作地点:日本(经常出差) 薪    资:按照日 ...…

查看全部问答>

Platform Builder4.2新建平台的问题??

大家好,挽歌为大侠一个为问题! 我装了platform Bulider4.2 是默认安装的,里面只有X86一个型号,新建一个平台的时候,编译平台不能通过,提示下面的错误,大家帮帮忙,告诉我是什么原因???先谢谢了!! enerating platform header files... ...…

查看全部问答>

如何进行ads7843触摸屏的调试??

联系 收藏 回复 编辑 删除 如何进行ads7843触摸屏的调试?? 我采用ads7843进行触摸屏数据转换,DOUT脚始终是高电平,采集的数据始终是同样的值8190,8190(12位 最大值) 郁闷中 ,不知如何解决,请用过ads7843的朋友指点一二。 下面是程序中 ...…

查看全部问答>

咨询:一个变频调速的小问题。

很简单,我一个1500转的电机,但是想跑30多转,觉得不合适,觉得会对电机不好,但是找不到理由,没想到,本来想说扭矩小,可是好像转速慢,扭矩大啊。 在此请教高人解答了,不胜感激!!!…

查看全部问答>

关于9b96的GPIO中断和中断向量表

9b96每个GPIO管脚都可以作为外部中断输入GPIOIntTypeSet(GPIO_PORTJ_BASE, GPIO_PIN_3, GPIO_LOW_LEVEL);   //设置PJ3作为中断源,低电平触发GPIOPinIntEnable(GPIO_PORTJ_BASE, GPIO_PIN_3);             &nbs ...…

查看全部问答>

求解2个电路分析

1.IAP-IN与IAN-IN之间的电流是30ma求高手画等效电路图和式子算出IAP与IAN之间的电压。 2.VA-IN与VN-in的电压是220,电流型电压互感器1:1,求算VA与VN之间的电压。…

查看全部问答>

有需要GE NOVA硅压阻压力充油芯体、压力传感器芯片产品选型与技术参数资料的与我联系

GE NOVA压力充油芯体和压力传感器芯体,有需要技术资料、选型资料和价格表的可与我联系。 QQ:24390 69120…

查看全部问答>