我是靠谱客的博主 自由小丸子,最近开发中收集的这篇文章主要介绍JAVA SpringBoot接科大讯飞TTS语音合成保姆式教程附源代码JAVA SpringBoot接科大讯飞TTS语音合成,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
JAVA SpringBoot接科大讯飞TTS语音合成
你好! 大家好~最近公司有需求需要实现语音播报的功能
然后抽空研究了下,下述代码对接的科大讯飞API实现了语音播报的效果
废话不多说上代码
package com.stla.callCenter.utility;
import com.iflytek.cloud.speech.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.UUID;
//tts文本转音频Pcm格式
public class TtsTool {
private static Logger LOGGER = LoggerFactory.getLogger(TtsTool.class);
private Object lock = new Object();
// 语音合成对象
private SpeechSynthesizer mTts;
private String ttsPcmDir;
public TtsTool(String appId, String ttsPcmDir) {
LOGGER.info("------Speech Utility init tts------");
this.ttsPcmDir = ttsPcmDir;
SpeechUtility.createUtility(SpeechConstant.APPID + "=" + appId);
// 初始化合成对象
mTts = SpeechSynthesizer.createSynthesizer();
if (mTts != null) {
// 设置发音人
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
mTts.setParameter(SpeechConstant.SPEED, "150");//设置语速
mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100
} else {
LOGGER.error("tts handler init fail");
}
}
public String textToVoice(String text,String fileName) {
try {
String pcmPath;
if (null != fileName){
pcmPath = ttsPcmDir + File.separator + fileName + ".pcm";
}else{
pcmPath = ttsPcmDir + File.separator + UUID.randomUUID() + ".pcm";
}
// 设置合成音频保存位置(可自定义保存位置),默认不保存
mTts.synthesizeToUri(text, pcmPath, mSynListener);
synchronized (lock) {
lock.wait();
}
return pcmPath;
} catch (Exception e) {
LOGGER.error("textToVoice get exception:" + e.getMessage());
e.printStackTrace();
}
return null;
}
/**
* 合成监听器
*/
SynthesizeToUriListener mSynListener = new SynthesizeToUriListener() {
public void onBufferProgress(int progress) {
LOGGER.info("*************合成进度*************" + progress);
}
public void onSynthesizeCompleted(String uri, SpeechError error) {
if (error == null) {
LOGGER.info("*************合成成功*************");
LOGGER.info("合成音频生成路径:" + uri);
} else {
LOGGER.info("******合成失败*******" + error.getErrorCode()
+ "*************");
}
synchronized (lock) {
LOGGER.info("通知合成成功");
lock.notify();
}
}
@Override
public void onEvent(int eventType, int arg1, int arg2, int arg3, Object obj1, Object obj2) {}
};
}
此代码是tts工具类,下面是在接口实现的调用方法
接口方法体需要实现以下案例
TtsTool ttsTool = new TtsTool("d5e44f666", "D:\");
ttsTool.textToVoice("大家好,欢迎大家阅读使用本次TTS工具类,同是搬砖人,从代码相见也是一份缘分");
TtsTool方法需要两个参数
第一个是在科大讯飞开发者平台注册成功后生成的APPID
第二个是pcm音频文件生成后的文件目录
最后
以上就是自由小丸子为你收集整理的JAVA SpringBoot接科大讯飞TTS语音合成保姆式教程附源代码JAVA SpringBoot接科大讯飞TTS语音合成的全部内容,希望文章能够帮你解决JAVA SpringBoot接科大讯飞TTS语音合成保姆式教程附源代码JAVA SpringBoot接科大讯飞TTS语音合成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复