Android开发经验谈Android技术知识Kotlin编程

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

2019-09-27  本文已影响0人  Coair_Scarlet

百度文字转语音集成简述

集成后的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. 添加依赖

3. 代码集成

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

uiScope.launch {
    val deffer = async(Dispatchers.Default) {
        initTTs()
    }
    deffer.await()
}

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

集成离线合成

修改

  // 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)
    }
}

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

上一篇下一篇

猜你喜欢

热点阅读