穆牧 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;
    请问你知道哪里出错了吗?求解答,谢谢了

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?