前期准备
申请 key 和创建应用的步骤这里不再赘述,可以参考:在线合成Android-SDK介绍 官方文档
运行官方demo
1、下载 在线语音合成Android SDK
离线语音合成SDK只能免费使用 在线合成功能,纯离线和在线离线混合模式是需要收费的。所以我们直接使用 在线语音合成。
2、修改官方 demo 运行
打开 main/assets/auth.properties
填入自己 appId、appKey、secretKey、applicationId。
修改 app/build.gradle
中的 applicationId,改为自己的包名。
如果运行不了需要根据报错修改,可能需要修改:
1、local.properties
文件中
删掉 的 ndk.dir
修改 sdk.dir
2、修改 gradle-wrapper.properties
中 gradle 版本 和 整个项目的 build.gradle
的 gradle tools 版本,改成和自己项目相同的版本
整个项目的 build.gradle
的 repositories 改为和自己项目相同的仓库
运行程序,我们测试纯在线语音合成:
自己项目中集成
1、将官方 demo 中的 libs
文件夹下的 jar 包放入自己 libs
目录下
确保 build.gradle
中对这个 jar 包进行了引用
可以引入libs下所有的 jar
implementation fileTree(include: ['*.jar'], dir: 'libs')
或单独引入这个 jar
implementation files("libs/com.baidu.tts_2.6.2.2.20200629_44818d4.jar")
2、将 jinLibs
中自己用到的架构文件复制到自己相应的文件夹中
例如我的 build.gradle
文件中只指定了两个 abi,我就只需要复制两个文件夹即可:
3、AndroidManifest.xml 中增加权限
<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.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
4、按照官方 demo 中的 MySyntherizer 进行修改,改为符合自己业务需求的工具类
例如我的项目中有一个试听音效的功能,我就把 MySyntherizer 复制过来增加了一个播放状态speakStatus 字段,实现了 SpeechSynthesizerListener 的方法,在播放开始和结束时改变这个字段,以便在用户重复点击播放按钮的时候进行判断,如果在播放中则提示用户“播放中,请等待试听结束”。
同学们使用时需要将类中的 BD_APP_KEY 、BD_APP_SECRET_KEY 、BD_APP_ID 改为自己申请的值。
/**
* 该类是对SpeechSynthesizer的封装
* 百度语音在线合成 工具类
*/
public class MySyntherizer implements SpeechSynthesizerListener {
protected SpeechSynthesizer mSpeechSynthesizer;
protected Context context;
private static final String TAG = "MySyntherizer";
private static volatile MySyntherizer instance = null;
/**
* 当前播放状态 0 未播放 或播放已结束 1 播放中
*/
private int speakStatus = 0;
//修改为自己的 appId、appKey、secretKey
private static final String BD_APP_KEY