依赖
使用 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("你好!")
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于