转载请注明来源: http://blog.csdn.net/kjunchen/article/details/51093134
Android Studio下Android应用开发集成百度语音合成使用方法样例
首先,语音合成是指将文本信息转换成声音。意思就是将文本转化为声音,让你的应用开口说话。国内在业内比较有名的第三方语音合成平台有百度语音和科大讯飞。
本博文集成的是百度语音合成,其主要特点是:
完全永久免费
业界首创完全永久免费新形式,为开发者提供最流畅最自然的语音合成服务。完全免费,永久使用,彻底摆脱限制。离线在线融合模式
SDK可以根据当前网络状况,自动判断使用本地引擎还是云端引擎进行语音合成,再也不用担心流量消耗!多语言多音色可选
中文普通话、中英文混读、男声、女声任你选,更支持语速、音调、音量、音频码率设置,让你的应用拥有最甜美和最磁性的声音!流畅自然的合成效果
语音合成技术业界领先,合成效果接近真人发声,流畅自然,且极具表现力,给你最舒适的听觉体验!
百度语音官方的Demo是在Eclipse环境下编写的,而在Android Studio中则有点小区别,下面请看百度语音合成使用详细步骤(一步一步操作不要跳跃心急吃不了热豆腐):
1、注册百度语音开发者平台
注册百度账号,注册开发者信息,创建应用,可以得到 APP ID、 API Key、和 Secret Key,在开发过程中会使用这三个值进行授权(很关键),开通语音合成服务,若需要使用离线合成功能还需要申请离线授权。详细步骤请看百度语音接入流程 。
Key值查看(很关键)
2、下载资源
下载百度语音SDK,根据自己的需要下载,本样例下载的是离在线融合语音合成SDK_Android版 , 地址: http://yuyin.baidu.com/tts/download
3、集成百度语音指南
3.1添加 jar 包和 so 库到工程
将开发包中的 libs 目录整体拷贝到工程目录(Eclipse的用户),libs 目录包括了jar包和各平台的 SO 库,开发者视应用需要可以进行删减。galaxy_lite.jar 是百度 Android 公共基础库,如果项目中还集成了其它百度 SDK,
如 Push SDK,在打包过程中出现类似如下的错误信息:
[2013-10-22 11:02:57 - Dex Loader] Unable to execute dex: Multiple dex files define
Lcom/baidu/android/common/logging/Configuration;
[2013-10-22 11:02:57 - VoiceRecognitionDemo] Conversion to Dalvik format failed: Unable to
execute dex: Multiple dex files define Lcom/baidu/android/common/logging/Configuration;
请将此 Jar 包移除。对于使用Android Studio的用户,应将libs目录中的jar包放在libs目录下,然后添加库依赖(千万别忘记), 而 .SO 库则应该放在jniLibs目录下, jniLibs目录与java、res在相同目录下。若没有相应的目录就自己创建。整个结构如下图:
3.2 添加语音合成资源文件
将开发包中的 data 目录下的 dat 文件放到工程的assets目录下,assets目录与java、res在同一目录下,以便设置资源文件参数时使用。
3.3 权限声明
使用百度语音需要声明以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
4、语音合成功能代码
4、1 Tts初始化
//获取 tts 实例
speechSynthesizer = SpeechSynthesizer.getInstance();
//设置 app 上下文(必需参数)
speechSynthesizer.setContext(Context);
//设置 tts 监听器
speechSynthesizer.setSpeechSynthesizerListener(SpeechSynthesizerListener);
//文本模型文件路径,文件的绝对路径 (离线引擎使用)
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE,
TEXT_MODEL_FILE_FULL_PATH_NAME);
//声学模型文件路径,文件的绝对路径 (离线引擎使用)
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE,
SPEECH_MODEL_FILE_FULL_PATH_NAME);
// 本 地 授 权 文 件 路 径 , 如 未 设 置 将 使 用 默 认 路 径 . 设 置 临 时 授 权 文 件 路 径 ,
//LICENCE_FILE_NAME 请替换成临时授权文件的实际路径,仅在使用临时 license 文件时需要进行设置,
//如果在[应用管理]中开通了离线授权,不需要设置该参数,建议将该行代码删除(离线引擎)