安装微软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(); } }