gpt4 book ai didi

java - FreeTTS,Java,Linux: “LINE UNAVAILABLE: Format is …”的解决方法

转载 作者:行者123 更新时间:2023-12-03 01:03:59 24 4
gpt4 key购买 nike

当我运行FreeTTS示例时,出现此错误:

LINE UNAVAILABLE: Format is pcm_signed 16000.0 Hz 16 bits 1 channel big endian

在这篇文章中, Freetts problem in Java
有人声称这是已知的Linux / Java声音错误,并且有解决方法,
链接到 http://forums.sun.com/thread.jspa?threadID=5189363

但是,自从Oracle修改了该链接以来,该链接不再起作用。
Archive.org似乎没有存档此页面。

有人有针对FreeTTS的解决方法/补丁吗?

谢谢,
恩德拉

最佳答案

Linux的ALSA是一种大型的复杂API。 OpenJDK和Sun的JDK似乎有不同的用法。大多数现代Linux发行版还使用PulseAudio,该软件可对ALSA进行虚拟化,以便所有音频通过PulseAudio进行软件混合,然后再进入ALSA进行播放。

当没有人访问声卡,而Java是唯一的用户时,它趋向于工作。但是,当其他东西打开声卡时,Java应用程序会因错误和“javax.sound.sampled.LineUnavailableException:Audio Device Unavailable”而迅速中断。

一种可能的解决方法是使用AudioSystem.getMixerInfo()枚举系统中的所有混合器,然后尝试为所需的混合器打开带有AudioSystem.getSourceDataLine(format, mixerInfo)的行。有些将比另一些更好。特别是如果存在,“Java声音音频引擎”和“默认[default]”混合器会起作用。

但是,如果您不想修改FreeTTS源代码,唯一的解决方案是安装Pulse-java。这注册了一个特殊的PulseAudio声音提供程序,该提供程序绕过了ALSA虚拟化并直接进入PulseAudio。 Ubuntu将其安装为OpenJDK软件包的一部分。

有人应该真正修补Java声音,以便以更友好的方式与ALSA一起播放。对于一种ALSA,设备名称应以plug:开头,以使ALSA能够即时转换声音格式和采样率。并且还应遵循safe ALSA subset的其他规则。

关于java - FreeTTS,Java,Linux: “LINE UNAVAILABLE: Format is …”的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5035826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com