FreeTTS 无音频 linux ubuntu - 没有错误

2024-06-29

我正在使用 Java 6 运行 Ubuntu 10.10,无法让 FreeTTS 输出任何音频。我现在已经在 3 台不同的计算机上尝试过,甚至让我的一个朋友在他的 Ubuntu PC 上尝试一下,他也遇到了同样的问题。获得 MBROLA 后,绝对不会显示任何错误,我什至不再收到有关未检测到 MBROLA 声音的警告。等等等等等等..

使用同一台计算机,我运行了虚拟机并启动了 Windows XP,在运行 HelloWorld.jar 和 TTSHelloWorld.jar 时,我实际上能够获得音频,但是当我尝试输入自己的文本时,freetts.jar 仍然保持沉默。

我使用的命令。

java -jar lib/freetts.jar -text 你好

当我按回车键时,它会启动并用于向我提供缺少的 MBROLA 警告消息,但现在它只是坐在那里,直到我按 CTRL-C 停止它。

我不明白我做错了什么,也不明白为什么其他人没有遇到这个问题,当我在每台计算机上遇到这个问题时,它在 Windows 上有些工作。谁能帮我?

Thanks,

John


我不确定你是否已经解决了这个问题,但我遇到了同样的问题(Ubuntu 10.10 / JavaSE6)。经过对 FreeTTS 源代码的一些调查后,我发现了罪魁祸首,即 com.sun.speech.freetts.audio.JavaStreamingAudioPlayer 中的死锁。当打开 Line 并且该 Line 的类型为 org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine(这可能是 Ubuntu 10.10 w JavaSE6 中的默认值)时,会发生此死锁。由于您总是想打开一条线路来输出音频,因此这种死锁总是会发生。

造成这种死锁的原因在于,在 JavaStreamingAudioPlayer 中对 Line 做了一个假设,即所有 LineListener 都将在调用 Line.open() 时或在 Line 之后从同一线程收到 open 类型的 LineEvent 通知。已打开(并且对 Line.open() 的调用可以返回)。 PulseAudioSourceDataLine 的情况并非如此;它首先从 PulseAudio 事件线程调用所有 LineListener,等待它们全部返回,然后从 open 调用返回。由于 JavaStreamingAudioPlayer 强制对 Line.open() 的调用进行同步并处理特定的 LineListener(其任务是查看 Line 是否实际打开),因此会发生死锁。

