在Raspberry PI上运行一个简单的程序。连接到带扬声器的显示器时,我可以通过HDMI扬声器获得声音。但是,我希望声音通过蓝牙扬声器输出。当我播放一些音频文件时,连接的蓝牙扬声器会播放,但是当我运行FreeTTS程序时,声音将通过HDMI音频输出,或者无头且仅连接到蓝牙扬声器,则根本没有输出。我在想也许它正在尝试播放一些默认音频,因为即使在音频菜单中选择了蓝牙,它也可以通过HDMI扬声器播放... 这是我开始的基本代码。
Voice voice;
VoiceManager voiceManager = VoiceManager.getInstance();
voice = voiceManager.getVoice(voiceName);
voice.allocate();
voice.speak(text);
我一直在尝试添加,但是到目前为止没有任何效果。我当时以为可能需要连接某种AudioPlayer,但无法使用默认的流媒体播放器。我需要立即播放音频。有什么想法吗?
答案 0 :(得分: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声音正常工作。