TIPS:本文共有 3116 个字,阅读大概需要 7 分钟。
科大讯飞纯离线语音合成的快速集成旨在为开发者提供高效便捷的语音合成解决方案。采用先进的离线技术,极大提升合成速度和效果。开发者可快速集成到各类应用中,无需依赖网络环境即可实现实时语音合成,保障用户体验。该技术支持多种语音风格和语言,满足不同用户需求。同时,科大讯飞还提供丰富的文档和示例代码,帮助开发者快速上手并自定义定制。不仅如此,纯离线模式还保护用户隐私数据,提高应用的安全性。科大讯飞纯离线语音合成的快速集成,将为开发者带来全新的语音合成体验,助力创新应用的快速落地。
1,注册科大讯飞开发者,新建应用,下载离线语音合成SDK到本地
2,将下载好的SDK中的jar,assets文件下的tts包,.so文件复制到项目中
3,将下面的工具类复制到项目中
/**
* 语音合成器
*
* @author kongqw
*/
public class KqwSpeechSynthesizer {
// Log标签
private static final String TAG = "KqwSpeechSynthesizer";
private Context mContext;
// 语音合成对象
private SpeechSynthesizer mTts;
public KqwSpeechSynthesizer(Context context) {
mContext = context;
// 初始化合成对象
mTts = SpeechSynthesizer.createSynthesizer(context, new InitListener() {
@Override
public void onInit(int code) {
Log.d(TAG, "InitListener init() code = " + code);
if (code != ErrorCode.SUCCESS) {
Toast.makeText(mContext, "初始化失败,错误码:" + code, Toast.LENGTH_SHORT).show();
}
}
});
}
/**
* 开始语音合成
*/
public void start(String text) {
// 设置参数
setParam();
int code = mTts.startSpeaking(text, mTtsListener);
if (code != ErrorCode.SUCCESS) {
Toast.makeText(mContext, "语音合成失败,错误码: " + code, Toast.LENGTH_SHORT).show();
}
}
/**
* 结束语音合成
*/
public void stop() {
if (null != mTts) {
mTts.stopSpeaking();
// 退出时释放连接
mTts.destroy();
}
}
/**
* 合成回调监听。
*/
private SynthesizerListener mTtsListener = new SynthesizerListener() {
@Override
public void onSpeakBegin() {
Log.i(TAG, "开始合成");
}
@Override
public void onSpeakPaused() {
Log.i(TAG, "暂停合成");
}
@Override
public void onSpeakResumed() {
Log.i(TAG, "继续合成");
}
@Override
public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
Log.i(TAG, "传冲进度 :" + percent);
}
@Override
public void onSpeakProgress(int percent, int beginPos, int endPos) {
// Log.i(TAG, "合成进度 : " + percent);
}
@Override
public void onCompleted(SpeechError speechError) {
if (speechError == null) {
Log.i(TAG, "合成完成");
} else {
Log.i(TAG, "error : " + speechError.toString());
}
}
@Override
public void onEvent(int i, int i1, int i2, Bundle bundle) {
}
};
/**
* 参数设置
*/
private void setParam() {
// 清空参数
mTts.setParameter(SpeechConstant.PARAMS, null);
// 设置使用本地引擎
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);
// 设置发音人资源路径
mTts.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());
// 设置发音人
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
// 设置语速
mTts.setParameter(SpeechConstant.SPEED, "50");
// 设置音调
mTts.setParameter(SpeechConstant.PITCH, "50");
// 设置音量
mTts.setParameter(SpeechConstant.VOLUME, "50");
// 设置播放器音频流类型
mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");
}
// 获取发音人资源路径
private String getResourcePath() {
// 合成通用资源
// 发音人资源
return ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/common.jet") + ";" +
ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/xiaoyan.jet");
}
}
4,项目中使用
首先在Application中初始化:
String param = "appid=5c6224f9," + SpeechConstant.ENGINE_MODE + "=" + SpeechConstant.MODE_MSC;
SpeechUtility.createUtility(this, param); //将这里的appid的值替换成你在第一步中拿到的appid的值
然后在有需要的页面使用:
在onCreate中初始化工具类:mKqwSpeechSynthesizer = new KqwSpeechSynthesizer(this);
在具体要语音播报的地方调用:mKqwSpeechSynthesizer.start(speckContent);
在onDestory中释放:mKqwSpeechSynthesizer.stop();
OK!完成,就是这么简单!
小编关于《科大讯飞纯离线语音合成:快速集成指南》就分享到这儿了,如果内容对你有帮助,记得点赞加收藏哦!