在做项目的过程中,我们往往会用到语音播报——把文字转换成语音播放出来,自动识别语言进行播报,那么我们现在来看看怎么操作:
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); } }