依赖
使用 jacob-1.19.zip 实现对 windows 组件的调用,亲测支持 win10 和 win7
代码
public static void main(String[] args) {
ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");
Dispatch sapo = sap.getObject();
try {
// 音量 0-100
sap.setProperty("Volume", new Variant(100));
// 语音朗读速度 -10 到 +10
sap.setProperty("Rate", new Variant(0));
// 执行朗读
Dispatch.call(sapo, "Speak", new Variant("你好!"));
}catch (Exception e) {
e.printStackTrace();
}finally {
sapo.safeRelease();
sap.safeRelease();
}
}
注意
需要将 jacob-1.19-x**.dll 放到 jdk 和 jre 的 bin 目录中,并且必须安装 vc++ 2005
其他方式
PowerShell 脚本可以直接调用 windows 的组件实现文本的朗读,那么我们也可以使用 Java 调用 PowerShell 脚本,从而实现语音播报。
Java 调用 PowerShell 在 github 上个有个项目 jPowerShell,使用它可以很轻松的完成对 PowerShell 的调用,但是这种方式速度超级慢,具体为什么这么慢我没有深究,不推荐采用。
# PowerShell代码
# 添加 System.speech.dll 引用
Add-Type -AssemblyName System.speech
# 创建 SpeechSynthesizer 对象
$syn=New-Object System.Speech.Synthesis.SpeechSynthesizer
$syn.Speak("你好!")
#设置朗读的语速
$syn.Rate=-5
$syn.Speak("你好!")
#设置朗读的音量
$syn.Volume=80
$syn.Speak("你好!")
#将文本转换成音频
$syn.SetOutputToWaveFile("d:a.wav")
$syn.Speak("你好!")
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于