FreeTTS 语音无输出 Raspberry PI 蓝牙音箱

FreeTTS voice no output Raspberry PI bluetooth speaker

在 Raspberry PI 上 运行 有一个简单的程序。当连接到带扬声器的显示器时,我可以通过 HDMI 扬声器听到声音。但是,我希望通过蓝牙扬声器输出声音。当我播放一些音频文件时,连接的蓝牙扬声器会播放,但是当我 运行 FreeTTS 通过 HDMI 音频或无头且仅连接到蓝牙扬声器时对声音输出进行编程时,根本没有输出。我在想也许它正在尝试通过一些默认音频播放,因为它通过 HDMI 扬声器播放,即使在音频菜单中选择了蓝牙...... 这是我开始使用的基本代码。

Voice voice;
VoiceManager voiceManager = VoiceManager.getInstance();
voice = voiceManager.getVoice(voiceName);
voice.allocate();
voice.speak(text);

我一直在尝试添加,但到目前为止没有任何效果。我在想我可能需要连接某种 AudioPlayer,但我无法让默认的流媒体播放器正常工作。我需要立即播放音频。有什么想法吗?

原来这不是真正的编程问题,只是配置问题。我想我需要为 Java 设置 sound.properties 才能使用 ALSA 声音。设置完成后,FreeTTS 会按预期输出正确的音频(在我的例子中是蓝牙扬声器)。

javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider

只需将其放入您的 sound.properties 文件(jdk/jvm 文件夹中的某处:find / -name sound.properties)。应该已经在现有文件中删除了,如果不是就把它扔在那里。

由于我使用的是蓝牙并且需要进行一些混音,所以我最终也开始使用 pulseaudio,这导致了其他困难,但这仍然适用于在这种情况下让 Java 声音正常工作。