关于Java使用Sapi.SpVoice语音合成问题

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的代码,一致没找到啊,谁能提供些信息。