我选择解决此问题的解决方法是实现一个不存在此问题的 AudioPlayer。我基本上复制了 JavaStreamingAudioPlayer 并更改了第 196 行和第 646 行的同步块(完整源代码供参考:http://www.javadocexamples.com/java_source/com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.java.html http://www.javadocexamples.com/java_source/com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.java.html ).

___: // This is the actual JavaStreamAudioPlayer source, not the fix
195: ...
196:     synchronized (openLock) {
197:         line.open(format, AUDIO_BUFFER_SIZE); // Blocks due to line 646
198:         try {
199:             openLock.wait();
200:         } catch (InterruptedException ie) {
201:             ie.printStackTrace();
202:     }
203: ...

643: ...
644: public void update(LineEvent event) {
645:     if (event.getType().equals(LineEvent.Type.OPEN)) {
646:         synchronized (openLock) { // Blocks due to line 196
647:             openLock.notifyAll();
648:         }
649:     }
650: }
651: ...

我删除了两个同步块,而不是确保两个部分相互排斥,而是使用信号量来表示线路实际上已打开。当然,这并不是真正必要的,因为 PulseAudioSourceDataLine 已经保证在返回时打开,但在另一个平台上测试相同的代码时它更有可能发挥良好的作用。我没有深入研究代码足够长的时间来说明当您同时通过多个线程打开/关闭/打开该行时会发生什么。如果您打算这样做,您可能会考虑对 JavaStreamingAudioPlayer 进行更大的重写;)。

最后,创建新的 AudioPlayer 后,您必须指示 FreeTTS 使用您的实现而不是默认的 JavaStreamingAudioPlayer。这可以通过使用来完成

System.setProperty("com.sun.speech.freetts.voice.defaultAudioPlayer", "classpath.to.your.AudioPlayer");

在代码早期的某个地方。

希望这一切对你有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeTTS 无音频 linux ubuntu - 没有错误 的相关文章

随机推荐

  • 难以理解反引号内反斜杠的非明显使用

    我已经阅读了大量的页面 包括 bash 手册 但仍然发现反斜杠的 非明显 使用令人困惑 If I do echo 它打印一个星号 这是正常的 因为我转义了星号 使其成为字面意思 If I do echo 它打印 这看起来也很正常 第一个反斜
  • JSF:嵌套 ui:repeat 内的值绑定

    我有一个奇怪的问题
  • 在 uiwebview 中使用 javascript 将样式应用于文本范围

    我在 iPhone 上的 UIWebView 中将一些简单样式的文本显示为 html 它基本上是一系列段落 偶尔有强烈或强调的短语 在运行时 我需要将样式应用于文本范围 有一些类似的场景 其中之一是突出显示搜索结果 如果用户搜索了 某事 我
  • 排除以特定字符开头的正则表达式匹配

    我有以下内容 Regex urlRx new Regex https ftp file www A Za z0 9 A Za z0 9 RegexOptions IgnoreCase 这匹配所有 URL 但我想排除那些以字符开头的 URL
  • 使用 glibc,为什么在 I/DHCP 更改 DNS 服务器后我的 gethostbyname 失败?

    如果我们的服务器 在设备上运行 在获取 DHCP 租约之前启动 那么它永远无法使用主机名进行连接 如果发生这种情况 它可以通过 IP 地址查找主机 但不能通过 DNS 查找主机 我最初认为 Curl DNS 缓存有问题 因为curl 连接失
  • 带 Bootstrap 选项卡的 Rails

    我有一个 Rails 4 应用程序 我正在尝试合并 Bootstrap 选项卡 阅读引导文档 它说这样做的一种方法不涉及任何js 我已经尝试了文档中的每种方法 但无法让它们在我的应用程序中工作 我目前的尝试是 ul class nav na
  • bbPress 有 API 吗?

    我正在寻找 bbPress 的 API 我在这里搜索过 但我看到的帖子很旧 那么有没有 bbPress 的 api 如果是 请问如何访问 如果没有 我是否可以通过 Android 应用程序实现用户注册和登录 另外 检查这个存储库 https
  • vim 中随机单词的烦人的红色突出显示

    我在识别 vim 中出现令人讨厌的红色背景的原因时遇到问题 您是否知道为什么 vim 在我打开的文档中突出显示随机单词以及如何将其关闭 您已打开拼写检查 使用将其关闭 set nospell 来源 http www linux com le
  • Pandas.read_excel:访问主目录

    找到解决方案 尝试使用以下命令访问我的主目录时 我遇到了一些意外行为pandas read excel 我想要访问的文件可以在以下位置找到 users isys orsheridanmeth 这是哪里cd 带我去 我想访问的文件是 work
  • C#中解析yaml流时如何保留注释?

    我正在使用 YamlDotNet 来读取和写入 yaml yaml 文件的内容首先加载到 YamlStream 中 并对文档进行处理和修改 文档处理完毕后 内容会写回到文件中 在此过程中 评论不会被保留 在我的项目中保留评论至关重要 例如
  • 未检测到 Django settings.py

    我对 Django 还很陌生 在正确加载我的 settings py 时遇到了一些困难 我收到以下错误 admin 配置不正确 将 django contrib admin 放入 INSTALLED APPS 设置中 以便 使用管理应用程序
  • 真的很困惑 Jupyter Notebook、Lab、扩展和 ipywidgets

    我想创建一个交互式 JupyterLab Notebook 应用程序 并且需要创建一系列自定义小部件 于是我开始研究这个问题 越看越困惑 为了简单起见 我会问一些简单的问题 在 Jupyter Notebooks 上使用小部件的最常见方法之
  • 为什么php邮件功能在xampp中不起作用

    我在使用 xampp 时遇到问题 我想检查邮件表格 但看不到任何结果 我像本网站中的教程一样配置 Mercury 32 http system66 blogspot com 2010 01 how to send mail from loc
  • Java:简单 XML 序列化 (simple-xml-2.6.6.jar) 给出包含 的 XML 文件错误

    我正在使用简单 XML 序列化 simple xml 2 6 6 jar here http simple sourceforge net 将我的 XML 响应从 webservice 转换为 POJO 类 XML 是
  • 有没有像pair这样的STL数据结构可以提供三个项目(类型)而不是两个?

    问题一 我正在使用 C 11 并且正在学习 我意识到我可以用两对来做到这一点 pair
  • 需要将数据导入 Quickbooks [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个现有的 Java 或 JVM 支持的语言 库 该库将创建 IIF 文件以导入到 Quick
  • CSS 效果渲染具有“橡皮图章”效果的字体

    CSS中有没有有效的方法来渲染字体 使其看起来像橡皮图章 好像橡皮印章上的墨水覆盖在印刷材料上 更好的是将相同的效果应用于边框 就好像边框是橡皮图章的一部分一样 像这样 这与您正在寻找的内容很接近 它使用了覆盖伪元素以及mix blend
  • jQuery 相当于 YUI StyleSheet Utility?

    jQuery 或其插件之一 是否具有与YUI 样式表实用程序 http developer yahoo com yui 3 stylesheet StyleSheet Utility 能够从头开始创建新的样式表 以及修改作为来自同一域的元素
  • 设置第二个 TFDPhysFBDriverLink - 可能且必要吗?

    我的应用程序有设计时间TFDConnection and TFDPhysFBDriverLink作为源连接 这可能会也可能不会在 Firebird 嵌入模式下打开 如果是这样 FDPhysFBDriverLink VendorLib fbe
  • FreeTTS 无音频 linux ubuntu - 没有错误

    我正在使用 Java 6 运行 Ubuntu 10 10 无法让 FreeTTS 输出任何音频 我现在已经在 3 台不同的计算机上尝试过 甚至让我的一个朋友在他的 Ubuntu PC 上尝试一下 他也遇到了同样的问题 获得 MBROLA 后