android 百度语音合成接入和使用技巧
来源:互联网 发布:python 金融数据分析 编辑:程序博客网 时间:2024/05/22 00:30
参考网址:
http://blog.csdn.net/fengyuzhengfan/article/details/45053177
顺便贴上讯飞的使用:
https://www.baidu.com/link?url=sJWDkefoEaP0Ks0Mh_ZcYSaCAj3puLjZhcIi8_uSyFf0TNL3fS-gSwHt9KACm2_X&wd=&eqid=cf72b64000000c49000000055a24f10c
public class AudioUtils { private static AudioUtils audioUtils; protected SpeechSynthesizer mSpeechSynthesizer; /** * 发布时请替换成自己申请的appId appKey 和 secretKey。注意如果需要离线合成功能,请在您申请的应用中填写包名。 * 本demo的包名是com.baidu.tts.sample,定义在build.gradle中。 */ private String appId = "8535996"; private String appKey = "MxPpf3nF5QX0pndKKhS7IXcB"; private String secretKey = "7226e84664474aa098296da5eb2aa434"; // TtsMode.MIX; 离在线融合,在线优先; TtsMode.ONLINE 纯在线; 没有纯离线 private TtsMode ttsMode = TtsMode.MIX; private AudioUtils(){ } public static AudioUtils getInstance(){ if (audioUtils == null){ synchronized (AudioUtils.class){ if (audioUtils == null){ audioUtils = new AudioUtils(); } } } return audioUtils; } /** * 注意此处为了说明流程,故意在UI线程中调用。 * 实际集成中,该方法一定在新线程中调用,并且该线程不能结束。具体可以参考NonBlockSyntherizer的写法 */ public void initTTs(Context context) { boolean isMix = ttsMode.equals(TtsMode.MIX); boolean isSuccess;// if (isMix) {// // 检查2个离线资源是否可读// isSuccess = checkOfflineResources();// if (!isSuccess) {// return;// } else {//// print("离线资源存在并且可读, 目录:" + TEMP_DIR);// }// }// SpeechSynthesizerListener listener = new UiMessageListener(mainHandler); // 日志更新在UI中,可以换成MessageListener,在logcat中查看日志 mSpeechSynthesizer = SpeechSynthesizer.getInstance(); mSpeechSynthesizer.setContext(context);// mSpeechSynthesizer.setSpeechSynthesizerListener(listener); int result = mSpeechSynthesizer.setAppId(appId); checkResult(result, "setAppId"); result = mSpeechSynthesizer.setApiKey(appKey, secretKey); checkResult(result, "setApiKey");// if (isMix) {// // 检查离线授权文件是否下载成功,离线授权文件联网时SDK自动下载管理,有效期3年,3年后的最后一个月自动更新。// isSuccess = checkAuth();// if (!isSuccess) {// return;// }// mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE, TEXT_FILENAME); // 文本模型文件路径 (离线引擎使用)// mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE, MODEL_FILENAME); // 声学模型文件路径 (离线引擎使用)// } // 以下setParam 参数选填。不填写则默认值生效 mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0"); // 设置在线发声音人: 0 普通女声(默认) 1 普通男声 2 特别男声 3 情感男声<度逍遥> 4 情感儿童声<度丫丫> mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "9"); // 设置合成的音量,0-9 ,默认 5 mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED, "5");// 设置合成的语速,0-9 ,默认 5 mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH, "5");// 设置合成的语调,0-9 ,默认 5 mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE, SpeechSynthesizer.MIX_MODE_DEFAULT); // 该参数设置为TtsMode.MIX生效。即纯在线模式不生效。 // MIX_MODE_DEFAULT 默认 ,wifi状态下使用在线,非wifi离线。在线状态下,请求超时6s自动转离线 // MIX_MODE_HIGH_SPEED_SYNTHESIZE_WIFI wifi状态下使用在线,非wifi离线。在线状态下, 请求超时1.2s自动转离线 // MIX_MODE_HIGH_SPEED_NETWORK , 3G 4G wifi状态下使用在线,其它状态离线。在线状态下,请求超时1.2s自动转离线 // MIX_MODE_HIGH_SPEED_SYNTHESIZE, 2G 3G 4G wifi状态下使用在线,其它状态离线。在线状态下,请求超时1.2s自动转离线 mSpeechSynthesizer.setAudioStreamType(AudioManager.MODE_IN_CALL); result = mSpeechSynthesizer.initTts(ttsMode); checkResult(result, "initTts"); } /** * 检查appId ak sk 是否填写正确,另外检查官网应用内设置的包名是否与运行时的包名一致。本demo的包名定义在build.gradle文件中 * @return */ private boolean checkAuth() { AuthInfo authInfo = mSpeechSynthesizer.auth(ttsMode); if (!authInfo.isSuccess()) { // 离线授权需要网站上的应用填写包名。本demo的包名是com.baidu.tts.sample,定义在build.gradle中 String errorMsg = authInfo.getTtsError().getDetailMessage(); Log.e("msg","【error】鉴权失败 errorMsg=" + errorMsg); return false; } else { Log.e("msg","验证通过,离线正式授权文件存在。"); return true; } } private void checkResult(int result, String method) { if (result != 0) { Log.e("msg","error code :" + result + " method:" + method + ", 错误码文档:http://yuyin.baidu.com/docs/tts/122 "); } } /** * 检查 TEXT_FILENAME, MODEL_FILENAME 这2个文件是否存在,不存在请自行从assets目录里手动复制 * @return */// private boolean checkOfflineResources() {// String[] filenames = {TEXT_FILENAME, MODEL_FILENAME};// for (String path : filenames) {// File f = new File(path);// if (!f.canRead()) {//// print("[ERROR] 文件不存在或者不可读取,请从assets目录复制改文件到:" + path);// return false;// }// }// return true;// } public void speak(String text) { int result = mSpeechSynthesizer.speak(text); checkResult(result, "speak"); } public void stop() { int result = mSpeechSynthesizer.stop(); checkResult(result, "stop"); }}
只要这些初始化就可以了
AudioUtils.getInstance().initTTs(context);
这样调用:
AudioUtils.getInstance().speak(pushMessage);
阅读全文
0 0
- android 百度语音合成接入和使用技巧
- 【Android语音合成TTS】百度语音接入方法,和使用技巧详解
- android应用百度语音识别、语音合成和语音唤醒
- Android百度语音合成Demo
- 百度语音合成的使用
- 百度语音识别和合成
- android 百度语音合成例子eclipse版和studio版
- Unity接入百度语音识别与语音合成,实现语音交互
- android studio集成百度语音合成
- android 集成百度TTS 语音合成
- python 使用百度tts 库合成语音
- iOS-百度语音合成的使用
- Unity语音识别和语音合成 Android
- 使用百度语音平台实现语音合成(tts)
- c# 百度语音合成
- 百度语音合成
- 百度语音合成学习
- 百度语音离线合成
- rabbitmq实现延迟队列
- Prototype design pattern in Java
- flex布局
- 【Scikit-Learn 中文文档】模型持久化
- CODEVS 1230 元素查找
- android 百度语音合成接入和使用技巧
- 我想下载一个文件
- 上传表格input【type="file"】
- 扫描识别工具Dynamic Web TWAIN使用教程:如何自定义扫描设置
- PAT乙级 1020. 月饼 (25) C语言
- Atitit q2016 q0 doc list on home ntpc.docx
- 2017秋招提前批美团面经
- 《Java NIO (中文版)》【PDF】下载
- Java ArrayList源码分析