嵌入式TTS汉语语音系统的设计与实现

发布者:心语乐章最新更新时间:2006-08-23 来源: Design China关键字:语音  波形  存储器 手机看文章 扫描二维码
随时随地手机看文章

   语言是人与人交流信息的一种手段。使计算机、带有人机交互的电器、仪表等能像人一样开口“说话”是科技工作者多年的研究目标。文语转换TTS(Text To Speech)是自动将输入文字转换成语音输出,并尽量使输出的语音效率流畅、自然的一类技术。TTS系统主要需解决两个问题:①文本分析,即语言学分析。该任务是将以文本广度输入的字符串转换成语言学的表述;②语音合成。即根据语言学的内在表述信息合成语音。TTS系统中的语音合成方法分为时域和频域两大类:频域方法主要有LPC参数合成及其振峰合成两种,其实质是在工程上实现语音生成模型,进而在终端特性上模拟发音器官。在目前阶段,频域方法形成的发音尚不自然,且需要的计算量很大,不适宜在低端的嵌入式芯片上使用。波形编辑法是将较短的数字音频段(即合成基元)拼接并进行段音平滑后生成连续语流的方法。这种方法占用的存储空间大,但计算量小、计算速度快,而且合成语音自然度较高,显然比较适合于芯片性能较弱的嵌入式系统方面的应用。

  采用波形编辑法的嵌入式TTS系统由于成本低、性能完善、自然度高,随着波形修改算法的不断提出以及微处理器和非易失性存储介质功能的不断增强,正日益受到人们的关注。本系统即采用时域波形编辑技术,采集GB2312汉字编码字符集中所有字符发音作为原始材料,通过使用改进的游程编码算法压缩生成可适用于当前Flash存储器的语音库,并采用多重查找表设计及预存储命令字技术有效地加快语音库的寻址速度,在基于Atmel公司的AT89S52单片机上成功实现了一个TTS语音系统,经测试取得了令人满意的效果。该系统应用简便,具有很小的尺寸和很低的功耗及通用的串行接口,可以广泛用于有关的汉语语音应用系统中。

  1 系统原理

  图1为系统原理图框图以及主要操作流程。系统采用串行口与外界交互,任何具有标准串口的设备均可与本系统相连。欲发音汉字的国标码(GB码)由串口送入MCU,MCU将其映射为Flash存储器地址表中对应项的地址,然后根据此地址取得对应项中的命令字,由MCU根据该命令字读取该汉字发音对应的语音数据,连续读出语音数据并以游程码解码算法解码后,按照语音采样时的固定速率通过D/A转换和功率放大播放。本文中语音采样速率为11025B/s。为满足应用需求,本文首先构建易于快速解码的语音库,根据特定Flash存储器的存储格式,以快速多查找表寻址及命令字预先存储的方式组织并存储在Flash存储器中,以满足语音播放的实时要求。同样,MCU的代码也要优先考虑速度而牺牲诸如模块化、可读性方面的要求。最后,出于实用性考虑,系统中需加入足够的输入缓冲区支持,以满足一次输入多个流字或整句的要求。

  原始语音数据的采集和处理

  本系统共采集了1335种发音,内含1306个流字发音,26个英文字母发音及3个停顿音,语音采集卡AD转换整编11025B/s,分辨率8位,样本值域0~255,静默值为80H。原始语音以WAV文件的格式保存在PC机中。

  图2是“哎”音样本的时域波形。所有的采集样本除具有不同的波形包络外,均具有大体相同的结构,即一个完整的汉字发音均由前后两个静音部分和中间的发音部分组成。静音的采集值绝大多数为80H(一些轻微扰动可视为录音过程中的噪声,但尾音部分要另外处理),因而可将其统一为80H,以提高压缩比。另由图2可见,00H、01H、FFH、FEH这些边缘值的出现概率是很小的,这个特性亦可用于语音的压缩算法中。

  本文根据上述静默值及边缘值的分布特点,提出了一种改进的游程编码用于语音数据的压缩,具体做法是:用00H代表游程压缩起始码,其后是被编码字符,再下一个字节是被编码字符的重复码,如:80 80 80 80 80可以表示为00 80 05。显然,游程长度小于等于3时没有编码的必要,因而不会出现值为00H、01H和02H的重复码。如上所述,在原始语音文件中,00H、01H这些边缘值是基本上不出现的。因为大量出现这些边缘值即意味着语音采集系统的动态范围设置错误。尽管如此,为确保原始语音文件中没有“多余”边缘值,需要将语音文件略做处理,将可能存在的00H和01H都改为02H,显然这样的处理并不会影响语音的实际播放效果。处理后的00H、01H即可作为特殊控制字符使用。图3是本文提出的改进流程压缩编码的流程图。编码前,1335种原始语音样本的大小为14978622字节,压缩后为7767112字节,压缩比超过50%。该语音库已经可以装入容量为8M字节的Flash存储器中。

  3 语音库的存储结构

  本文以8Mbit×8位NAND型Flash存储器K9F6408U0B为例,描述本系统语音库的存储结构。

   语音库的基本内容分为两部分:前端是地址查找表,其后是压缩后的语音数据。地址表中,每4个字节代表一个地址项。GB2312汉字编码字符集中每个汉字在地址表中都有一个对应项,其内容指向该汉字对应读音的语音数据起始地址。GB码字符集中共有94个区,每区94个字符,总计8836个汉字、英文字母和其它符号,其中实际使用了7445个,余下的作为预留区。本系统亦保留了这些预留区,以利于将来的扩充。这样,地址表的大小为94×94×4=35344字节。语音数据区共存储1335年发音,采用流程编码压缩存放,并在每段语音数据结尾添加01H作为结束控制符。

  对不同的Flash存储器,语音库需做一些针对性的处理。对于K9F6408U0B而言,要对其C区进行专门的处理。该芯片中,每个页面(Page)都有A、B、C三个区,其中A、B区各256字节,而C区仅有16字节。本设计中没有用到C区,因而在制作写入Flash的二进制政府间库文件时必须注意对C区进行空白码(FFH)填充。考虑C区填充后,地址表对应的二进制语音库文件大小的计算方法改为:512×69+16=35344,表示当35344字节只占据A区和B区时共需69个页面,多出16字节。这意味着有69个C区需要填充,即写入Flash的地址表的实际大小应该是35344+69×16=36448。相应地,语音数据区需要进行同样的处理。


  在PC上制作写入的Flash的数据文件时,首先将地址表放在最前面,其后将压缩后的语音文件逐一写入,并将每个文件的起始地址转换成对Flash存储器操作的命令字写入地址表相应项中,每写完一个文件要加上01H结束码,并在写入过程中完成对C区的填充。在综合完1335个语音文件、地址查找表、C区填充码及文件结束码之后,得到Flash存储器的二进制映像文件,其大小为8047776字节。写入后,Flash中尚余后333KB可用空间,联合地址表中的预留项,可用于对系统语音库做进一步的扩充。上述语音库的存储结构见图4。

  4 码字转换及高效MCU代码的实现

  本文中的码字转换有两类。一类GB码到语音库起始字节数的转换,用于MCU收到串口输入的GB码后,确定相应读音在地线表中对应项的起始地址。该类码字转换主要依据GB2312标准及语音库地址表的结构进行。本文中,该码制转换的算法为:((GB码高字节-161)×94+(GB)码低字节-161))×4。另一类是将上述地址转换为Flash读取数据的命令字。这类转换与语音库存储结构及所用Flash存储器的读写操作及时序相关。由于在语音库生成时已由PC机将语音数据的起始地址转换为操作命令字并存储到了地址表对应项中,即大部分的计算及时序控制操作在使用PC制作Flash的二进制映像文件时已经完成,因而避免了系统运行中的大量计算,从而保证了语音播放的实时性。计算命令字的方法与具体的Flash存储器型号相关且较为繁琐。限于篇幅,本文不再给出具体的算法。有兴趣的读者可以参阅K9F6408U0B的数据表。
