Skip to content

Commit

Permalink
feat: set voiceName
Browse files Browse the repository at this point in the history
  • Loading branch information
jing332 committed Feb 28, 2024
1 parent 5ab94db commit ae1d8bb
Show file tree
Hide file tree
Showing 28 changed files with 785 additions and 171 deletions.
6 changes: 6 additions & 0 deletions .idea/deploymentTargetDropDown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 13 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,24 @@ android {
}

dependencies {
implementation("androidx.navigation:navigation-compose:2.7.7")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")

implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
implementation("com.geyifeng.immersionbar:immersionbar-ktx:3.2.2")

implementation("com.charleskorn.kaml:kaml:0.57.0")
implementation("com.github.FunnySaltyFish.ComposeDataSaver:data-saver:v1.1.5")
implementation("org.meeuw.i18n:i18n-iso-639-3:3.0")
implementation("org.burnoutcrew.composereorderable:reorderable:0.9.6")

val accompanistVersion = "0.33.0-alpha"
implementation("com.google.accompanist:accompanist-systemuicontroller:${accompanistVersion}")
implementation("com.google.accompanist:accompanist-navigation-animation:${accompanistVersion}")

implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")
implementation("androidx.navigation:navigation-compose:2.7.6")

implementation("io.github.dokar3:sheets-m3:0.5.4")

val composeBom = platform("androidx.compose:compose-bom:2024.02.01")
implementation("androidx.core:core-ktx:1.12.0")
Expand Down
7 changes: 6 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
package="com.k2fsa.sherpa.onnx.tts.engine">

<application
android:allowBackup="true"
android:name=".App"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
Expand All @@ -14,6 +14,11 @@
android:supportsRtl="true"
android:theme="@style/Theme.SherpaOnnxTtsEngine"
tools:targetApi="31">
<activity
android:name=".ui.sampletext.SampleTextManagerActivity"
android:exported="true"
android:label="@string/sample_text" />

<activity
android:name=".service.GetSampleText"
android:exported="true"
Expand Down
10 changes: 0 additions & 10 deletions app/src/main/assets/config.yaml

This file was deleted.

30 changes: 30 additions & 0 deletions app/src/main/assets/sampleText.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
zh-CN:
- 使用新一代卡尔迪的语音合成引擎
zh-TW:
- 使用新一代卡爾迪的語音合成引擎
zh-HK:
- 使用新一代卡爾迪的語音合成引擎

en-US:
- Use the new generation of Cardi's speech synthesis engine
en-GB:
- Use the new generation of Cardi's speech synthesis engine

ja-JP:
- 新しい世代のカーディの音声合成エンジンを使用する

ko-KR:
- 새로운 세대의 카디 음성 합성 엔진을 사용하십시오

ru-RU:
- Используйте новое поколение двигателя синтеза речи Карди

de-DE:
- Verwenden Sie die neue Generation des Sprachsynthese-Motors von Cardi

fr-FR:
- Utilisez le nouveau moteur de synthèse vocale de Cardi

es-ES:
- Utilice el nuevo motor de síntesis de voz de Cardi

4 changes: 1 addition & 3 deletions app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/App.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package com.k2fsa.sherpa.onnx.tts.engine

import android.app.Application
import com.k2fsa.sherpa.onnx.tts.engine.synthesizer.ModelManager
import kotlinx.coroutines.stream.consumeAsFlow
import org.meeuw.i18n.languages.LanguageCode
import com.k2fsa.sherpa.onnx.tts.engine.synthesizer.config.SampleTextConfig

val app by lazy { App.instance }

Expand Down
14 changes: 14 additions & 0 deletions app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/AppConst.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.k2fsa.sherpa.onnx.tts.engine

import com.charleskorn.kaml.SingleLineStringStyle
import com.charleskorn.kaml.Yaml
import com.charleskorn.kaml.YamlConfiguration

object AppConst {
val yaml = Yaml(
configuration = YamlConfiguration(
strictMode = false,
singleLineStringStyle = SingleLineStringStyle.PlainExceptAmbiguous
)
)
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
package com.k2fsa.sherpa.onnx.tts.engine.service

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.speech.tts.TextToSpeech
import androidx.appcompat.app.AppCompatActivity
import com.k2fsa.sherpa.onnx.tts.engine.synthesizer.ModelManager
import com.k2fsa.sherpa.onnx.tts.engine.utils.newLocaleFromCode
import com.k2fsa.sherpa.onnx.tts.engine.utils.toIso3Code

class CheckVoiceData : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val languages = ModelManager.languages().map { newLocaleFromCode(it) }

val intent = Intent().apply {
putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES, arrayListOf(
"eng"
))
putStringArrayListExtra(
TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES,
arrayListOf(*languages.map { it.toIso3Code() }.distinct().toTypedArray())
)
putStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES, arrayListOf())
}
setResult(TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, intent)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,111 +6,177 @@ import android.os.Bundle
import android.speech.tts.TextToSpeech

