support reading rule FST for Android TTS (#410)

This commit is contained in:
Fangjun Kuang
2023-11-06 10:38:40 +08:00
committed by GitHub
parent 723e5265bb
commit 86baf43c6b
10 changed files with 143 additions and 25 deletions

View File

@@ -101,12 +101,14 @@ class MainActivity : AppCompatActivity() {
fun initTts() {
var modelDir :String?
var modelName :String?
var ruleFsts: String?
// The purpose of such a design is to make the CI test easier
// Please see
// https://github.com/k2-fsa/sherpa-onnx/blob/master/scripts/apk/generate-tts-apk-script.py
modelDir = null
modelName = null
ruleFsts = null
// Example 1:
// modelDir = "vits-vctk"
@@ -116,7 +118,12 @@ class MainActivity : AppCompatActivity() {
// modelDir = "vits-piper-en_US-lessac-medium"
// modelName = "en_US-lessac-medium.onnx"
val config = getOfflineTtsConfig(modelDir = modelDir!!, modelName = modelName!!)!!
// Example 3:
// modelDir = "vits-zh-aishell3"
// modelName = "vits-aishell3.onnx"
// ruleFsts = "vits-zh-aishell3/rule.fst"
val config = getOfflineTtsConfig(modelDir = modelDir!!, modelName = modelName!!, ruleFsts = ruleFsts ?: "")!!
tts = OfflineTts(assetManager = application.assets, config = config)
}
}

View File

@@ -21,6 +21,7 @@ data class OfflineTtsModelConfig(
data class OfflineTtsConfig(
var model: OfflineTtsModelConfig,
var ruleFsts: String = "",
)
class GeneratedAudio(
@@ -116,7 +117,7 @@ class OfflineTts(
// please refer to
// https://k2-fsa.github.io/sherpa/onnx/tts/pretrained_models/index.html
// to download models
fun getOfflineTtsConfig(modelDir: String, modelName: String): OfflineTtsConfig? {
fun getOfflineTtsConfig(modelDir: String, modelName: String, ruleFsts: String): OfflineTtsConfig? {
return OfflineTtsConfig(
model = OfflineTtsModelConfig(
vits = OfflineTtsVitsModelConfig(
@@ -125,8 +126,9 @@ fun getOfflineTtsConfig(modelDir: String, modelName: String): OfflineTtsConfig?
tokens = "$modelDir/tokens.txt"
),
numThreads = 2,
debug = false,
debug = true,
provider = "cpu",
)
),
ruleFsts=ruleFsts,
)
}