【java】调用微软语音系统读取文本

先期准备工作:
    安装微软speechsdk51,下载jacob开源组件(以上传)
工具方法:
package com.duduli.li;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class SpeechUtil {
//	message 是需要转换的文本信息,volume是声音大小,rate是读取速度。
public void speakMessage(String message, int volume, int rate) {
	
		ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");
		Dispatch sapo = sap.getObject();
		try {
			
			sap.setProperty("Volume", new Variant(volume));
			sap.setProperty("Rate", new Variant(rate));
			Dispatch.call(sapo, "Speak", new Object[]{message});

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			sapo.safeRelease();
			sap.safeRelease();
		}
	}

}



测试通过即可试用文本读取
package com.duduli.li;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class FileToString {
	StringBuilder sb = new StringBuilder();

	public void fileToString() throws IOException{
		File f=new File("D:\\test.txt");
        //可以换成工程目录下的其他文本文件
        SpeechUtil speechutil = new SpeechUtil();
       /* BufferedReader br = new BufferedReader(new FileReader(f));
        String data = br.readLine();//一次读入一行,直到读入null为文件结束
        while( data!=null){
              speechutil.speakMessage(data, 100, 0);
              data = br.readLine(); //接着读下一行
        }
        br.close();*/
        
        BufferedReader br = new BufferedReader(new InputStreamReader(  
                new FileInputStream(f)));  
        for (String line = br.readLine(); line != null; line = br.readLine()) {  
//            100表示读取音量,0表示读取速度(-10,10之间)
            speechutil.speakMessage(line, 100, 1);
        }  
        br.close();
            
	}

	public static void main(String[] args) throws IOException {
		FileToString f = new FileToString();
		f.fileToString();
	}
}

猜你喜欢

转载自duduli.iteye.com/blog/2059512
今日推荐