Устранение неполадок «Системное свойство mbrola.base не определено. Не будет использовать голоса MBROLA» при преобразовании текста в речь с помощью JSAPI. - PullRequest
2 голосов
/ 20 октября 2010

Я получаю следующую ошибку:

System property "mbrola.base" is undefined.  Will not use MBROLA voices.
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.Locale;

public class HelloWorld
 {

public static void main(String args[]) 
{

try 
{
// Create a synthesizer for English

Synthesizer synth = Central.createSynthesizer(
new SynthesizerModeDesc(Locale.ENGLISH));

// Get it ready to speak

synth.allocate();

synth.resume();

// Speak the “Hello world” string

synth.speakPlainText("Hello", null);

// Wait till speaking is done

synth.waitEngineState(Synthesizer.QUEUE_EMPTY);

// Clean up

synth.deallocate();

} 
catch (Exception e)
 {
e.printStackTrace();
}

}

}

Ответы [ 6 ]

4 голосов
/ 02 декабря 2012

Для тех, кто все еще борется с этим, вот как я заставил его работать на Windows в простом блокноте, без Eclipse.

  1. Я пошел к http://tcts.fpms.ac.be/synthesis/mbrola.html и загрузил 2 пакета под загрузками бинарных голосов: ПК / Windows и ПК / DOS

  2. распакуйте все это и поместите бинарный файл PC / Windows в тот же каталог, что и исполняемый файл PC / DOS mbrola.exe. Пожалуйста, обратите внимание, что mbrola.exe не работал для меня, потому что он 16-битный (пойди разберись!), Но я нашел эту ссылку:

    http://sourceforge.net/projects/freetts/forums/forum/137669/topic/1219083
    у него был zip-файл с двумя двоичными файлами, один из которых 2004 года, который работал на моей 64-битной Windows.

  3. Затем я скачал голоса на сайте mbrola выше в разделе 1 I Мне нужен женский голос, поэтому я схватил нас1 и поместил всю папку в тот же каталог, что и
    Двоичные файлы для ПК / Windows и исполняемый файл для ПК / DOS.

  4. В коде я указал следующее: System.setProperty ("mbrola.base", "C: \ devsrc \ main \ Head-Rev \ src \ java \ freetts-1.2 \ mbrola"); голос = vm.getVoice ( "mbrola_us1");

И я получил свой женский голос. Мне не нужны были флаги компиляции или времени выполнения.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 05 февраля 2014

Для меня:

  1. Я скачал Инструмент Mbrola

  2. Я скачал Базовая папка Mbrola

  3. Загрузил необходимый голос с Получение голосов MBROLA раздел Сайт Mbrola

  4. Разархивировал файл с шага 3 в разархивированный каталог, полученный с шага 2.

  5. Установите свойство "mbrola.base", используя: System.setProperty("mbrola.base", "E:\\xxx\\xxx\\mbrxxx");

0 голосов
/ 31 октября 2016

Я использую Ubuntu Если вы используете Windows, вам потребуются только шаги 1 и 2.

Создана папка с именем mbrola 1. положите к нему скачанную mbrola-базу для моей операционной системы linux 2. положите в эту папку скачанные us1, us2, us3 извлеченные папки 3. Установите mbrola в Ubuntu из командной строки. sudo apt-get istall mbrola

After installation use this commad to check where your files has located
dpkg -L mbrola
  1. Скопировал файл / usr / bin / mbrola в указанную выше папку mbrola
  2. Обновите программу, указав путь к вышеуказанной программе. System.setProperty ("mbrola.base", "/ home / ngs / INCUBATOR / egg-8 / libries / MBROLA / mbrola");

Теперь должно работать

0 голосов
/ 11 июня 2015

Поскольку я использовал репозиторий maven для mbrola вместо его загрузки, мне пришлось переопределить этот файл в моем проекте java: com.sun.speech.freetts -> internal_voices.txt и добавить туда:

# Uncomment to allow MBROLA voices:
de.dfki.lt.freetts.en.us.MbrolaVoiceDirectory
0 голосов
/ 25 января 2015

Работает в системах Windows для установки mbrola.base: - установите переменную среды "MBROLA_HOME" в Windows OS - используйте этот фрагмент кода, чтобы установить свойство mbrola.base

открытый класс FreeTTSVoice {

private static String path = System.getenv("MBROLA_HOME");
//  System.out.println(path);  

public FreeTTSVoice(){
    System.setProperty("mbrola.base", path);
    listAllVoices();
}

public static void listAllVoices() {
    System.out.println("All voices available:");        
    VoiceManager voiceManager = VoiceManager.getInstance();
    Voice[] voices = voiceManager.getVoices();
    for (int i = 0; i < voices.length; i++) {
        System.out.println("    " + voices[i].getName()
                           + " (" + voices[i].getDomain() + " domain)");
    }

}

...

0 голосов
/ 20 октября 2010

Для вашего кода требуется приложение MBROLA, которое находится в системе.Таким образом, вы должны сообщить приложению, что MBROLA находится здесь:

  1. Из конфигурации запуска командной строки или затмения: -Dmbrola.base=/location/to/mbrola ИЛИ
  2. System.setProperty("mbrola.base", Morbola.class.getName()) и поместите JAR-файл mbrola в classpath.

См. Этот вопрос

(Вы можете использовать любое из решений)

...