jacob 详解 语音_基于jacob调用windows语音模块的简单demo

本文介绍了如何使用Jacob库在Java中调用Windows的语音模块。通过引入Jacob的jar包和dll文件,将dll放置到系统路径,然后创建ActiveXComponent并设置声音属性,实现文字转语音的功能。虽然声音较为机械,但因其免费而被广泛应用。
摘要由CSDN通过智能技术生成

前两天用Java重构一个取号机业务的时候遇到需要调用windows自带的语音模块,算是记录下吧!

常规操作

1.首先在网上下载jacob的jar包,和对应的dll文件,(这里dll文件是区分32位和64位系统的).

2.将下载的jar包引入自己的工程文件中.

3.将dll文件放在jdk的path目录下面,通过System.getProperty("java.library.path");可以看到path路径,或者直接放到jdk/bin、jre/bin、system32/system64下面都放一份,总能找得到,版本要记得对应好。

下面就是代码了

public class Test {

public static ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");

public static Dispatch sapo=sap.getObject();

public static void main(String[] args) {

for(int i=0;i<3;i++){

String str ="测试声音是否正常"+i;

readText(str);

}

}

public static void readText(String queue) {

try {

//声音大小

sap.setProperty("Volume", new Variant(100));

//语速

sap.setProperty("Rate",new Variant(-2));

//发声

Dispatch.call(sapo,"Speak",queue);

} catch (Exception e) {

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

}finally{

if(sap==null){

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

}

if(sapo==null){

sapo = sap.getObject();

}

}

}

}

这样一个简单的demo就搞定了.

特别注意的是第三点,一定要放对版本,不然凉凉...

windows自带的tts调用还是挺方便的,就是声音太死板,没有情绪.但是考虑到免费等原因还是用的挺多的.

jacob实现语音播报 将附件jacob.dll放到system32文件夹下 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字语音 --> com.hynnet jacob 1.18 /** * 语音文字并播放 * * @param text */ public void textToSpeech(String text) { ActiveXComponent ax = null; try { ax = new ActiveXComponent("Sapi.SpVoice"); // 运行时输出语音内容 Dispatch spVoice = ax.getObject(); // 音量 0-100 ax.setProperty("Volume", new Variant(100)); // 语音朗读速度 -10 到 +10 ax.setProperty("Rate", new Variant(-2)); // 执行朗读 Dispatch.call(spVoice, "Speak", new Variant(text)); // // 下面是构建文件流把生成语音文件 // // ax = new ActiveXComponent("Sapi.SpFileStream"); // Dispatch spFileStream = ax.getObject(); // // ax = new ActiveXComponent("Sapi.SpAudioFormat"); // Dispatch spAudioFormat = ax.getObject(); // // // 设置音频流格式 // Dispatch.put(spAudioFormat, "Type", new Variant(22)); // // 设置文件输出流格式 // Dispatch.putRef(spFileStream, "Format", spAudioFormat); // // 调用输出 文件流打开方法,创建一个.wav文件 // Dispatch.call(spFileStream, "Open", new Variant("./text.wav"), new Variant(3), new Variant(true)); // // 设置声音对象的音频输出流为输出文件对象 // Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream); // // 设置音量 0到100 // Dispatch.put(spVoice, "Volume", new Variant(100)); // // 设置朗读速度 // Dispatch.put(spVoice, "Rate", new Variant(-2)); // // 开始朗读 // Dispatch.call(spVoice, "Speak", new Variant(text)); // // // 关闭输出文件 // Dispatch.call(spFileStream, "Close"); // Dispatch.putRef(spVoice, "AudioOutputStream", null); // // spAudioFormat.safeRelease(); // spFileStream.safeRelease(); // spVoice.safeRelease(); // ax.safeRelease(); } catch (Exception e) { e.printStackTrace(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值