1

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

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

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

4

1 回答 1

0

原来这不是真正的编程问题,只是配置问题。我想我需要为 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 声音正常工作。

于 2019-01-04T19:00:44.993 回答