Update TTS Engine APK to support multi-lang (#2294)

This commit is contained in:
Fangjun Kuang
2025-06-17 14:16:48 +08:00
committed by GitHub
parent 0c42c06f75
commit 4ae9382bae
5 changed files with 27 additions and 5 deletions

View File

@@ -23,6 +23,9 @@ object TtsEngine {
// cmn for Mandarin
var lang: String? = null
// if a model supports two languages, set also lang2
var lang2: String? = null
val speedState: MutableState<Float> = mutableFloatStateOf(1.0F)
val speakerIdState: MutableState<Int> = mutableIntStateOf(0)
@@ -76,6 +79,7 @@ object TtsEngine {
dataDir = null
dictDir = null
lang = null
lang2 = null
// Please enable one and only one of the examples below
@@ -125,6 +129,7 @@ object TtsEngine {
// lexicon = "lexicon.txt"
// dictDir = "vits-melo-tts-zh_en/dict"
// lang = "zho"
// lang2 = "eng"
// Example 7
// matcha-icefall-zh-baker
@@ -162,6 +167,7 @@ object TtsEngine {
// dictDir = "kokoro-multi-lang-v1_0/dict"
// lexicon = "kokoro-multi-lang-v1_0/lexicon-us-en.txt,kokoro-multi-lang-v1_0/lexicon-zh.txt"
// lang = "eng"
// lang2 = "zho"
// ruleFsts = "$modelDir/phone-zh.fst,$modelDir/date-zh.fst,$modelDir/number-zh.fst"
//
// This model supports many languages, e.g., English, Chinese, etc.

View File

@@ -60,6 +60,9 @@ class TtsService : TextToSpeechService() {
// see https://github.com/Miserlou/Android-SDK-Samples/blob/master/TtsEngine/src/com/example/android/ttsengine/RobotSpeakTtsService.java#L68
onLoadLanguage(TtsEngine.lang, "", "")
if (TtsEngine.lang2 != null) {
onLoadLanguage(TtsEngine.lang2, "", "")
}
}
override fun onDestroy() {
@@ -71,7 +74,7 @@ class TtsService : TextToSpeechService() {
override fun onIsLanguageAvailable(_lang: String?, _country: String?, _variant: String?): Int {
val lang = _lang ?: ""
if (lang == TtsEngine.lang) {
if (lang == TtsEngine.lang || lang == TtsEngine.lang2) {
return TextToSpeech.LANG_AVAILABLE
}
@@ -87,12 +90,12 @@ class TtsService : TextToSpeechService() {
Log.i(TAG, "onLoadLanguage: $_lang, $_country")
val lang = _lang ?: ""
return if (lang == TtsEngine.lang) {
return if (lang == TtsEngine.lang || lang == TtsEngine.lang2) {
Log.i(TAG, "creating tts, lang :$lang")
TtsEngine.createTts(application)
TextToSpeech.LANG_AVAILABLE
} else {
Log.i(TAG, "lang $lang not supported, tts engine lang: ${TtsEngine.lang}")
Log.i(TAG, "lang $lang not supported, tts engine lang: ${TtsEngine.lang}, ${TtsEngine.lang2}")
TextToSpeech.LANG_NOT_SUPPORTED
}
}