【问题标题】:How to add a new voice to MBROLA - FreeTTS如何向 MBROLA 添加新声音 - FreeTTS
【发布时间】:2015-01-14 08:31:44
【问题描述】:

我花了几天时间尝试在一个使用 MBROLA 和 FreeTTS 的项目中添加 us1、us2 和 us3 不同的声音。我在 Windows(64 位)上使用 Eclipse

我已阅读所有这些消息:

How to change voice in FreeTTS - Java

freetts - text to speech setting mbrola voice com.sun.speech.freetts.ProcessException: Processing Utterance:

MBROLA voices with FreeTTS - Windows

FreeTTS mbrola not able to find path

How to change voice in FreeTTS - Java

还有这个

http://sourceforge.net/p/freetts/discussion/137669/thread/848a09ab

这些是我已经完成的步骤:

1.- 首先我阅读了 Freetts 文档http://freetts.sourceforge.net/docs/index.php#download_and_install

2.- 我已经下载了

freetts-1.2.2-src.zip and freetts-1.2.2-bin.zip

3.- 我创建了新的 Eclipse 项目并添加了

freetts-1.2.2-src\freetts-1.2.2\demo\freetts\HelloWorld\FreeTTSHelloWorld.java

4.- 导入jar

freetts-1.2.2-bin\freetts-1.2\lib\freetts.jar

运行时,在控制台中我得到

All voices available:
System property "mbrola.base" is undefined.  Will not use MBROLA voices.
    alan (time domain)
    kevin (general domain)
    kevin16 (general domain)

Using voice: kevin16
System property "mbrola.base" is undefined.  Will not use MBROLA voices.

然后我下载了 MBROLA PC/DOS 二进制文件

mbr301d.zip 

来自http://tcts.fpms.ac.be/synthesis/mbrola.html

我已经解压到了

C:\Users\Usuario\Downloads\mbr301d

并添加了 us1、us2 和 us3 声音。文件夹结构为:

mbr302a (folder)
us1 (folder)
us2 (folder)
us3 (folder)
mbrola.exe
readme.txt

现在我设置 mbrola.base

System.setProperty("mbrola.base", "C:\\Users\\Usuario\\Downloads\\mbr301d");

当我再次运行时:

All voices available:
    alan (time domain)
    kevin (general domain)
    kevin16 (general domain)
    mbrola_us1 (general domain)
    mbrola_us2 (general domain)
    mbrola_us3 (general domain)

Using voice: mbrola_us1 

一切都与这些声音完美融合。但我需要与西班牙的声音合作。然后我从 MBROLA 网站下载

es1: Spanish Male (2.1Mb)    Alistair Conkie
es2: Spanish Male (5.1Mb)    TCC Communications Corp.
es3: Spanish Female (1.9Mb)    Universidad Carlos III de Madrid

并在我的 MBROLA 文件夹中解压缩

mbr302a (folder)
us1 (folder)
us2 (folder)
us3 (folder)
es1 (folder)
es2 (folder)
es3 (folder)
mbrola.exe
readme.txt

但是当我再次运行时,没有找到。我得到了和以前一样的声音。

有没有人运行 mbrola 的声音与 us1、us2 和 us3 不同?我需要按照哪些步骤来配置新声音?

【问题讨论】:

    标签: java freetts mbrola


    【解决方案1】:

    我现在也在尝试使用 mbrola 语音,并尝试添加一些德语和日语语音,但也没有用。经过一段时间的搜索,我想我找到了问题所在。在 lib 文件夹(包含 freetts.jar 的文件夹)中还有一个 mbrola.jar 文件。在 MbrolaVoiceDirectory.class 中,它注册了所有 mbrola 语音,其中仅注册了 us1、us2 和 us3。现在我正在尝试编辑这个文件,再次编译它,然后用新文件替换 mbrola.jar。我会告诉你它是否有效。

    编辑:我认为它工作了一半^^我现在可以加载德语或日语或任何其他声音,但不知何故我真的不能让它说些什么。也许是因为我正在用相同的英文文本尝试不同的声音。 以下是我使用其他声音所做的快速列表:

    1. 反编译lib文件夹中的mbrola.jar

    2. 编辑 de.dfki.lt.freetts.en.us 包中的 MbrolaVoiceDirectory.java 文件。我将代码更改为:http://pastebin.com/aUxw3FDv 这会自动搜索语音文件夹,并且它应该始终适用于每种语言。只需将带有语言标识符的文件夹(例如“us”或“de”或“es”)放在 mbola.base 文件夹中,然后放一个数字

    3. 然后我将它重新编译为一个不可运行的 jar,打开 jar(使用 WinRaR 或类似的东西)并将其中的 META-INF 文件夹替换为原始 mbrola jar 文件的 META-INF 文件夹。

    这是加载声音的 jar 文件:https://www.dropbox.com/s/i51mazz1wv39pn2/mbrola.jar?dl=0

    我希望它对你有用。

    莫里茨

    【讨论】:

      猜你喜欢
      • 2014-12-01
      • 1970-01-01
      • 2011-01-30
      • 2013-12-17
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多