FreeTTS висит в ColdFusion 8 / Java - PullRequest
2 голосов
/ 28 июля 2010

Я пытаюсь настроить интерпретатор преобразования текста в речь, чтобы сделать наши задачи CAPTCHA совместимыми с ADA. Мы магазин ColdFusion, и Рэй Кэмден уже сделал доказательство концепции этого прошлого года. Я использовал его сообщение в блоге здесь - http://www.coldfusionjedi.com/index.cfm/2009/5/29/Generating-Speech-with-ColdFusion-and-Java - в качестве ресурса.

Все там прекрасно работает ... кроме той части, где должен работать FreeTTS. У меня есть следующий код:

<cfset jardir = expandPath("freetts-1.2.2-bin/freetts-1.2/lib") />
<cfset jars = [] />
<cfdirectory name="jarList" directory="#jardir#" />
<cfloop query="jarList">
    <cfset ArrayAppend(jars, jardir & "/" & name) />
</cfloop>

<cfset loader = createObject("component", "javaloader.JavaLoader").init(jars) />

<cfset voiceManager = loader.create("com.sun.speech.freetts.VoiceManager") />
<cfset vm = voiceManager.getInstance() />
<cfset voice = vm.getVoice("kevin16") />

<cfset voice.allocate() />
<!--- <cfset voice.speak("Hi.") /> --->
<cfset voice.deallocate() />

Как так, он работает нормально, и я могу cfdump голосовой объект после освобождения (или даже после выделения). Итак, из этого вы знаете, что зависимости находятся в нужном месте, и ColdFusion правильно создает все экземпляры. Но как только я раскомментирую вызов метода speak (), тестовый скрипт будет зависать от этого метода.

Знаки указывают на то, что виновником здесь является какая-то проблема с конфигурацией сервера, но, судя по всему, я не представляю, что это будет. (Кстати, мы используем ColdFusion 8.01.) Если бы кто-нибудь мог дать дополнительное представление о том, почему FreeTTS будет так плохо себя вести, я был бы очень признателен.

Обновление: Похоже, это более общая проблема Java. Журнал JRF ColdFusion показывает следующую ошибку, когда сервер начинает зависать:

Exception in thread "Thread-667" java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, big-endian is supported.

Далее, если я попытаюсь запустить FreeTTSHelloWorld.jar из коробки из командной строки (java -jar bin/FreeTTSHelloWorld.jar), Java зависнет, и нам придется принудительно завершить работу с помощью ^ C.

1 Ответ

0 голосов
/ 14 сентября 2011

У вас есть звуковая карта?Попробуйте (из того же поста от ray) записать файл на диск.

...