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);
	}
	

}

 

 

 

 

 

posted @ 2017-09-03 08:22  穆雄雄  阅读(206)  评论(0编辑  收藏  举报