java的文档读播器实现精选.doc

综合课程设计报告 题 目 文档自动读播器 姓 名 学 号 院 (系) 工程与设计学院 专业、年级 指导教师 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; } -20319或者ascii -10247,则说明该文字为二级汉字即非生活常用

文档评论(0)

1亿VIP精品文档

相关文档