【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();
}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值