Add Android demo for MatchaTTS models. (#1683)

This commit is contained in:
Fangjun Kuang
2025-01-06 06:44:09 +08:00
committed by GitHub
parent 3eced3e7ee
commit 1fe5fe495f
9 changed files with 222 additions and 38 deletions

View File

@@ -183,6 +183,8 @@ class MainActivity : AppCompatActivity() {
private fun initTts() {
var modelDir: String?
var modelName: String?
var acousticModelName: String?
var vocoder: String?
var ruleFsts: String?
var ruleFars: String?
var lexicon: String?
@@ -193,8 +195,18 @@ class MainActivity : AppCompatActivity() {
// 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
// VITS -- begin
modelName = null
// VITS -- end
// Matcha -- begin
acousticModelName = null
vocoder = null
// Matcha -- end
modelDir = null
ruleFsts = null
ruleFars = null
lexicon = null
@@ -217,7 +229,6 @@ class MainActivity : AppCompatActivity() {
// https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-icefall-zh-aishell3.tar.bz2
// modelDir = "vits-icefall-zh-aishell3"
// modelName = "model.onnx"
// ruleFsts = "vits-icefall-zh-aishell3/phone.fst,vits-icefall-zh-aishell3/date.fst,vits-icefall-zh-aishell3/number.fst,vits-icefall-zh-aishell3/new_heteronym.fst"
// ruleFars = "vits-icefall-zh-aishell3/rule.far"
// lexicon = "lexicon.txt"
@@ -233,24 +244,47 @@ class MainActivity : AppCompatActivity() {
// modelDir = "vits-coqui-de-css10"
// modelName = "model.onnx"
// Example 6
// vits-melo-tts-zh_en
// https://k2-fsa.github.io/sherpa/onnx/tts/pretrained_models/vits.html#vits-melo-tts-zh-en-chinese-english-1-speaker
// modelDir = "vits-melo-tts-zh_en"
// modelName = "model.onnx"
// lexicon = "lexicon.txt"
// dictDir = "vits-melo-tts-zh_en/dict"
// Example 7
// matcha-icefall-zh-baker
// https://k2-fsa.github.io/sherpa/onnx/tts/pretrained_models/matcha.html#matcha-icefall-zh-baker-chinese-1-female-speaker
// modelDir = "matcha-icefall-zh-baker"
// acousticModelName = "model-steps-3.onnx"
// vocoder = "hifigan_v2.onnx"
// lexicon = "lexicon.txt"
// dictDir = "matcha-icefall-zh-baker/dict"
// Example 8
// matcha-icefall-en_US-ljspeech
// https://k2-fsa.github.io/sherpa/onnx/tts/pretrained_models/matcha.html#matcha-icefall-en-us-ljspeech-american-english-1-female-speaker
// modelDir = "matcha-icefall-en_US-ljspeech"
// acousticModelName = "model-steps-3.onnx"
// vocoder = "hifigan_v2.onnx"
// dataDir = "matcha-icefall-en_US-ljspeech/espeak-ng-data"
if (dataDir != null) {
val newDir = copyDataDir(modelDir!!)
modelDir = newDir + "/" + modelDir
dataDir = newDir + "/" + dataDir
assets = null
val newDir = copyDataDir(dataDir!!)
dataDir = "$newDir/$dataDir"
}
if (dictDir != null) {
val newDir = copyDataDir(modelDir!!)
modelDir = newDir + "/" + modelDir
dictDir = modelDir + "/" + "dict"
val newDir = copyDataDir(dictDir!!)
dictDir = "$newDir/$dictDir"
ruleFsts = "$modelDir/phone.fst,$modelDir/date.fst,$modelDir/number.fst"
assets = null
}
val config = getOfflineTtsConfig(
modelDir = modelDir!!,
modelName = modelName!!,
modelName = modelName ?: "",
acousticModelName = acousticModelName ?: "",
vocoder = vocoder ?: "",
lexicon = lexicon ?: "",
dataDir = dataDir ?: "",
dictDir = dictDir ?: "",