一种智能语音抢答器的设计.docx
- 文档编号:27750879
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:56
- 大小:3.71MB
一种智能语音抢答器的设计.docx
《一种智能语音抢答器的设计.docx》由会员分享,可在线阅读,更多相关《一种智能语音抢答器的设计.docx(56页珍藏版)》请在冰豆网上搜索。
一种智能语音抢答器的设计
学号:
10446234
常州大学
毕业设计(论文)
(2014届)
题目一种智能语音抢答器的设计
学生朱京
学院信息科学与工程学院专业班级电子102
校内指导教师段仲麒专业技术职务讲师
校外指导老师专业技术职务
二○一四年六月
一种智能语音抢答器的设计
摘要:
由公交车的报站系统得到启发,将报站系统经过修改将其移植到抢答器之上。
设计一款智能语音抢答器,其可以代替主持人完成提示选手进入抢答环节、语音随机出题及报号、提示抢答环节结束的功能。
这样的抢答环节由机器发声,具有统一的音色、语调,避免主持人个人的因素对选手带来的不公平性。
这款智能语音抢答器由控制芯片、液晶显示器、中文语音合成芯片、4*4矩阵键盘以及扬声器组成。
其中控制芯片选用的是STM32系列的stm32f103rbt6,其具有128kb的闪存,最高工作频率达到72MHz。
负责整个抢答器系统的按键扫描、发送数据给液晶、给语音合成芯片。
液晶显示器选用的是TFTLCD,常见于智能手机上。
具有强大的功能,可以改变字体颜色、设置文字的显示区域等。
中文语音合成芯片选用的是SYN6658,由北京宇音天下有限公司推出的。
可以对任意中文文本进行语音合成,甚至可以识别多音字及中文姓氏等非常规的读法。
关键词:
公交车报站系统;智能语音;STM32;
Designofanintelligentvoiceresponder
Abstract:
Inspiredbythebusstopreportingsystem,thenewspaperstationsystemaftermodificationoftheresponder.Designofanintelligentvoiceresponder,whichcanreplacethehosttocompletetipintoresponderlink,randomandreportedspeech,clewviestoanswerfirstlinkendfunction.Suchamachinevoiceanswerlink,withaunifiedtone,intonation,avoidtheunfairfactorsofhostindividualstotheplayer's.
Theintelligentvoiceansweringdevicebythecontrolchip,liquidcrystaldisplay,Chinesespeechsynthesischip,4*4matrixkeyboardandspeakers.ThecontrolchipisusedistheSTM32seriesofstm32f103rbt6,whichhas128KBofflashmemory,themaximumoperatingfrequencyisupto72MHz.Responsiblefortheentirerespondersystemkeyscanning,sendsdatatotheLCD,gaveaspeechsynthesischip.Liquidcrystaldisplay,selectTFTLCD,commoninintelligentmobilephone.Withpowerfulfunction,canchangethefontcolor,setthetextdisplayareaetc..ChinesespeechsynthesischipselectSYN6658,launchedbytheBeijingYusoundworldCo.ltd..CanbethevoicesynthesisofarbitraryChinesetext,canevenidentifypolyphoneandChinesesurnameandothernonconventionalpronunciation.
Keywords:
Busstopreportingsystem;intelligentvoice;STM32;
摘要I
AbstractⅡ
1前言
1.1本课题的设计背景与意义
抢答器是一种应用极其广泛的基础设备,在各种知识竞赛、抢答环节等文体活动中,它能客观、及时、快速地分辨出首先获得抢答权的选手。
公交车的出现方便了大家的出行,公交车每到一个站台就会语音提示哪个站台到了,提醒要下车的乘客提前做好下车准备,还有在车顶上会有液晶显示站台的名称。
由公交车报站系统得到启发,完全可以把这公交车报站系统运用到抢答器上,于是便联想到语音系统也可以运用到抢答器中,设计一款智能语音抢答器。
该抢答器除了完成一般抢答器的功能外,主要体现智能化的应用。
由主持人一键式控制,可以实现随机出题并语音报题,选手抢答后并语音报号;而后又加上液晶显示题目和选手号码,更加具备智能化。
这种抢答器不仅减轻了主持人的工作量、降低了口误的发生率、便于主持人掌控现场,而且在抢答过程中避免了由于不同的主持人出题的时间、语速、音量的高低不同以及可能主持人带有的地方口音,对选手答题带来的不公平性、不公正性。
同时其价格低廉、安装、使用方便,像这样的一键式控制的抢答器具有广阔的应用前景。
通过本次设计不仅可以了解抢答器的工作原理、实现的功能外,还可以将公交车的报站系统移植到抢答器之中。
由实际生活当中的例子联想到其他领域是一次理论与实践相结合的大胆尝试。
促进思维,提高创新能力。
1.2目前抢答器的发展现状及趋势
传统的抢答器是靠人眼去分辨不仅带有主观性而且结果不太准确。
但是随着电子信息技术的迅猛发展,抢答器便由可控硅、三极管、发光管等组成,能通过发光管的指示辩认出抢答选手号码。
随着单片机技术的快速发展,促使绝大部分的抢答器开始使用数字集成电路和单片机来控制(典型的就是51系列的单片机),并添加了许多新功能。
如选手号码显示、抢答前或抢答后的计时、蜂鸣器提示选手时间、选手得分显示等功能。
但目前使用的抢答器存在着几个方面的不足:
有的电路简单,造价低廉,但功能并不完善,无法满足大型赛事的硬性要求;有的电路复杂,不易制作,后期的维护也不方便。
因此,制作一款功能齐全、结构简单的智能抢答器就很有必要。
1.3本课题的设计任务与目标
本课题的任务就是要设计一款8路带有语音功能的智能抢答器。
(1)抢答器有8路抢答按钮,编号从1到8,即最多容纳8组选手;
(2)抢答器具有提示选手进入抢答环节功能,以便选手做好抢答准备;
(3)抢答器具有语音随机出题并语音报号的功能(首先拿到抢答权的选手的号码);抢答器具有显示题目内容和选手号码的功能,在此强调要控制好语音出题和液晶显示题目的时间差,时间差要控制在1s之内;
(4)主持人可以控制出题的时间,以便在题目与题目之间协调好选手与现场,保证抢答环节持续有效的进行;
(5)抢答器具有提示选手抢答环节结束的功能。
2系统开发平台和方案论证与选择
2.1开发平台
2.1.1软件平台:
keil
KeilC51是美国Keilsoftware公司推出的51系列兼容单片机,C语言软件开发的一款产品。
C语言在结构上、可读性上、功能性上、可维护性上相对于汇编有很明显的优势。
在使用C语言编程,或者即使不使用C语言而仅仅使用汇编语言来编程,Keil的集成环境简单、仿真调试工具强大,在操作时这些优点会令工作效率提高,并可高效完成。
打开keil,然后点击project,新建project。
接下来对每个硬件模块建立一个.c(内容是函数的实现)和.h文件(包含必须的头文件、函数定义、宏定义),最后建立一个main.c文件来调用在.h文件中定义的函数。
2.1.2硬件平台:
STM32开发板
STM32开发板以STM32F103RBT6作为主控芯片。
使用32位的ARMCortex-M3的RISC内核。
工作频率最高可以达到72MHz,丰富的增强I/O端口(共64个引脚,引脚被排针引出,可外接液晶、0LED、NRF24L01无线模块、按钮等外设)和连接到两条APB总线的外设,内置高速存储器(高达128K字节的flash),。
所有型号的器件都包含一个USB接口(为板子供电)和一个CAN接口、2个12位的模数转换、3个USART接口(其中PA9、PA10作为串口1的收发端,与PC通信作为烧写程序的渠道)、1个PWM定时器(可直接产生PWM波)和3个通用16位定时器(可以用于精准定时)、1个SPI接口(与flash相接)和2个I2C接口,还包含标准和先进的通信接口。
另外开发板上还可以接J-Link,方便进行硬件调试。
2.2方案选择与论证
2.2.1系统图设计
设计基本思想:
通过按键扫描出功能,如果是主持人按下控制按钮,那就由主控芯片分别控制液晶显示题目及语音合成再让喇叭发声。
如果是选手按下抢答按钮,就由主控芯片控制语音合成芯片进行语音报号,提示哪位选手抢答成功。
如图2.1所示:
图2.1系统图
2.2.2控制芯片的选择
方案一:
STC89C52
STC89C52内部flash只有8KB大,对于一般的程序而言足以。
但是这款抢答器有液晶显示所以要把字库烧写到flash内,8KB的容量太小。
还有STC89C52接11.0592MHz,机器周期1μs,指令周期是1到4μs。
因为此抢答器要控制好液晶显示与语音合成之间的误差,工作频率太小,不足以实现上述功能。
方案二:
MSP430F149
MSP430F149内部flash达到了60KB,可以容纳字库。
其工作电压只有1.8V到3.6V,功耗比STC89C52小。
它的处理功能强大,中央处理单元中集成了专用的寄存器部分,转移指令、硬件的计算和布尔处理器以及各种逻辑运算,都给我们的应用提供了很大的方便。
但是其数据位宽度是16bit,处理速度还是达不到语音合成及液晶显示的要求。
方案三:
STM32F103RBT6
使用的32位ARMCortex-M3的RISC内核,属于STM32103增强型系列。
而价格却和8位机的价格接近。
工作频率为72MHz,芯片的处理速度是STC89C52的72倍,可以满足此款抢答器的处理要求。
杰出的功耗控制,虽然工作频率高达72MHz,但各个外设都有自己的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。
其内置高速闪存达128KB,完全可以存储程序及字库。
极低的开发成本,STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持SWD和JTAG两种调试口。
SWD调试可以为设计带来跟多的方便,只需要2个IO口,即可实现仿真调试。
综上所述,因为
(1)语音模块需要写入大量的数据,要求大容量的flash;
(2)控制好液晶显示和语音合成之间的误差,要求高工作频率,高处理速度;
(3)功耗低、开发成本、调试接口
所以选择方案二作为本次设计的控制芯片。
2.2.3语音合成芯片的选择
方案一:
ISD1820
ISD1820是录音放音模块,即先要录音对声音信号进行数据的采集、量化、编码后再对录音还原放音,涉及到一个模数转换、数模转换的过程。
而在模数转换、数模转换的过程中,有许多误差不能避免造成语音的自然度、流畅度、音色等有不同程度的损失。
在语音合成方面,缺点是只能处理10s的录放音的数据,对于这款抢答器不管是题目的内容还是语音提示都不只10s。
其功能也不够完善,只能完成简单的录音、触发模式放音、点动模式放音。
方案二:
SYN6658
SYN6658是一款智能语音合成芯片。
没有模数转换,直接将文本作为程序的一部分,烧写到主控芯片内。
然后主控芯片通过串口或SPI发送文本给SYN6658进行语音合成。
也就避免了模数转换过程中可能出现的误差,比ISD1820的自然度、清晰度更高。
此外,SYN6658一次性可以处理长达4KB的文本,对于一般的题目内容及提示信息是不成问题的。
而其可以识别多音字、常见的号码、日期等功能比ISD1820更强大。
其工作电压只有3.3V,功耗低。
综上所述:
因为
(1)考虑到声音的自然度、流畅度,SYN6658的误差更小;
(2)由于所需处理的语音合成数据量较大,SYN6658可以满足条件;
所以选择方案二作为语音合成芯片。
2.2.4发声模块的选择
方案一:
蜂鸣器
蜂鸣器分为有源和无源,两者之间的区别就是内部有无振荡电路。
有源直接通电就可以发声,无源必须加载一定频率的方波才能发声。
但是无论是有源还是无源,蜂鸣器发出的声音都是固定的频率,适用于报警或者提示音,并不符合抢答器发声自然度、音色、音调各方面的要求。
方案二:
扬声器
扬声器俗称喇叭,是发声电子设备中最常见的。
发声原理有电容式、动圈式、压电式、电磁式等几种。
主要性能指标有:
频率响应、额定阻抗、额定功率以及失真度等。
只要保证符合以上参数的条件下,扬声器就可以把原来的声音逼真的还原出来,恰好符合语音合成对音色、自然度方面的要求。
综上所述:
因为扬声器符合语音合成对音色、自然度的要求,故选择扬声器作为发声模块。
3系统总体设计
3.1系统总体设计图
图3.1系统总体设计图
本课题将以STM32F103RBT6单片机为主控制芯片,设计具有语音随机出题、语音报号、液晶显示题目、液晶显示选手号码、抢答自锁等功能的抢答器。
本设计的语音随机出题及语音报号功能的实现主要由SYN6658芯片完成,将语音信息通过串口程序发送并写入单片机,控制中文语音合成然后控制喇叭发声。
同时,本课题采用TFTLCD薄膜晶体管液晶显示器可以显示语音题目。
本次设计采用模块化的设计思想。
主控制模块是STM32103RBT6,液晶显示模块是TFTLCD,语音出题及报号模块是SYN6658,发声模块是喇叭及按键扫描模块。
具体的工作流程由主持人控制,包括提示选手进入抢答环节、液晶显示题目并语音报题、提示首先拿到抢答权的选手、循环出题直到抢答环节结束。
在这里要阐述一下:
因为考虑到实际情况,每条题目抢答结束后,主持人要向选手们解释答案或者和现场的观众互动等,所以每次抢答都需要主持人按下控制按钮才会语音随机出题。
C语言是使用最广泛的高级程序设计语言之一。
C语言具备简洁紧凑、灵活方便、运算符丰富、数据类型丰富、C是结构式语言、语法限制不太严格,程序设计自由度大、生成目标代码质量高,程序执行效率高、适用范围大,可移植性好等优点。
所以选用C语言作为本课题的编程语言。
3.2硬件模块的设计
3.2.1STM32F103RBT6主控制模块的设计
一、STM32F103RBT6简介
基于专为达到高性能、高代码密度、低成本、低功耗要求的嵌入式应用领域,而专门设计的ARMCortex-M3内核诞生了--STM32系列[7]。
其中STM32F103属于“增强型”系列,是同类产品中性能最高的产品,增强型系列时钟频率可以达到72MHz。
内置32K到128K的flash,当时钟频率为72MHz时,从flash中执行代码,STM32功耗只有36mA,相当于0.5mA/MHz,是市场上32位功耗最低的芯片[14]。
STM32F103RBT6型号的说明:
(1)STM32:
STM32表示基于ARMCortex-M3内核的32位微控制器。
(2)F:
F表示芯片子系列。
(3)103:
103表示增强型系列,101表示基本型系列。
(4)R:
R这一项表示引脚数目。
其中R代表64脚,另外还有T代表36脚,C代表48脚,V代表100脚,Z代表144脚。
(5)B:
B这一项表示内嵌Flash的容量大小。
其中B代表128K字节Flash,另外还有6代表32K字节Flash,8代表64K字节Flash,C代表256K字节Flash,D代表384K字节Flash,E代表512K字节Flash。
(6)T:
T这一项表示封装。
其中T代表LQFP封装,另外还有H代表BGA封装,U代表VFQFPN封装。
(7)6:
6这一项表示工作温度范围,其中6代表-40——85℃,7代表-40——105℃。
STM32F103RBT6内部集成:
(1)32位的CPU,DMIPS-72M
(2)128KB的闪存
(3)嵌套的中断控制器
(4)3个16位的定时器、1个16位的高级定时器
(5)3个串口、USB和CAN各1个、2个SPI
(6)20KSRAM
(7)2个SPI、2个IIC、2个12位的ADC
二、STM32103RBT6引脚图
STM32103RBT6芯片采用LQFP也就是薄型QFP。
QFP中文含义是四方扁平式封装技术,该技术实现了CPU芯片引脚之间距离可以很小,封装本体厚度为1.4mm的QFP。
管脚很细。
一般大规模或超大规模集成电路采用这种封装形式,其引脚数一般都在100以上[11]。
该技术封装CPU时操作方便,可靠性高;而且其封装外形尺寸较小,寄生参数减小,适合高频应用;该技术主要适合用SMT表面贴装技术在PCB上安装布线。
如图3.1所示:
图3.2STM32103RBT6引脚图
三、STM32103RBT6原理图
图3.3STM32103RBT6原理图
四、STM32时钟树
STM32一共有5个时钟源,分别包括HSI、LSI、HSE、LSE、PLL。
(1)HSI:
RC振荡器,高速内部时钟,频率8MHz,但是精度不高;能够独立地提供系统时钟。
相比HSE而言,启动时间比HSE短。
(2)LSI:
RC振荡器,低速内部时钟,频率是40KHz,提供低功耗的时钟;可以在待机和停机模式下保持运行状态,为自动唤醒单元和IWDG提供时钟;
(3)HSE:
可以由外部晶体/陶瓷谐振器或用户外部时钟产生的高速外部时钟,
频率范围4到16MHz,可为系统提供更加准确的时钟;
(4)LSE:
低速外部晶体或陶瓷谐振器,频率为32.768kHz的,提供低功耗的时钟。
它为RTC或其他定时功能提供精确的时钟源;
(5)PLL:
锁相环倍频输出。
其时钟输入来源包括:
HSE/2,HSI,HSI/2,倍频2到16倍。
但是输出的最大频率限制为72MHz。
STM32时钟树如图3.4所示:
图3.4STM32时钟树
五、系统时钟
为了保证STM32正常工作,所以必须保证系统时钟的稳定性。
HSI,内部RC振荡,启动速度快保证系统时钟的稳定性。
如果要启用HSE作为系统时钟的话,只有当时钟控制寄存器(RCC_CR)里的状态指示位HSERDY(外部高速时钟就绪标志)被置1的时候,也就是说这时候外部时钟已稳定,才有可能发生时钟的切换。
这是STM32高稳定性的主要原因之一。
六、工作原理
让STM32的某个单元工作的话,首先要配置系统时钟,然后再使能这个单元相应的时钟,接下来通过库函数配置相应的寄存器或者直接操作寄存器来使这个单元满足工作的要求。
比如:
现在要用STM32的端口A的1脚来驱动发光二极管。
按照上面的描述,首先打开系统时钟,接着配置端口A的时钟,然后操作寄存器设置端口A的管脚编号1、端口模式(推挽输出、开漏输出、模拟输入、下拉输入等)、最大输出速度(10MHz、2MHz、50MHz)。
如果难以理解的话,可以将这样的模式和家庭用电相类比。
空气开关是一种断路器保护总个电路。
首先空气开关必须处于闭合状态,总线上才有电。
总线上挂着很多负载,有空调、冰箱、电磁炉等。
当要使用某个负载如空调时,打开空调的开关,空调通电后设置空调的温度、定时时间、风向等。
和STM32工作原理是一个道理,如果要让其他单元进入工作状态都需要重复上述的步骤。
这就是STM32工作的原理,也是STM32低功耗、高性价比的主要原因之一。
3.2.2SYN6658语音模块的设计
一、SYN6658语音芯片简介
在SYN6628的基础上,于2012年由宇音天下公司开发的一款高端语音合成芯片。
SYN6658中文语音合成芯片,模块接口电路简单,加上外围电路,整个语音模块只不过4cm*3.6cm。
一共16个引脚,包括串口通信、SPI通信、左声道、右声道等。
SYN6658合成的音色、流畅度、自然度等方面都比其他语音芯片更加真实、自然,而且板载驱动可直接接0.5w8欧的扬声器。
TTS语音合成技术的行业在SYN6658语音合成芯片的诞生后,必将推动应用走向更深入、更广泛!
二、SYN6658工作原理图
图3.5SYN6658工作原理图
三、模块引脚定义
表3.1模块引脚定义
引脚序号
引脚名称
功能描述
备注
1
GND
参考地信号
2
VCC
+3.3V工作电源
电压范围:
3.3V-4.5V
3
GND
参考地信号
4
HPL
左声道输出
5
GND
参考地信号
6
HPR
右声道输出
7
RDY/BSY
工作状态指示输出
低电平:
Ready
高电平:
Busy
8
Rxd
UART串行数据输入
9
RST
外部复位信号输入
10
Txd
UART串行数据输出
11
SPK1
功放输出端1
两端接喇叭:
推荐0.5W8欧的喇叭
12
SPK2
功放输出端2
13
SPI_SCK
SPI串行时钟输入
14
SPI_SSEL
SPI使能选择输入
15
SPI_MISO
SPI串行数据输出
16
SPI_MOSI
SPI串行数据输入
四、命令帧格式
芯片支持以下命令帧格式:
“帧头FD+数据区长度+数据区”格式[2]。
上位机发送给SYN6658芯片的所有命令和数据都需要用“帧”的方式进行封装后传输。
如图3.6所示:
图3.6命令帧格式
注意:
数据区(含命令字、命令参数、待发送文本)的实际字节数必须与帧头后定义的数据区长度严格一致,否则芯片会接收失败。
五、芯片支持的控制命令
图3.7支持的命令
六、功能
(1)文本合成及智能分析处理
芯片可以支持任意中文文本的合成,同时芯片还可以对英文字母进行合成,每次文本的合成量可以达到4K字节,比之前的芯片有了很大的改进。
清晰、自然、准确的中文语音合成效果。
可以采用BIG5、Unicode、GB2312和GBK四种编码方式。
芯片还可根据内置的文本匹配规则进行正确的识别通用的日期时间、数值、电话号码、特殊字段、度量衡符号等格式的文本并对其进行智能分析处理。
例如:
“火车的速度是671km/h”读作“火车的速度是六百七十一公里每小时”,“1998-05-0118:
45:
39”读作“一九九八年五月一日十八点四十五分三十九秒”,“-24℃”读作“零下二十四摄氏度”,“身高175cm”读作“身高一百七十五厘米”等等。
(2)多音字及中文姓氏的处理
例如:
“银行(hang)行(hang)长穿过人行(xing)道向骑着自行(xing)车的银行(hang)职员行(xing)走过去”,自动识别文本中存在的多音字并给出正确的读音。
而有些汉字作为姓氏的时候,会出现不一样的读法(比如:
解xie、单shan、查zha、仇qiu等),芯片同样会自动识别。
(3)分别支持10级音量、语速、语调调
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 智能 语音 抢答 设计