package cn.zhjy.ai.utils;
import android.content.Context;
import com.baidu.tts.client.SpeechSynthesizer;
import com.baidu.tts.client.SpeechSynthesizerListener;
import com.baidu.tts.client.TtsMode;
import cn.zhjy.ai.listener.MessageListener;
/**
* 除了SDK,该类没有任何依赖,可以直接复制进你的项目
* <p>
* 默认TEMP_DIR = "/sdcard/baiduTTS"; // 重要!请手动将assets目录下的3个dat 文件复制到该目录
* 确保 TEXT_FILENAME 和 MODEL_FILENAME 存在
* Created by fujiayi on 2017/9/14.
*/
public class BaiduTTS {
// ================== 精简版初始化参数设置开始 ==========================
private String appId="20193171";
private String appKey="0sBfmGftYkHAOVbkNFaVXkt7";
private String secretKey="5G0G8f1NQS8FFarODCRzK2DYAx9hypIY";
// TtsMode.MIX; 离在线融合,在线优先; TtsMode.ONLINE 纯在线; 没有纯离线
private TtsMode ttsMode = TtsMode.ONLINE;
// ===============初始化参数设置完毕,更多合成参数请至getParams()方法中设置 =================
private SpeechSynthesizer mSpeechSynthesizer;
/**
* 注意此处为了说明流程,故意在UI线程中调用。
* 实际集成中,该方法一定在新线程中调用,并且该线程不能结束。具体可以参考NonBlockSyntherizer的写法
*/
public void initTTs(Context context,SpeechSynthesizerListener listener) {
// 1. 获取实例
mSpeechSynthesizer = SpeechSynthesizer.getInstance();
mSpeechSynthesizer.setContext(context);
// 2. 设置listener
mSpeechSynthesizer.setSpeechSynthesizerListener(new MessageListener());
// 3. 设置appId,appKey.secretKey
int result = mSpeechSynthesizer.setAppId(appId);
result = mSpeechSynthesizer.setApiKey(appKey, secretKey);
// 4. 如果是纯离线SDK需要离线功能的话
// 5. 以下setParam 参数选填。不填写则默认值生效
//~"0"(默认) ~ ~ 普通女声
//~ "1" ~ ~ 普通男声
//~ "2" ~ ~ 特别男声
//~ "3" ~ ~ 情感男声<度逍遥>
//~ "4" ~ ~ 情感儿童声<度丫丫>
//~ "106" ~ ~ 度博文(情感男声)
//~ "110" ~ ~ 度小童(情感儿童声)
//~ "111" ~ ~ 度小萌(情感女声)
//~ "103" ~ ~ 度米朵(情感儿童声)
//~ "5" ~ ~ 度小娇(情感女声)
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");
// 设置合成的音量,0-15 ,默认 5
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "10");
// 设置合成的语速,0-15 ,默认 5
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED, "6");
// 设置合成的语调,0-15 ,默认 5
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH, "4");
// mSpeechSynthesizer.setAudioStreamType(AudioManager.MODE_IN_CALL); // 调整音频输出
// x. 额外 : 自动so文件是否复制正确及上面设置的参数
// Map<String, String> params = new HashMap<>();
// 复制下上面的 mSpeechSynthesizer.setParam参数
// 上线时请删除AutoCheck的调用
// 6. 初始化
result = mSpeechSynthesizer.initTts(ttsMode);
}
public void speak(String text) {
if (mSpeechSynthesizer == null) {
LogUtil.d("[ERROR], 初始化失败");
return;
}
int result = mSpeechSynthesizer.speak(text);
LogUtil.d("合成并播放 按钮已经点击");
}
public void stop() {
LogUtil.d("停止合成引擎 按钮已经点击");
int result = mSpeechSynthesizer.stop();
}
public void destory() {
if (mSpeechSynthesizer != null) {
mSpeechSynthesizer.stop();
mSpeechSynthesizer.release();
mSpeechSynthesizer = null;
LogUtil.d("释放资源成功");
}
}
}
百度tts语音合成使用
最新推荐文章于 2024-12-01 02:38:49 发布