美文网首页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