我正在考虑建立一个文本到语音翻译,以使我们的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() />因为这样,它运行良好,我可以在释放后(甚至在分配之后)转储语音对象。因此,您可以知道依赖项位于正确的位置,并且ColdFusion正在正确地实例化所有内容。但是,一旦我取消了对call ()的调用,测试脚本就会挂起这个方法。
迹象表明,某些服务器配置问题是罪魁祸首,但对于我的生活,我想不出它会是什么。(我们使用的是ColdFusion 8.01,按by。)如果有人能进一步了解为什么FreeTTS会这样做,我会非常感激的。
更新:这似乎是一个更普遍的问题。ColdFusion的JRUN日志显示了服务器开始挂起时引发的以下错误:
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强制退出。
发布于 2011-09-14 05:33:10
有声卡吗?尝试(从同一篇文章中从射线)将文件写入磁盘。
https://stackoverflow.com/questions/3356448
复制相似问题