本文中的MCU型号为AT89S52,使用22.1484MHz的晶振。根据AT89S52数据表,每播放一个汉字,所需指令周期数为(1/11025)/(12/22.1184)=167.2。因此设置一个计时器中断,中断值为256-167=89,在每两个中断之间完成如下工作:

  (1) 从缓冲区中取得GB码并将之转换为地址表对应项地址;
  (2) 从地址表对应项中取得对应语音数据区存储地址;
  (3) 取得对应语音数据区数据;
  (4) 完成游程解码并播放。

  此外,由于完成有可能在语音播放过程收以输入字符,因而串口亦应工作于中断方式,串口波特率为9600bps,其优先级高于定时器中断。本系统中,此缓冲区能满足使用都 量多一次输入60个汉字。以上操作均在约168个指令周期中完成,大约相当84条双周期指令。因而在代码编写中,必须把代码效率放在第一位,灵活地运用编程技巧来完成。

  本文给出了一种嵌入式TTS汉语语音系统的实现方案。由于采用了易于解码的改进游程算法、多重查找表及Flash存储器操作命令这了的预先存储技术,使得该方案可以在罗低要求的硬件平台上实现,以AT89S52 MCU为核心的嵌入式TTS系统不同于基于PC的TTS语音系统,该系统体积小、功耗低、成本低廉、适用范围很广。经测试其语音清晰、连贯,可发音字节涵盖GB码所有汉字、26个英文字节,一次可输入多达60个汉字的整句,足以满足大部分应用场合的需要。如以高档MCU或ARM处理器为平台,还可以增加更多的算法,以进一步改进系统性能。

