美文网首页Android开发经验谈Android技术知识Kotlin编程
[Android]百度文字合成语音集成过程记录

[Android]百度文字合成语音集成过程记录

作者: Coair_Scarlet | 来源:发表于2019-09-27 20:07 被阅读0次

百度文字转语音集成简述

集成后的demo:

代码地址
百度原文档

前提

  1. 在百度智能云-语音技术创建一个应用,包名后面建好APP后修改为你要用的APPID
  2. 记录下APP_ID API_KEY SECRET_KEY三项值
    包名Package name:你的包名填在创建的应用的里面
  3. 在sdk下载页面中.选择语音合成-离在线融合SDK-android.进行下载,解压之后用AS打开.先确保将官方demo的源代码通过android studio在android真机上运行起来并且测试成功

开始集成

1. 权限加到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.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" />

2. 添加依赖

  • com.baidu.tts_2.3.2.20180713_6101c2a.jar加入到项目依赖,该文件位于demo中的app\libs\
  • 将jni文件复制到自己项目,位于app\src\main\jniLibs

3. 代码集成

  • 复制MiniActivity.kt中代码及相关文件到自己的项目

改写initTTs()方法,demo中为了说明流程,故意在UI线程中调用。
实际集成中,该方法一定在新线程中调用,并且该线程不能结束。
可以使用协程处理

uiScope.launch {
    val deffer = async(Dispatchers.Default) {
        initTTs()
    }
    deffer.await()
}
  • 根据开始记录的修改其中的appId,appKey,secretKey

  • 在把界面修改成自己想要的样子,或者把整个流程做成后台服务

至此集成在线文字转语音已经完成

集成离线合成

修改

  // TtsMode.MIX; 离在线融合,在线优先; TtsMode.ONLINE 纯在线; 没有纯离线
    private val ttsMode = TtsMode.MIX

将demo中的assets目录下5个bat文件放到项目中的assets
在程序中,复制到设备本地储存

private val TEMP_DIR = SystemConfig.baiduPath

private val fileList = listOf(
    "bd_etts_common_speech_as_mand_eng_high_am_v3.0.0_20170516.dat",
    "bd_etts_common_speech_f7_mand_eng_high_am-mix_v3.0.0_20170512.dat",
    "bd_etts_common_speech_m15_mand_eng_high_am-mix_v3.0.0_20170505.dat",
    "bd_etts_common_speech_yyjw_mand_eng_high_am-mix_v3.0.0_20170512.dat",
    "bd_etts_text.dat"
)

init {
    fileList.forEach {
        ResourceUtils.copyFileFromAssets(it, TEMP_DIR + File.separator + it)
    }
}

至此全部集成完毕,根据需求修改代码,更多参数及意义可以参照官方文档

相关文章

网友评论

    本文标题:[Android]百度文字合成语音集成过程记录

    本文链接:https://www.haomeiwen.com/subject/tkydyctx.html