人工语音合成处理系统V1.0目录1引言 (3)1.1背景 (3)1.2系统特点 (3)2系统硬件设计 (4)2.1总体硬件设计 (4)2.2蜂鸣器设计 (4)2.3整体硬件设计电路图 (7)3系统软件设计 (7)3.1软件设计构成 (7)3.2软件设计流程 (8)4系统应用介绍 (9)5参考书籍 (11)1引言1.1背景现今社会人们依靠各种机电系统和计算机系统从事劳动生产、工业控制和科学研究。
当人们操纵这些系统的时候,就自然地出现了人与系统的信息交流,即系统不断的报告自己的运行状态和结果,而人们根据这些状态和结果发出下一步应进入何种状态的命令。
长期以来,计算机与人之间的信息交流主要依靠各种形式的键盘,按键等实现的,计算机要报告运行状态,结果只能通过各种显示装置。
语音合成技术是实现人机语音通信,建立一个有听说能力的口语系统所必需的关键技术之一。
随着计算机运算速度的提高,人工智能领域的研究获得了飞速发展,而人工智能领域的最新研究成果不断地向语音研究渗透,促使语音处理技术及语音合成的研究也产生了突破性的飞跃。
和语音识别相比,语音合成技术相对要成熟一些,是该领域中近期最有希望产生突破并形成产业化的一项技术。
人工语音合成处理系统V1.0(简称语音合成系统)由软件实现词汇语音合成器,使人们能够甩掉键盘,通过语言命令进行操作。
系统在完成其它任务的同时具备语音输出功能,可使单片机系统成本下降,体积减小,可靠性提高。
它对于解脱繁琐的事物性和危险性工作更具有现实意义!1.2系统特点提高合成语音的自然度就汉语语音合成来说,目前在单字和词组一级上,合成语音的可懂度和自然度已基本解决,但是到句子乃至篇章一级时其自然度问题就比较大。
基于语音数据库的语音合成方法进一步提高语音合成的自然度。
因为这是一种采用自然语音波形直接拼接的方法,进行拼接的语音单元是从一个预先录下的自然语音数据库中挑选出来的,因此有可能最大限度地保留语音的自然度。
丰富合成语音的表现力目前国内外大多数语音合成是针对文语转换系统,且只能解决以某种朗读风格将书面语言转换成口语输出,缺乏不同年龄、性别特征及语气、语速的表现,更不用说赋予个人的感情色彩。
本系统对入机交互提出了更高的要求,即语音合成已开始从文字到语音的转换阶段向概念到语音的转换阶段发展。
在嵌入式系统中应用语音合成技术在提高合成语音的质量和增强语音合成的表现力以外,在其他实用化方面也有加以改进的地方。
目前高质量的汉语文语转换系统~般需要几兆字节到几十兆,甚至几百兆字节的存储容量,这在以PC机或工作站为硬件平台的应用中是没有问题的,而对于像一些资源有限的基于嵌入式系统的设备如PDA、无线通信手机以及商务通等上就没法承受。
解决的方法可以是通过语音压缩编码的方法来压缩音库所需的容量,或者采用更小的合成基元,例如用声母、韵母或双音素、半音节,以及裁减合成语音所需的音节基元个数等等。
同时优化算法,降低算法的复杂度,保证合成质量的前提下,裁减音库与算法达到平衡。
2系统硬件设计2.1总体硬件设计语音合成系统以语音合成部分作为主电路,在单片机89C51CPU管理下,编程并通过串行口编程进行通信,产生不同定时来准确地控制乐曲节奏,也可采用EPROM芯片固化语音,保证断电后补丢失信息,最终实现蜂鸣器语音合成的过程。
2.2蜂鸣器设计在本系统中,除了显示器件外经常用到发生器件,最重要的发声器件就是蜂鸣器。
蜂鸣器一般用于一些要求不高的声音报警及发出按键操作提示音等。
虽然蜂鸣器也有自己固有的频率,但是也可以对其施加不同频率的方波,使之发出对应的声音。
因为蜂鸣器是感性负载,一般不建议用单片机的I/O口直接对其进行操作,最好是加一只驱动三极管。
在要求较高的场合,还要加上一只反相保护二极管。
蜂鸣器最重要的特点是只要按照极性要求加上合适的直流电压就可以发出固有频率的声音,使用起来比扬声器简单。
其芯片结构如下:芯片结果详细说明如下:电源引脚Vcc和Vss :Vcc(40脚):电源端,为+5V。
Vss(20脚):接地端。
外接晶体引脚XTAL1和XTAL2:XTAL2(18脚):接外部晶体和微调电容的一端。
在89C51片内塔式振荡反相放大器的输出端,振荡电路的频率就是晶体的固有频率。
若须采用外部时钟电路,则该引脚悬空。
要检查89C51的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):接外部晶体和微调电容的另一端,在片内,他是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚输入外部时钟脉冲。
控制信号引脚RST,ALE,PSEN和EARST(9脚):RST是复位信号输入端,高电平有效。
当次输入端保持两个机器周期的高电平时,就可以完成复位操作。
ALE/PROG:地址锁存允许信号端。
当89C51上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率的1/6。
CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
平时不访问片外存储器时,ALE端也以振荡频率的1/6固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。
如果想确认89C51芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。
若有脉冲信号输出,则89C51基本是好的。
ALE端的负载驱动能力为8个LS型TTL负载。
次引脚的第二功能PROG对片内带有4KB FlashROM的89C51编程写入时,作为编程脉冲输入端PESN:程序存储允许输出信号端。
当89C51/LV51由片外程序存储器取指令时,每个机器周期两次PSEN有效。
但在此期间内,每当访问外部数据存储器时,这两次有效地PSEN信号将不出现。
PSEN端同样可驱动8个LS型TTL负载。
要检查一个89C51小系统上电后CPU能否正常工作,也可用于示波器看PSEN端有无脉冲输出。
如有,则说明基本上工作正常。
EA/Vpp:外部程序存储器地址允许输入端/固化编程电压输入端。
当EA 引脚接高电平时,CPU只访问内F lash ROM并执行内部程序存储器中的指令;但当PC得值超过0FFFH时,将自动转去执行片外程序存储器内的程序。
当输入信号EA引脚接低电平时,CPU只访问片外ROM并执行片外程序存储器中的指令,而不管时候有片内程序存储器。
然而需要注意的是,如果保密位LB1被编程,则复位时在内部会锁存EA端的状态。
当EA端保持高电平时,CPU则执行内部程序存储器中的程序。
在FlashROM编程期间,该引脚也用于施加12V的编程允许电源Vpp.输入/输出端口P0.P1.P2和P3P0端口:P0口是一个漏极开路的8位准双向I/O端口。
作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。
当P0口作为输入口使用时,应先向口锁存器写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。
作输入口使用时要先写1,这就是准双向的含义。
在C PU访问片外存储器时,P0口分时提供低8位地址和8位数据的复用总线。
在此期间,P0口内部上拉阻有效。
在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。
验证时,要求外接上拉电阻。
P1端口:P1时一个带有内部上拉电阻的8位双向I/O端口。
PI的输出缓冲器可驱动4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可做输入口。
P1作输入口使用时,因为内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流在对FlashROM编程和程序校验时,P1接收低8位地址。
P2端口:P2时一个带有内部上拉电阻的8位双向I/O端口。
P2的输出缓冲器可动4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可做输入口。
P2输入口使用时,因为内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器和16位地址的外部数据存储器时,P2送出高8位地址。
在访问8位地址的外部数据存储器时,P2口引脚上的内容,在整个访问期间不会改变。
在对Flsah ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。
P3端口:P3是一个带有内部上拉电阻的8位双向I/O端口。
P3的输出缓冲器可驱动4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可做输入口。
P3作输入口使用时,因为内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流.在89C51中,P3端口还用于一些复用功能。
在对F lsah ROM 编程和程序校验时,P3还接收一些控制信号。
2.3整体硬件设计电路图硬件电路如下图,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。
3系统软件设计3.1软件设计构成语音合成系统由一系列动态链接库构成,各组成部分,各动态库由C语言书写。
这种动态库的使用方便未来对局部进行修改。
通过对动态库的加载,可以方便的将该语音合成系统集成到任何应用环境中。
系统输入以汉语为主,允许混合少量英文单词、希腊字母以及其它通用符号。
声学库中的语音波形分别采样AMR及MFCC两种编码方式,此外MFCC编码后再进行矢量量化处理,由此形成多种码率的声学单元库。
采用不同的单元库将获得不同音质的合成结果输出。
系统的录音为女声,可以通过一定的算法,如基音同步叠加技术(Pitch Synchronous Overlap Add, PSOLA)算法,在输出端对音色进行修改。
3.2软件设计流程由于声音的频谱范围约在几十到几千赫兹,语音合成系统利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。
仅这还不够,要准确合成声音,必须准确地控制声音节奏,即一音符的持续时间。
音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。
便如某声音的节奏为每分钟94拍,即一拍为0.64秒。
但时,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。
我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。