关键字:语音  波形  存储器 引用地址:嵌入式TTS汉语语音系统的设计与实现

上一篇:基于虚拟存储的嵌入式存储系统的设计方法
下一篇:嵌入式操作系统定制通用性研究

推荐阅读最新更新时间:2024-05-02 20:25

泰克示波器波形分类
提到泰克示波器,相信大多数人都知道,那大家对示波器基础知识了解多少呢?今天安泰测试就给大家分享一波干活——波的类型介绍。 您可以把大多数波分成下面几类: 周期信号和非周期信号 重复的信号称为周期信号,一直变化的信号则称为非周期信号。静态照片可以比作周期信号,而动画则相当于非周期信号。 同步信号和异步信号 在两个信号之间存在定时关系时,这些信号称为同步信号。计算机内部的时钟、数据和地址信号都是同步信号。异步信号用来描述之间不存在定时关系的信号。由于触摸计算机键盘上的键这种操作与计算机内部的时钟之间没有时间相关,因此这些操作被视为异步信号。 正弦波 基于多种原因,正弦波是基础波形。它拥有和谐的数学特点,在三角形教学中,
[测试测量]
泰克示波器<font color='red'>波形</font>分类
车内语音识别技术,让汽车活起来
随着CarPlay、Android Auto以及Echo Auto等平台渗透乘用车市场,车内语音识别技术预期将成为主流;但仍有一个答案未知的问题是:市场上有任何语音启动技术已经准备好随机应对车内的关键任务了吗? 在今年1月举行的国际消费性电子展(CES)上,当媒体看到高通(Qualcomm)展示了在其车内Smart Audio平台上的Amazon Alexa语音识别功能,就对未来发展有了一些想象。高通的展示预示,车内虚拟助理将会使得语音成为驾驶人与车辆之间的自然沟通接口。 高通的展示中最令人印象深刻的一幕,是Alexa在高通的某个高层说话时打断他,说:“不对!这不是真的。”欧喔…在展示中发生这种小“突槌”事件在所难免
[汽车电子]
车内<font color='red'>语音</font>识别技术,让汽车活起来
MSP430 定时器输出PWM波形
硬件介绍: MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。它给开发人员提供了较多灵活的选择余地。当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。 MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA有三个模块,CCR0-CCR2;TB含有CCR0-CCR67个模块;其中CCR0模块不能完整的输出PWM波形(只有三种输出模式可用);TA可以输出完整的2路PWM波形;TB可以输出6路完整的PWM波形。 定时器的PWM输出有有8种模式: 输出模式0 输出模式:输出信号
[单片机]
MSP430 定时器输出PWM<font color='red'>波形</font>
存储器和储存有什么不同?
目前最广泛使用的数字储存装置是硬盘(HDD),但它受欢迎的程度正迅速下滑… 数字数据储存正历经强大的成长态势,2016年即已增加到超过10,000艾位元组(Exabyte;EB)或10皆位元组(Zettabyte;ZB)的电子数据。 值得一提的是,在位元的次方单位表中,目前只剩下“佑位元组”(Yottabyte;YB)了。Yotta,是在1991年第19届国际度量衡大会(General Conference on Weights and Measures)决议使用的字首,以免我们很快就用尽了所有的十进位字首。 这个专栏将讨论数据储存技术的发展,并介绍两种主要的现有和替代储存技术:硬盘驱动器(Hard Disk Drive;HDD)
[手机便携]
基于FPGA的空间存储器的纠错系统的设计
       1、引言        阿尔法磁谱仪(Alpha Magnetic Spectrometer,AMS)实验室是丁肇中博士领导的由美、俄、德、法、中等16个国家和地区共300多名科学家参加的大型国际合作项目。它是国际空间站上唯一大型物理实验,是人类第一次在太空中精密地测量高能量带电原子核粒子的实验。其目的是为寻找反物质所组成的宇宙和暗物质的来源以及测量宇宙线的来源。 但是对于AMS实验的空间电子系统,同样会受到高能粒子的袭击,导致存储器的内容发生变化,改写半导体存储器件的逻辑状态,导致存储单元在逻辑‘0’与‘1’之间发生翻转,使存储的关键数据出错,控制程序跑飞等。这对于AMS实验系统来说,是一个不容忽视的问题
