百度tts语音合成使用

    技术2022-07-12  88

    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("释放资源成功"); } } }
    Processed: 0.012, SQL: 9