ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");
Dispatch sapo = sap.getObject();
try {
sap.setProperty("Volume", new Variant(volume));
sap.setProperty("Rate", new Variant(rate));
Variant defalutVoice = sap.getProperty("Voice");
Dispatch dispdefaultVoice = defalutVoice.toDispatch();
Variant allVoices = Dispatch.call(sapo,"GetVoices");
Dispatch dispVoices = allVoices.toDispatch();
Dispatch setvoice = Dispatch.call(dispVoices, "Item", new Variant(1)). toDispatch();
ActiveXComponent voiceActivex = new ActiveXComponent(dispdefaultVoice);
ActiveXComponent setvoiceActivex = new ActiveXComponent(setvoice);
Variant item = Dispatch.call(setvoiceActivex, "GetDescription");
Dispatch.call(sapo, "Speak", new Variant(message));
} catch (Exception e) {
e.printStackTrace();
} finally {
sapo.safeRelease();
sap.safeRelease();
}
使用以上代码可以实现将文字转换成语音朗读,但只是调用windows系统设置的默认语音库,想要换语音库还要进控制面板-语音进行语音库选择。求如何实现在代码中调用不同语音库进行朗读。
或者提供能完成以上功能的其他方式的源码也可以。
你好,我的机器运行这个会报错。Exception in thread "main" com.jacob.com.ComFailException: Can't get object clsid from progid;
请问你知道哪里出错了吗?求解答,谢谢了
你好,请问以上代码直接写在main方法里运行就有效果吗?
new Variant(message)中的message是朗读的文本吗?
你好,请问以上代码直接写在main方法里运行就有效果吗?
new Variant(message)中的message是朗读的文本吗?
你好,请问这个可以可以直接在64位的windows上运行吗?我要实现一个java语音播报功能,但是用jboc总是出错。可以给一份源码我吗?谢了
楼主你好,我的是win7笔记本,在自己电脑上,一切都正常,把同样的dll文件拷到台式机上,就是没声音,是怎么回事啊
我在win7 64位上运行成功了,需要装微软SAPI的语音引擎(Microsoft Speech API 好像默认就有)。楼下两位的情况感觉是引擎没装上或者是jacob.dll没放好吧,确认放到system32或WOW64下了么?
另外我在找用JNA调用sapi的代码,一致没找到啊,谁能提供些信息。