前两天用Java重构一个取号机业务的时候遇到需要调用windows自带的语音模块,算是记录下吧!
常规操作
1.首先在网上下载jacob的jar包,和对应的dll文件,(这里dll文件是区分32位和64位系统的).
2.将下载的jar包引入自己的工程文件中.
3.将dll文件放在jdk的path目录下面,通过System.getProperty("java.library.path");可以看到path路径,或者直接放到jdk/bin、jre/bin、system32/system64下面都放一份,总能找得到,版本要记得对应好。
下面就是代码了
public class Test {
public static ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");
public static Dispatch sapo=sap.getObject();
public static void main(String[] args) {
for(int i=0;i<3;i++){
String str ="测试声音是否正常"+i;
readText(str);
}
}
public static void readText(String queue) {
try {
//声音大小
sap.setProperty("Volume", new Variant(100));
//语速
sap.setProperty("Rate",new Variant(-2));
//发声
Dispatch.call(sapo,"Speak",queue);
} catch (Exception e) {
System.out.println(e.getMessage());
}finally{
if(sap==null){
sap = new ActiveXComponent("Sapi.SpVoice");
}
if(sapo==null){
sapo = sap.getObject();
}
}
}
}
这样一个简单的demo就搞定了.
特别注意的是第三点,一定要放对版本,不然凉凉...
windows自带的tts调用还是挺方便的,就是声音太死板,没有情绪.但是考虑到免费等原因还是用的挺多的.