有两种方式,
1.使用科大讯飞的sdk对接,缺点要收费,优点windos与linux通用
需要到科大讯飞官网https://console.xfyun.cn/services/tts上申请账号实名认证然后开通服务
1.点击玉语音合成,有在线版和离线办,这里使用在线版
2.新人注册有免费使用权限
3.立即领取
4.然后这边需要登陆注册
4.然后根据你所适用的场景选择套餐,我的是个人版一年一百万次
5.选择个人免费套餐,点击语音合成免费领取
6.因为之前我已经领取过了所有不能领了,现在这是我领取语音转写的教程和语音合成的流程一样,然后你点击立即领取后会转到这个页面,然后选择应用,这个应用是要自己创建的,开发的时候用的上
7.选择好应用后点击下单,然后设置支付密码付款(免费的不扣钱)
8.然后找到控制台,选择需要进入的教程,我这边选择的是在线版的
9.然后在右边选择下载SDK
10.然后将这几个放在项目的与src同级目录下,里面的lib包需要加载到项目里
11.代码
@ApiOperation(value = "测试语音在线播报功能")
@PostMapping("/voiceBroadcast")
public String demo3() {
screenshotsService.textToVoice();
return "语音播放测试!";
}
public void textToVoice() {
SpeechUtility.createUtility(SpeechConstant.APPID +"=APPID");//设置申请的APPID
SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer();//创建SpeechSynthesizer对象
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan"); //设置发音人
mTts.setParameter(SpeechConstant.SPEED, "10");//设置语速
mTts.setParameter(SpeechConstant.VOLUME, "10");//设置音量,范围 0~100
mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./voiceTrans/iflytek.pcm");
//开始合成
mTts.startSpeaking("语音合成测试程序", mSynListener);
//开始播放
mSynListener.onSpeakBegin();
}
//合成监听器
public SynthesizerListener mSynListener = new SynthesizerListener() {
//会话结束回调接口,没有错误时,error为null
@Override
public void onCompleted(SpeechError error) {
System.out.println(error);
}
//缓冲进度回调
//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
@Override
public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
}
//开始播放
@Override
public void onSpeakBegin() {
}
//暂停播放
@Override
public void onSpeakPaused() {
}
//播放进度回调
//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.
@Override
public void onSpeakProgress(int percent, int beginPos, int endPos) {
}
//恢复播放回调接口
@Override
public void onSpeakResumed() {
}
@Override
public void onEvent(int var1, int var2, int var3, int var4, Object var5, Object var6) {
}
};
voiceTrans文件:
然后调用就可以了
2.使用jacob,缺点不适用于Linux,优点不收费
1.参考链接2.代码
/**【语音播报方法】**/
public static boolean speakingText(String readText){
boolean isFinish = true;
ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");
try {
sap.setProperty("Volume",new Variant(100)); // 音量 0-100
sap.setProperty("Rate",new Variant(-3)); // 语音朗读速度 -10 到 +10
Dispatch sapo = sap.getObject(); // 获取执行对象
Dispatch.call(sapo,"Speak",new Variant(readText)); // 执行朗读
sapo.safeRelease(); // 关闭执行对象
}catch (Exception e){
isFinish = false;
e.printStackTrace();
}finally {
sap.safeRelease(); // 关闭执行对象
}
return isFinish;
}
3.这里的文件放在C:\Windows\System32(64)和C:\Windows\SysWOW64(x86)里面