java语音播报案例
在做项目的过程中,我们往往会用到语音播报——把文字转换成语音播放出来,自动识别语言进行播报,那么我们现在来看看怎么操作:
1.下载jacob.jar,下载地址:这里
2.32位操作系统下载:jacob-1.17-M2-x32.dll,64位操作系统下载:jacob-1.17-M2-x64.dll,下载地址:这里
3.将jacob.jar考到项目中进行构建路径。
4.将jacob-1.17-M2-x32.dll或者jacob-1.17-M2-x64.dll,考到系统盘:\Windows\System32\下面。
5.将jacob-1.17-M2-x32.dll或者jacob-1.17-M2-x64.dll,考到JDK安装目录的bin下面。
然后写个test方法测试一下即可,测试代码如下:
/**
* @Title: Voice.java
* @Package org.util
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com
* @date 2017-7-3 下午9:03:45
* @version V1.0
*/
package cn.bdqn.bdqn.utils;
import org.junit.Test;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
*
* 项目名称:avoice
* 类名称:Voice
* 类描述: 语音播报工具类
* 创建人:Mu Xiongxiong
* 创建时间:2017-7-3 下午9:03:45
* 修改人:Mu Xiongxiong
* 修改时间:2017-7-3 下午9:03:45
* 修改备注:
* @version
*
*/
public class Voice {
/**
*
* @Title: strat
* @Description: 该方法的主要作用:朗读
* @param @param content
* @param @param type 设定文件 0:开始,1停止
* @return 返回类型:void
* @throws
*/
public void strat(String content, int type) {
// ?? 这个Sapi.SpVoice是需要安装什么东西吗,感觉平白无故就来了
ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");
// Dispatch是做什么的?
Dispatch sapo = sap.getObject();
if (type == 0) {
try {
// 音量 0-100
sap.setProperty("Volume", new Variant(100));
// 语音朗读速度 -10 到 +10
sap.setProperty("Rate", new Variant(1.3));
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(content));
} catch (Exception e) {
e.printStackTrace();
} finally {
sapo.safeRelease();
sap.safeRelease();
}
} else {
// 停止
try {
Dispatch.call(sapo, "Speak", new Variant(content), new Variant(
2));
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
/**
*
* @Title: test
* @Description: 该方法的主要作用:执行朗读内容
* @param 设定文件
* @return 返回类型:void
* @throws
*/
@Test
public void test()
{
strat("语音朗读的内容", 0);
}
}