freetts程序示例:报时程序和伪人机对话

阅读更多
0.概述
    语音合成,是将人类语音用人工的方式所产生。若是将电脑系统用在语音合成上,则称为语音合成器,而语音合成器可以用软/硬件所实现。文字转语音(text-to-speech,TTS)系统则是将一般语言的文字转换为语音。
    java speech api(jsapi)提供了2种技术的规范:语音识别(声音到文字)、语音合成(文字到声音)。
    freetts是一个jsapi的实现,但只实现了语音合成功能。
    freetts有一些内建语音,比如"kevin16"。
    如果需要语音识别功能,可以考虑 Sphinx-4

1.下载安装freetts
    去官网下载即可,本文写作时最新版是1.2.2,不过是2009更新的,最近都好久没有更新了。
    去下载freetts-1.2.2-bin.zip即可。下载下来lib目录下有许多jar包,都是需要的,把他们加入classpath就能用了。还有一个jsapi.jar需要双击jsapi.exe来获得。
    需要jar包如下
cmudict04.jar
cmulex.jar
cmutimelex.jar
cmu_time_awb.jar
cmu_us_kal.jar
en_us.jar
freetts-jsapi10.jar
freetts.jar
jsapi.jar
mbrola.jar


关于speech.properties的安装,我试了但是不行,老报错。不过没关系,我们可以绕过这个问题,直接改用freetts-jsapi10.jar里面的api就可以。
      FreeTTSEngineCentral central = new FreeTTSEngineCentral();
      EngineList list = central.createEngineList(desc); 

详情参考附件里的程序代码。
    freetts目前貌似只支持朗读英语,不支持朗读中文。如果要朗读中文的话,貌似可以考虑 Ekho(余音)。
    使用freetts朗读一段英语很简单,在初始化完Synthesizer以后,调用下面这个API即可:
Synthesizer.speakPlainText(String, SpeakableListener)


2.报时程序

执行JSAPIClock,可以用英语报出当前时间,效果如图
freetts程序示例:报时程序和伪人机对话_第1张图片
类图如下
freetts程序示例:报时程序和伪人机对话_第2张图片

3.伪人机对话

从 http://fivedots.coe.psu.ac.th/~ad/jg/ch105/index.html下载来的,他的网站上还可下载pdf文件,里面详细介绍了类的设计。
执行ProfBob,你输入一句话或者单词,教授会用英语应答你,效果如图
freetts程序示例:报时程序和伪人机对话_第3张图片
类图如下
freetts程序示例:报时程序和伪人机对话_第4张图片

4.附件可以下载我整理好的可运行的2个示例程序。
测试通过环境
win7 32bit
jdk 1.7.0_60 32bit
  • freetts程序示例:报时程序和伪人机对话_第5张图片
  • 大小: 33.3 KB
  • freetts-sample.7z (8.8 MB)
  • 下载次数: 110
  • freetts程序示例:报时程序和伪人机对话_第6张图片
  • 大小: 58.4 KB
  • freetts程序示例:报时程序和伪人机对话_第7张图片
  • 大小: 4.1 KB
  • freetts程序示例:报时程序和伪人机对话_第8张图片
  • 大小: 10 KB
  • 查看图片附件

你可能感兴趣的:(tts)