安卓调用科大讯飞语音
一.官网下载SDKhttps://www.xfyun.cn/1.1项目创建APPID是项目调用SDK会用到的1.2SDK下载二.代码调用2.1在Application中初始化SDK/*** @author Longchengbin* @description 初始化讯飞语音* @since 2020-10-22 11:42**/private void initXFYY() {
·
一.官网下载SDK
1.1项目创建
APPID是项目调用SDK会用到的
1.2SDK下载
二.代码调用
2.1在Application中初始化SDK
/**
* @author Longchengbin
* @description 初始化讯飞语音
* @since 2020-10-22 11:42
**/
private void initXFYY() {
// 应用程序入口处调用,避免手机内存过小,杀死后台进程后通过历史intent进入Activity造成SpeechUtility对象为null
// 注意:此接口在非主进程调用会返回null对象,如需在非主进程使用语音功能,请增加参数:SpeechConstant.FORCE_LOGIN+"=true"
// 参数间使用“,”分隔;设置你申请的应用appid,注意: appid 必须和下载的SDK保持一致,否则会出现10407错误
StringBuffer param = new StringBuffer();
param.append("appid="+getString(R.string.app_id));
param.append(",");
// 设置使用v5+
param.append(SpeechConstant.ENGINE_MODE+"="+SpeechConstant.MODE_MSC);
SpeechUtility.createUtility(TvApp.this, param.toString());
}
2.2代码中调用语音播报
/*+++++++++++++++++++++++++++ 语音播报 +++++++++++++++++++++++++++ */
/**
* @author Longchengbin
* @description 播报的车牌号
* @since 2020-11-3 10:48
**/
private void play(String num) {
setParam();
String string = getString(R.string.pay, num, num);
mTts.startSpeaking(string, mTtsListener);
}
/**
* @author Longchengbin
* @description 初始化语音播报的参数
* @since 2020-10-22 13:56
**/
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, "xiaofeng");
//设置合成语速 在线0~100本地0~200
mTts.setParameter(SpeechConstant.SPEED, "33");
//设置合成音调 范围 0~100
mTts.setParameter(SpeechConstant.PITCH, "99");
//设置合成音量 范围 0~100
mTts.setParameter(SpeechConstant.VOLUME, "99");
//设置播放器音频流类型0通话1系统2铃声3音乐4闹铃5通知
mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");
// 设置播放合成音频打断音乐播放,默认为true
mTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true");
// 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限
mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");
mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH,
Environment.getExternalStorageDirectory() + "/msc/tts.wav");
}
/**
* @author Longchengbin
* @description 获取发音人本地资源
* @since 2020-10-22 13:57
**/
private String getResourcePath() {
StringBuffer tempBuffer = new StringBuffer();
String type = "tts";
//合成通用资源
tempBuffer.append(ResourceUtil.generateResourcePath(this,
ResourceUtil.RESOURCE_TYPE.assets, type + "/common.jet"));
tempBuffer.append(";");
//发音人资源
tempBuffer.append(ResourceUtil.generateResourcePath(this,
ResourceUtil.RESOURCE_TYPE.assets, type + "/xiaofeng.jet"));
return tempBuffer.toString();
}
/**
* 初始化监听
*/
private InitListener mTtsInitListener = new InitListener() {
@Override
public void onInit(int code) {
if (code != ErrorCode.SUCCESS) {
Log.e("lcb", "语音合成失败,错误码: " + code
+ ",请点击网址https://www.xfyun.cn/document/error-code查询解决方案");
}
}
};
/**
* 合成回调监听。
*/
private SynthesizerListener mTtsListener = new SynthesizerListener() {
@Override
public void onSpeakBegin() {
// Log.e("lcb", "开始播放:" + System.currentTimeMillis());
}
@Override
public void onSpeakPaused() {
Log.e("lcb", "暂停播放");
}
@Override
public void onSpeakResumed() {
Log.e("lcb", "继续播放");
}
@Override
public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
}
@Override
public void onSpeakProgress(int percent, int beginPos, int endPos) {
// 播放进度
}
@Override
public void onCompleted(SpeechError error) {
if (error == null) {
Log.e("lcb", "播放完成");
} else {
Log.e("lcb", error.getPlainDescription(true));
}
}
@Override
public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
}
};
2.3资源调用
更多推荐
已为社区贡献15条内容
所有评论(0)