[嵌入式]
百度地图推出定制语音包 可AR导航 还能帮车主找充电桩
车东西12月10日消息,今日,百度地图在北京召开面向合作伙伴的大会,会上,百度呼吁更多的合作伙伴和开发者一起研发智能出行新方式。 目前百度依托于百度大脑、百度智能云建立了百度地图全景生态,在打车、物流、金融、旅游、通讯服务方面都能提供帮助。 百度地图事业部总经理李莹表示,百度地图可以提供语音定制系统,用户可以录制自己的导航语音包,百度地图还会提供城市街景AR导航功能。 目前百度已经和多个网约车平台建立了合作关系,百度地图将能够提供更加合适的打车平台和出行路线。 除此之外,百度地图还和部分景区实现了深度结合,用户可以在百度地图上制定旅行攻略,在合作的景区,百度地图还能够进行AR讲解。 会上,百度还成立了百度地图
[汽车电子]
百度地图推出定制<font color='red'>语音</font>包 可AR导航 还能帮车主找充电桩
汽车专用示波器测量汽车可变气门正时波形
在了解本次的正式内容前,我想谈谈为什么做汽修应该去学习示波器的使用,有很多人都有疑问,我用万用表也可以做汽修信号测量,为什么一定要用示波器?示波器是一台很有用的设备,可以极大地提高维修工作中的诊断效率。有些修理厂实际上是有示波器的,但是无奈没有维修人员会用,示波器就一直躺在库房里“睡觉”。但更多的人则是觉得示波器很复杂,害怕买了以后又不会用,白白浪费钱。 有位做汽修的朋友说他以前修车只用万用表,没有办法去检测高压及瞬间变化的信号。学习了示波器后有一次更快速地排除了汽车的点火系统故障,故障原因是火花塞间隙过大。他换完火花塞后,用示波器检测点火次级波形,发现击穿电压明显变低了。示波器帮助他对维修是否有效,有了更明确的判断。 示
[测试测量]
汽车专用示波器测量汽车可变气门正时<font color='red'>波形</font>
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved