基于单片机的语音识别系统设计-毕业设计.docx
《基于单片机的语音识别系统设计-毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的语音识别系统设计-毕业设计.docx(45页珍藏版)》请在冰点文库上搜索。
苏州大学本科生毕业设计(论文)
基于单片机的语音识别系统设计
苏州大学应用技术学院10电子1016405007肖鹏
目录
前言 2
第一章语音识别系统分析 3
第1.1节语音识别系统结构 3
第1.2节语音设计原理 3
第二章语音识别系统硬件电路 9
第2.1节基于STC控制电路 9
第2.2节基于语音处理电路 11
第2.3节基于语音采集模块电路 13
第2.4节语音处理系统电路图 13
第三章语音识别的实现 15
第3.1节与PC机的连接结构 15
第3.2节与语音处理模块的连接 16
第3.3节语音识别软件设计 17
第四章系统测试 22
第4.1节检测结果 22
第4.2节误差分析 23
结论 25
参考文献 26
致谢 27
附录 28
附录1:
实物照片说明 28
附录2:
部分源程序 28
-i-
【摘要】:
设计了一种由说话者说出控制命令,系统进行识别理解,并执行相应动作的语音识别系统。
系统由三个模块——语音采集模块、语音处理模块、单片机判断模块组合而成。
说话者的指令通过咪头采集并送入语音芯片LD3320中,接着指令信号与标准库中的指令比较后,结果被送入单片机STC11l08x中进行处理。
单片机输出判断结果,并驱动外部小灯“亮灭”来显示结果是否正确。
该系统与传统相比较,具有结构简单,抗干扰能力强,使用方便等特点,并且系统智能化程度高,性价比好,运行可靠。
【关键词】:
单片机;语音信号处理;c语言;
[Abstract]:
Designofacontrolcommandfromthespeakertosay,theidentificationsystemtounderstandandperformtheappropriateactionbasedspeechrecognitionsystem.Systemconsistsofthreemodules-voiceacquisitionmodule,voiceprocessingmodule,microcontrollerjudgmentmodulecombination.InstructionsthroughthespeakerintothemicrophoneandthevoicechipLD3320collectedforprocessing,thecommandsignalandstandardlibraryinstructioncomparison,theresultsaresenttothemicrocontrollerSTC11l08xforprocessing.Microcontrolleroutputjudgmentresultsanddrivesmallexternallightstoshowofftheresultsarecorrect.Thesystemiscomparedwiththetraditional,simplestructure,stronganti-interferenceability,easytousefeaturesandahighdegreeofintelligencesystems,cost-effective,reliableoperation.
[Keywords]:
Microcontroller;speechsignalprocessing;clanguage;
第44页
前言
语音识别研究工作开始于20世纪50年代。
1952年,当时AT&T的Bell实验室实现了第一个可识别十个英文孤立数字的语音识别系统Audry系统。
20世纪60年代,计算机的应用推动了语音识别的发展。
这时期的重要成果是提出了动态规划和线性预测分析技术,其中后者较好地解决了语音信号产生模型的问题,对语音识别的发展产生了深远影响。
20世纪70年代,语音识别领域取得了突破。
在理论上,LP技术得到进一步发展,动态时间归正技术基本成熟,特别是提出了矢量量化和隐马尔可夫模型理论。
在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。
20世纪80年代,语音识别研究进一步走向深入,其显著特征是HMM模型和人工神经元网络在语音识别中的成功应用。
HMM模型的广泛应用应归功于AT&TBell实验室
Rabiner等科学家的努力,他们把原本艰涩的HMM纯数学模型工程化,从而为更多研究者了解和认识。
ANN和HMM模型建立的语音识别系统,性能相当。
进入20世纪90年代,随着多媒体时代的来临,迫切要求语音识别系统从实验室走向实用。
许多发达国家如美国、日本、韩国以及IBM、Apple、AT&T、NTT等著名公司都为语音识别系统的实用化开发研究投以巨资。
当然现在的研究更加深入,相信不久的将来,会有更多的形形色色的语音应用出现在我们的生活中,为平凡的生活增添更多色彩,帮助人们过上更加美好的生活。
第一章语音识别系统分析
第1.1节语音识别系统结构
声音
语音采集模块
语音处理模块
LD3320
语音识别系统可以分为三个模块——语音采集模块、语音处理模块、单片机控制模块。
如图1-1所示。
控制单元
STC11l08x
图1-1语音识别系统框图
外部显示模块
语音采集模块将声音信号变成电信号,并将电信号送入语音处理模块中。
在语音处理模块里,会进行信号取样,频谱分析,特征提取,以及与语音库比较等工作,最后将语音识别结果传到单片机中。
在单片机判断后再送到外部显示模块,用灯的“亮灭”显示语音识别是否成功。
第1.2节语音设计原理
1.2.1语音识别定义
自从人类可以制造和使用各种机器以来,人们就有一个理想,那就是让各种机器能听懂人类的语言并能按人的口头命令来行动,从而实现人机的语言交流。
随着科学技术的不断发展,语音识别技术的出现,使人类的这一理想得以实现。
语音识别技术就是让机器通过识别和理解把语音信号转变为相应的文本或命令的高科技。
语音识别是一门交叉学科,语音识别正逐步成为信息技术中人机接口的关键技术。
语音技术的应用已经成为一个具有竞争性的新兴高科技产业。
当今,语音识别产品在人机交互应用中已经占到越来越大的比例。
语音识别简单说就是把含有人发音特征的信息变成逻辑’0’,’1’,储存在计算机中,然后利用计算机来进行处理和识别人们所说的话,并且将结果以一种看得见的方式执行
显现出来。
1.2.2语音识别的方法
1.窗函数的选择
浊音含有较大的能量,并且带有周期性,清音没浊音那样的特点,它的能量不高,且没周期性,容易被人们当做噪声而误处理掉。
考虑到现实应用性,时域分析并不能很好体现语音的特点,不过频谱分析没有那个问题。
它可以表现出其语音特征,于是我们采用频谱分析的方法处理语音信号。
¥
信号从时域到频域的转换公式
k
s(ejw)=
åw(k-n)s(n)e-jwnn=-¥
(1-1)
语音信号不是变到频域就结束,我们还要考虑到单片机计算速度与存储空间,所以很明显不可能将全部语音信号转换到频域之中。
不过,问题也是有解决方法的,可以选择若干有限多的样本点个数,并且通过这些的样本点,基本上模拟反映出原始样本的语音特点。
为了保证样本点的个数最少,且能保证由样本点组合而成的函数与原时域函数相近,这就要考虑到那奎斯特定理的应用。
那奎斯特定理即采样的频率至少为采样样本最高频率的两倍。
不过同时,我们要明白,理论上所设想的样本点的个数与实际的采样个数是不一致的,因为没有理想的矩形窗,这就会导致有一些原本该采到点落在窗的外面,事实上没进入我们设想中的采样点集合。
换句话说,我们并没有选取到足够的样本点数。
为了改善这个不足,我们一般会把采样的频率在原设想的基础上再调高一些,多采一些点。
这样就算窗函数不是理想的,还是可以用采样得到点去近似模拟原函数。
除此之外,现实中我们不可能把整段语音信号一下处理完的,于是操作中,都是对其进行分段处理。
语音信号处理会用到FFT,而FFT分析中常常要用到窗函数,所以在
FFT分析的时候,选择什么样的窗函数,这个问题就显得十分重要,因为它关系着系统误差。
FFT的算法优劣关系着系统设计好坏。
如图1-2所示,说明了各种窗的变化特点。
我们根据各个窗的特征,比较他们在FFT分析中的优劣,这样可以选取到最合适的窗,最大可能的减少系统误差,使系统的准确率有了较高的保证。
图1-2矩形窗,汉宁窗,汉明窗,布莱克曼窗频率响应
不过,在我们选择窗函数前,必须要了解一下FFT的工作特点,因为窗函数是由
FFT算法的最优解决定出来的。
窗函数应最大可能的配合FFT,这样系统才会更有效识别
语音。
在FFT算法中是假设信号离散化处理后是可以进行周期性延拓的,故含有该离散时间的信号都应当为周期函数,并且周期与样本点的个数无关。
但是如果样本点个数的大小不是信号的周期整数倍,那么假设条件就会不成立,同时会产生频谱泄漏的后果。
现实环境下所处理的未知信号一般是平稳的,但这也无法保证采样点数恰巧为周期的整数倍。
频谱泄漏使给定频率分量的能量泄漏到相邻的频率点,从而在测量结果中引起误差。
不过选择合适的窗函数可以减小频谱泄漏效应。
根据输入数据通过一个窗函数相当于原始数据的频谱与窗函数频谱的卷积。
有了FFT计算需要注意的要求以后,我们可以根据要求来选择窗函数。
由上图1-2可以很明显的看到矩形窗主瓣最小,但是旁瓣较多。
布莱克曼窗,主瓣最大,旁瓣衰减最快。
所以这两个窗都不符合处理语音的要求,所以我们不用。
语音处理的对象不仅含有低频的部分,还有高频的部分。
汉明窗与汉宁窗相比,其主瓣较小,且旁瓣衰减波动平缓,处理语音的清音时更容易采集到其信息特点,并且损失信号能量较小。
由上面的分析,我们可以在理论上得到选择海明窗的结论。
另外在现实,我们由前人的经验也可以得到,用的最多是海明窗。
基于理论和现实上的考虑,使用海明窗是个我们正确的选择。
海明窗:
w(n)=ï
ì0.54-0.46cos(2p*
í
ïî0;其他
nN-1
);0£n£N-1
(1-2)
选择好窗函数后,我们还有需要注意的地方,就是那个样本点的个数问题。
现实中我从理论资料查到下面的结论。
窗的衰减与持续时间没有必然的关系,N的加大仅仅为了缩小主瓣的带宽。
生活中样本点很少的话,短时能量会大幅度增加,但是样本点如果太多的话,可能会将短时的能量给其平均化,样本的特征可能就给掩盖掉了,不能反映语音的特点,所以识别也就不会成功。
这个结论,给我们采样点的个数有了一个提示,不是越多越好。
语音识别的对象有男有女,且信号长度一般为10ms到30ms之间。
于是考虑到女的音频较高(样本点较少约16个),男的音频较低(样本点较多约250个)所以取男女样本的中位数200个。
在具体的操作中,要保证含有至少两个音调周期,既保证频谱会出
现周期性的现象。
这样能提高系统识别的正确率,不会将信号当成噪声而不进行识别。
2.LPC介绍
有了上面的基础,可以更加具体深入的探讨处理语音技术的方法,由于采集的样本点个数不多,且识别的精确度要求不是太高,我们就采用LPC分析法。
LPC分析中需要注意的有两点。
1.用的是短期相关的模型化。
2.一个低阶的滤波器来进行过滤。
为了更好表述,就用框图来进行理论的说明。
音调周期
清音/浊音开关
x(n) u(n)
G
无归噪声发生器
脉冲序列发生器
LPC系数
时变滤波器
输出
语音
)
S(n
图1-3LPC处理语音的步骤
根据图1-3系统的传递函数为
H(z)=S(z)=
M
G(1-åbz )
-j
j
j=1
(1-3)
j
X(z)
1-å
N
i=1
az-j
对于上面的公式1-3,如果分母的次数较高,那么我们可以用全极点的模型来代替上面那个公式,简化成一个新的公式1-4。
H(z)=
G
P
1-åajj=1
z-j
(1-4)
我们不妨再进一步变化,可以将公式(1-4)变换到时域中。
那么便得到公式1-5,
P
s(n)=Gx(n)+åajs(n-j)
j=1
(1-5)
这个就是LPC的差分的方程。
根据这个方程,我们可以知道,当可以得到s(n)的测量值,就可以算的到对应的参量值aj,然后又可以利用参量值,去反推H(z)的参量。
另外为了说明误差的大小,可以用平方误差来量化说明。
P
误差的公式:
e(n)=s(n)-åajs(n-j)
j=1
(1-6)
P
j
E=E{e2(n)}=E{[s(n)-åas(n-j)]2}
(1-7)
j=1
对aj进行求导,是j=1,2,3····P为零。
我们得到
P
E{[s(n)-åajs(n-j)]s(n-j)}=0
j=1
即:
(1-8)
P
åajfn(i,j)=fn(i,0)
j=1
(1-9)
10)
对于i=1,2,,p
其中
fn(i,j)=E{s(n-i)s(n-j)}
(1-
由于公式(1-10)是有限的且稳定的信号,我们可以用有限项求和来替代。
到了这里,仔细研究公式(1-10)可以发现它有结构组成上特点,于是很容易想到自相关公式。
对于自相关的公式,我们有下面要注意的地方。
在波形段sn(m)在间隔
0£m£N-1之外假设为零,样品序列长度为N。
那么,对于N£m£N+P,要预测样品的值,因为实际上不是零,所以过去的不精确的结果,会对未来预测产生影响。
自相关的公式:
作参量变换:
jn(i,j)=
N-1-(i-j)
å
sn(m')sn(m'+i-j),1£i£p,0£
m'
j£p
(1-11)
变换得到:
m'=m-i;
N+P-1-i
m=m'+i
fn(i,j)=
åsn(m')sn(m'+i-j)
m'=-i
(1-12)
考虑到sn(m)只能在0£m£N-1
以改写为:
之内取值,其余的地方为零。
所以式(1-12)可
13)
N-1-(i-j)
å
fn(i,j)= sn(m')sn(m'+i-j)
m'=0
公式(1-13)又可以变成短时间自相关函数:
1£i£p,0£
j£p
(1-
fn(i,j)=Rn(i-j)
N-1-j
对于i=1,……p j=0,……p (1-14)
其中
又因为自相关,又可以变成
P
Rn(j)=
åsn(m)sn(m+j)
m=0
åajRn(i-j)=Rn(i)
j=1
1£i£P
(1-15)
在我们的LPC分析公式中,我们假设,如果结果是满意的,那么所估计的参量aj应该等于我们模型的这些参量,也就是aj,如果两者相同,那么e(n)=Gx(n)=u(n),也就是说
残差就是激励信号。
要得到e(n),就可以用传输函数的逆滤波器
逆滤波器公式:
H(z)=1-åaz
p
-1 -j
j
(1-16)
j=1
因为S(z)=H(z)U(z),则U(z)=H-1(z)S(z),从上面的表达式中可以看出,误差信号或激励信号是非常有用的。
理由之一是由于逆滤波以后,所得到误差信号e(n)和原始信号s(n)相比有比较小的变化。
另外我们还发现,由LPC频谱去匹配信号的频谱包络时,在频谱峰值比频谱谷值要更好一些,这是因为我们的模拟传递函数H(z),只有极点模拟共振峰的峰值,没有零点的模拟频谱谷值。
第二章语音识别系统硬件电路
第2.1节基于STC控制电路
2.1.1STC11l08x单片机介绍
增强型8051CPU,IT,单时钟/机器周期,指令代码完全兼容传统8051。
工作电压:
3.6V-2.4V/2.1V(3V单片机);
工作频率范围:
0~35MHz,相当于普通8051的0~420MHz。
通用I/O口(36/40/12/14/16个)每个I/O口驱动能力均可达到20mA。
常温下内部R/C振荡器频率为:
4MHz~8MHz;
精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准。
共2个16位定时器(与传统8051兼容的定时器/计数器,16位定时器TO和
T1)。
有1个独立波特率发生器(故必用T2做为波特率发生器)。
3个时钟输出口,可由
TO的溢出在P3.4/TO输出时钟,可由Tl的溢出在P3.5/TI输出时钟,独立波特率发生器可以在Pl.0口输出时钟。
外部中断I/O口5路,传统的下降沿中断或低电平触发中断,PowerDown模式可由外部中断唤醒,INTO/P3.2,INTl/P3.3,INT/TO/P3.4,INT/T1/P3.5,INTINT/RxD/P3.0r
或INT/RxD/P1.6。
2.1.2单片机的最小系统
就51系列单片机而言,最小系统一般应该包括:
晶振电路、复位电路,但是本设计采用的STC11l08x是增强型51单片机,它除了上面最基本的部分还有其他部分,如A/D转换等,但这里就只介绍两大部件。
C?
C01
100uF/16v
P1.51
P1.62
P1.73
4
RXD5
LD-MD6
TXD7
R01
10KLDIRQ8
IT19
T010
VCC
*
图2-1 复位电路
复位电路由电容串联电阻构成,如图2-1所示,根据"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。
典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。
一般教科书推荐C 取10u,R取
8.2K。
当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。
至于如何具体定量计算,可以参考电路分析相关书籍。
Cx130p
Cx230p
1
2
XTAL
LD-RD13
LD-CLK14
15
16
17
LD-A018
LD_CS19
20
P2.321
图2-2 晶振电路
如图2-2所示,典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和
19200波特率,用于有串口通讯的场合)/12MHz(产生精确的us级时歇,方便定时操作)有了上面的分析,单片机控制系统可以设计出来,如图2-3所示。
*
C?
C01
100uF/16v
P1.51
P1.62
P1.73
4
R0110K
Cx130p
XTAL
Cx230p
P1.5P1.6P1.7RST
RXD5P3.0/RXD
LD-MD6P4.3/INT2
TXD7P3.1/TXD
LDIRQ8P3.2/INIT0
IT19P3.3/INIT1
T010P3.4/T0
LDRST11P3.5/T1
LDWR12P3.6/WR
LD-RD13P3.7/RD
LD-CLK14XTAL2
15XTAL1
16GND
17P4.0
LD-A018P2.0
LD_CS19P2.1
20P2.2
P2.321P2.3
P2.422P2.4
P1.444P1.4
P1.343P1.3
P1.242P1.2
P1.1/T2EX41P1.1
P1.0/T240P1.0
P4.2/INT339LED
VCC38
P0.037LD-P0
P0.136LD_P1
P0.235LD-P2
P0.334LD_P3
P0.433LD-P4
P0.532LD-P5
P0.631LD-P6
P0.730LD-P7
NA29
P4.128P4.1
ALE27
PSEN26
P2.725P2.7
P2.624P2.6
P2.523P2.5
VCC
12
VCC
Component_2
图2-3 STC11l08x系统图
第2.2节基于语音处理电路
2.2.1LD3320介绍
LD3320芯片是一款“语音识别”专用芯片,由ICRoute公司设计生产。
该芯片集成了语音识别处理器和一些外部电路,包括AD、DA转换器、麦克风接口、声音输出接口等。
本芯片在设计上注重节能与高效,不需要外接任何的辅助芯片如Flash、RAM等,直接集成在现有的产品中即可以实现语音识别/声控/人机对话功能。
并且,识别的关键词语列表是可以任意动态编辑的。
不需要外接任何辅助的Flash芯片,RAM芯片和AD芯片,就可以完成语音识别功能。
真正提供了单芯片语音识别解决方案。
每次识别最多可以设置50项候选识别句,每个识别句可以是单字,词组或短句,长度为不超过10个汉字或者79个字节的拼音串。
另一方面,识别句内容可以动态编辑修改,因此可由一个系统支持多种场景。
芯片内部已经准备了16位A/D转换器、16位D/A转换器和功放电路,麦克风、立体声耳机和单声道喇叭可以很方便地和芯片管脚连接。
立体声耳机接口的输幽功率为20mW,而喇叭接口的输出功率为550mW,能产生清晰响亮的声音。
支持并行和串行接口,串行方式可以简化与其他模块的连接。
电压要求:
VDD
数字电路用电源输入
3.0V
- 3.3V
VDDIO