- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
综合课程设计报告
题 目 文档自动读播器
姓 名
学 号
院 (系) 工程与设计学院
专业、年级
指导教师
2015年 月 日
【 摘 要 】
目前大多数的阅读器只能使人们从视觉方面获得信息因此现有的阅读器不能足盲人这个群体的需求。将语音合成技术应用到阅读器当中, 使人们从视觉获取信息内容转换到听觉, 正是解决这一问题。文章介绍了一个汉字语音库的实现, 并且制定了基于这个语音库的由汉字机内码到汉字读音的访问方法 。
【关键词】汉字语音库 ; 汉字内码
一、引言
文本语音转换是将文字形式的信息转换成自然语音的一项技术,在人机语音交流文字??息处理领域有着广泛的应用。本设计就是利用计算机word文档中给定的汉字文本信息转换成汉语语音。在计算机中汉字的机内码是唯一的,而由汉字输入码到汉字机内码的转换可以通过查阅输人码对照表实现,由此联想到可以在得到汉字的机内码后通过查阅某种表格经过某种转换得到该汉字的声音。
二、设计思想
实现汉语转换系统主要完成两项工作:第一,建立一个语音库, 记录普通话中所有汉字的读音; 第二, 建立汉字机内码到汉字读音的访问方法, 实现由输入的汉字机内码得到该汉字的读音。具体而言, 首先将所有汉字的声音文件录好, 分别取对应的文字编码名字。根据word文档内的汉字进行编码转换,根据对应编码播放对应的音频文件。从而实现了汉字到语音的实现。
三、语音库的实现。
在普通话中实际存在的发音有1333种,常用汉字及一级汉字的读音有1085种,我们要将这1085个语音分别录制成1085个独立的WAV文件,将每一个读音文件取名为对应的区位码(如“阿”的区位码为1601则将文件取名为1601)。将全部文件存放在工程文件夹下面,方面调用。
四、汉字读音的访问方法的实现。
所谓编码, 是以固定的顺序排列字符, 并以此作为记录、存储、传递、交换的统一内部特征。一个汉字有ASCII码、区位码等与之对应。我们先将文本中的每一个字用代码:byte[] bytes = (String.valueOf(cn)).getBytes();转换成字节储存在字节数组里面,判断是英文字符还是汉字字符,中文字符要两个字节储存,所以每一个汉字都是由“bytes[0]”和“bytes[1]”组成。每个汉字在GB2312中都能用区位码表示,区位码用4位数字表示前两位从01到94称区码,后两位从01到94称位码。如“刘”的区位码是3385,其意为区码33和位码85。将“刘”用字节存储就是bytes[0]=33-96=-63,bytes[1]=85-96=-11。转换成ASCII码就是:ascii = (256 *(256+ bytes[0])+(256+ bytes[1])) -256 * 256=-15883。程序如下:
byte[] bytes = (String.valueOf(cn)).getBytes();
if (bytes == null || bytes.length 2 || bytes.length = 0) { //错误
return 0;
}
if (bytes.length == 1) { //英文字符
return Integer.parseInt(bytes[0]+);
}
if (bytes.length == 2) { //中文字符
int hightByte = 256 + bytes[0];
int lowByte = 256 + bytes[1];
int ascii = (256 * hightByte + lowByte) - 256 * 256;
return ascii;
}
在取得ASCII编码后,因为本程序只能读出一级汉字的读音,而且因为文本文件是有标点符号的,也可能存在字母(A、B..)、数
文档评论(0)