今年,我参加学校举办的的一个嵌入式比赛,我的作品中需要用到中文文本语音转换的功能,由于是使用linux系统,所以不能使用MS提供的语音开发包,虽然linux上也有很多TTS功能的软件,但都只支持英语文本的转换,不支持中文的转换,当然支持中文语音转换的也有,但都需要money的,而且我们对语音的要求不高,所以就由我自己来实现。
我实现的中文TTS现有功能如下:
1):基于中文二级字库,语音库的语音元素使用的是MS的语音库语音元素。
2):合成语音文件的格式为 WAV, 所以合成语音可以直接在声卡上播放。
3):提供简单的函数调用接口,支持程序开发
附:
我实现的中文TTS 需改进的N点:
1):没有自己的语音播放功能(我是FORK 播放器进程来读语音文件的)
需要在TTS中增加播放功能模块,才能算是完整的TTS系统,
网上有很多LINUX上播放器的代码,由于时间关系我暂时没做,但以后我一定会加上去的,
我也希望能有朋友能帮我完成这功能
2):语音库文件太大(没压缩前有40M左右,使用普通的压缩程序压缩后只有2M多点)
我的发音元素是采用WAV格式的,所以有点大, 解决方法我暂时还没想到,我打算对压缩文件进行操作,但不知道
行不行,自己没把握。
3):提供的函数功能太简单
3.1): 现在只提供了将GBK/GB2312编码 的中文文本转换, 如果程序使用的编码是其它格式的话,还需先自己转换
成GBK/GB2312的编码 才能使用我提供的函数,我想在中文TTS中封装编码转换函数,这样能使应用程序更方便
的使用。
3.2): 其他很多功能的实现:
太多功能需要来实现,写都写不来了。。比如说读数字的处理等等,太多了,所以暂时空着
4):读音效果
我想这点应该是评价一个TTS系统的最关键的因素,也是我自己认为最难的一点,我想这可能超出了我的知识范
围,我的头脑中只存在着编程逻辑,对其他的知道得甚少,我想我自己得突破这点。了解其它学科的知识。
现在我只能说一句, 现在的读音效果超差,一听就知道是机器在读,没有一点人情味。
5):不支持中英文混读
现在只能读中文,英文是一个一个字母的读,虽然有很多关于英语转换的TTS软件是开源的,但要完成这功能还是
需要一定的工作量的,想想如果让我一个人来做,就头晕,天哪,要看N多的代码.......
6):多音字的处理
我想这可能要用到中文分词了....
文章导读:
中文TTS 的简单实现(基于linux)之 实现原理:
http://blog.csdn.net/dedodong/archive/2006/07/16/927041.aspx[/url]
中文TTS 的简单实现(基于linux)之 语音库的实现
[url=http://blog.csdn.net/dedodong/archive/2006/08/22/1105742.aspx]http://blog.csdn.net/dedodong/archive/2006/08/22/1105742.aspx
中文TTS 的简单实现(基于linux)之 实现语音合成
http://blog.csdn.net/dedodong/archive/2006/08/22/1105879.aspx
中文TTS 的简单实现(基于linux)之 后记
http://blog.csdn.net/dedodong/archive/2006/08/24/1109908.aspx