class GetSampleText : Activity() {
private fun getIso3Code():String{
val language = intent.getStringExtra("language") ?: ""
val country = intent.getStringExtra("country") ?: ""
val variant = intent.getStringExtra("variant") ?: ""

return when {
language.isNotEmpty() && country.isNotEmpty() && variant.isNotEmpty() -> {
"$language-$country-$variant"
}
language.isNotEmpty() && country.isNotEmpty() -> {
"$language-$country"
}
language.isNotEmpty() -> {
language
}
else -> {
""
}
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var result = TextToSpeech.LANG_AVAILABLE
var text: String = ""
when("eng") {
val iso3Code = getIso3Code()
println("GetSampleText: $iso3Code")
when ("eng") {
"ara" -> {
text = "هذا هو محرك تحويل النص إلى كلام باستخدام الجيل القادم من كالدي"
}

"cat" -> {
text = "Aquest és un motor de text a veu que utilitza Kaldi de nova generació"
}

"ces" -> {
text = "Toto je převodník textu na řeč využívající novou generaci kaldi"
}

"dan" -> {
text = "Dette er en tekst til tale-motor, der bruger næste generation af kaldi"
}

"deu" -> {
text = "Dies ist eine Text-to-Speech-Engine, die Kaldi der nächsten Generation verwendet"
text =
"Dies ist eine Text-to-Speech-Engine, die Kaldi der nächsten Generation verwendet"
}

"ell" -> {
text = "Αυτή είναι μια μηχανή κειμένου σε ομιλία που χρησιμοποιεί kaldi επόμενης γενιάς"
text =
"Αυτή είναι μια μηχανή κειμένου σε ομιλία που χρησιμοποιεί kaldi επόμενης γενιάς"
}

"eng" -> {
text = "This is a text-to-speech engine using next generation Kaldi"
}

"fin" -> {
text = "Tämä on tekstistä puheeksi -moottori, joka käyttää seuraavan sukupolven kaldia"
text =
"Tämä on tekstistä puheeksi -moottori, joka käyttää seuraavan sukupolven kaldia"
}

"fra" -> {
text = "Il s'agit d'un moteur de synthèse vocale utilisant Kaldi de nouvelle génération."
text =
"Il s'agit d'un moteur de synthèse vocale utilisant Kaldi de nouvelle génération."
}

"hun" -> {
text = "Ez egy szövegfelolvasó motor a következő generációs kaldi használatával"
}

"isl" -> {
text = "Þetta er texta í tal vél sem notar næstu kynslóð kaldi"
}

"ita" -> {
text = "Questo è un motore di sintesi vocale che utilizza kaldi di nuova generazione"
text =
"Questo è un motore di sintesi vocale che utilizza kaldi di nuova generazione"
}

"kat" -> {
text = "ეს არის ტექსტიდან მეტყველების ძრავა შემდეგი თაობის კალდის გამოყენებით"
}

"kaz" -> {
text = "Бұл келесі буын kaldi көмегімен мәтіннен сөйлеуге арналған қозғалтқыш"
}

"ltz" -> {
text = "Dëst ass en Text-zu-Speech-Motor mat der nächster Generatioun Kaldi"
}

"nep" -> {
text = "यो अर्को पुस्ता काल्डी प्रयोग गरेर स्पीच इन्जिनको पाठ हो"
}

"nld" -> {
text = "Dit is een tekst-naar-spraak-engine die gebruik maakt van Kaldi van de volgende generatie"
text =
"Dit is een tekst-naar-spraak-engine die gebruik maakt van Kaldi van de volgende generatie"
}

"nor" -> {
text = "Dette er en tekst til tale-motor som bruker neste generasjons kaldi"
}

"pol" -> {
text = "Jest to silnik syntezatora mowy wykorzystujący Kaldi nowej generacji"
}

"por" -> {
text = "Este é um mecanismo de conversão de texto em fala usando Kaldi de próxima geração"
text =
"Este é um mecanismo de conversão de texto em fala usando Kaldi de próxima geração"
}

"ron" -> {
text = "Acesta este un motor text to speech care folosește generația următoare de kadi"
text =
"Acesta este un motor text to speech care folosește generația următoare de kadi"
}

"rus" -> {
text = "Это движок преобразования текста в речь, использующий Kaldi следующего поколения."
text =
"Это движок преобразования текста в речь, использующий Kaldi следующего поколения."
}

"slk" -> {
text = "Toto je nástroj na prevod textu na reč využívajúci kaldi novej generácie"
}

"spa" -> {
text = "Este es un motor de texto a voz que utiliza kaldi de próxima generación."
}

"srp" -> {
text = "Ово је механизам за претварање текста у говор који користи калди следеће генерације"
text =
"Ово је механизам за претварање текста у говор који користи калди следеће генерације"
}

"swa" -> {
text = "Haya ni maandishi kwa injini ya hotuba kwa kutumia kizazi kijacho kaldi"
}

"swe" -> {
text = "Detta är en text till tal-motor som använder nästa generations kaldi"
}

"tur" -> {
text = "Bu, yeni nesil kaldi'yi kullanan bir metinden konuşmaya motorudur"
}

"ukr" -> {
text = "Це механізм перетворення тексту на мовлення, який використовує kaldi нового покоління"
text =
"Це механізм перетворення тексту на мовлення, який використовує kaldi нового покоління"
}

"vie" -> {
text = "Đây là công cụ chuyển văn bản thành giọng nói sử dụng kaldi thế hệ tiếp theo"
text =
"Đây là công cụ chuyển văn bản thành giọng nói sử dụng kaldi thế hệ tiếp theo"
}

"zho", "cmn" -> {
text = "使用新一代卡尔迪的语音合成引擎"
}

else -> {
result = TextToSpeech.LANG_NOT_SUPPORTED
}
}

val intent = Intent().apply{
if(result == TextToSpeech.LANG_AVAILABLE) {
val intent = Intent().apply {
if (result == TextToSpeech.LANG_AVAILABLE) {
putExtra(TextToSpeech.Engine.EXTRA_SAMPLE_TEXT, text)
} else {
putExtra("sampleText", text)
Expand Down
Loading

0 comments on commit ae1d8bb

Please sign in to comment.