java 文字转语音_java 实现文字转语音 -仅限windows系统

1. 下载资源jacob

将.dll文件添加到jre下的bin文件夹下

64位操作系统选择jacob-1.18-x64.dll文件

32位操作系统选择jacob-1.18-x86.dll

链接:https://pan.baidu.com/s/1bppqj07 密码:hdcv

MSTTSSpeech.java

import com.jacob.activeX.ActiveXComponent;

import com.jacob.com.ComThread;

import com.jacob.com.Dispatch;

import com.jacob.com.Variant;

/**

* 调用MSTTS将字符串转换成语音信息

* 调用windows speech API(SAPI)

* @author suyunlong

*

*/

public class MSTTSSpeech

{

private int volume=100;// 声音:1到100

private int rate=0;// 频率:-10到10

private int voice=0;// 语音库序号

private int audio=0;// 输出设备序号

private ActiveXComponent ax=null;

private Dispatch spVoice=null;// 声音对象

private Dispatch spFileStream=null;// 音频文件输出流对象,在读取或保存音频文件时使用

private Dispatch spAudioFormat=null;// 音频格式对象

private Dispatch spMMAudioOut=null;// 音频输出对象

private int formatType=22;// 音频的输出格式,默认为:SAFT22kHz16BitMono

public MSTTSSpeech()

{

ComThread.InitSTA();

if(ax==null)

{

ax=new ActiveXComponent("Sapi.SpVoice");

spVoice=ax.getObject();

}

}

/**

* 改变语音库

* @param voice 语音库序号

*/

public void changeVoice(int voice)

{

if(this.voice != voice)

{

this.voice=voice;

}

try

{

Dispatch voiceItems=Dispatch.call(spVoice,"GetVoices").toDispatch();

int count=Integer.valueOf(Dispatch.call(voiceItems,"Count").toString());

if(count>0)

{

Dispatch voiceItem=Dispatch.call(voiceItems,"Item",new Variant(this.voice)).toDispatch();

Dispatch.put(spVoice,"Voice",voiceItem);

}

}

catch(Exception e)

{

System.out.println(e.getMessage());

e.printStackTrace();

}

}

/**

* 改变音频输出设备

* @param audio 音频设备序号

*/

public void changeAudioOutput(int audio)

{

if(this.audio != audio)

{

this.audio=audio;

}

try

{

Dispatch audioOutputs=Dispatch.call(spVoice,"GetAudioOutputs").toDispatch();

int count=Integer.valueOf(Dispatch.call(audioOutputs,"Count").toString());

if(count > 0)

{

Dispatch audioOutput=Dispatch.call(audioOutputs,"Item",new Variant(this.audio)).toDispatch();

Dispatch.put(spVoice,"AudioOutput",audioOutput);

}

}

catch(Exception e)

{

System.out.println(e.getMessage());

e.printStackTrace();

}

}

/**

* 播放语音

* @param text 要转换成语音的文本

*/

public void speak(String text)

{

this.speak(text,0);

}

/**

* 停止播放语音

*/

public void stop()</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值