先期准备工作:
安装微软speechsdk51,下载jacob开源组件(以上传)
工具方法:
测试通过即可试用文本读取
安装微软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();
}
}