穆牧 2014-11-17 08:38 采纳率: 0%
浏览 7933

关于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系统设置的默认语音库,想要换语音库还要进控制面板-语音进行语音库选择。求如何实现在代码中调用不同语音库进行朗读。

或者提供能完成以上功能的其他方式的源码也可以。

  • 写回答

6条回答 默认 最新

  • qq948216248 2015-04-27 07:53
    关注

    你好,我的机器运行这个会报错。Exception in thread "main" com.jacob.com.ComFailException: Can't get object clsid from progid;
    请问你知道哪里出错了吗?求解答,谢谢了

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?