|
|
@ -1,5 +1,6 @@ |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import '../../core/utils/logger.dart'; |
|
|
import '../../core/utils/logger.dart'; |
|
|
|
|
|
import '../models/user_Info.dart'; |
|
|
import '../services/speech_factory.dart'; |
|
|
import '../services/speech_factory.dart'; |
|
|
import 'language_configs/azure_language_config.dart'; |
|
|
import 'language_configs/azure_language_config.dart'; |
|
|
import 'language_configs/google_language_config.dart'; |
|
|
import 'language_configs/google_language_config.dart'; |
|
|
@ -22,9 +23,12 @@ class LanguageInfo { |
|
|
/// Azure ASR 语言代码,如 'zh-CN', 'en-US' |
|
|
/// Azure ASR 语言代码,如 'zh-CN', 'en-US' |
|
|
final String asrCode; |
|
|
final String asrCode; |
|
|
|
|
|
|
|
|
/// Azure TTS 语音名称 |
|
|
/// Azure TTS 语音名称(女声) |
|
|
final String ttsVoiceName; |
|
|
final String ttsVoiceName; |
|
|
|
|
|
|
|
|
|
|
|
/// Azure TTS 语音名称(男声) |
|
|
|
|
|
final String ttsVoiceNameMale; |
|
|
|
|
|
|
|
|
/// 备注信息 |
|
|
/// 备注信息 |
|
|
final String? note; |
|
|
final String? note; |
|
|
|
|
|
|
|
|
@ -34,6 +38,7 @@ class LanguageInfo { |
|
|
required this.englishName, |
|
|
required this.englishName, |
|
|
required this.asrCode, |
|
|
required this.asrCode, |
|
|
required this.ttsVoiceName, |
|
|
required this.ttsVoiceName, |
|
|
|
|
|
required this.ttsVoiceNameMale, |
|
|
this.note, |
|
|
this.note, |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
@ -75,6 +80,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Chinese (simplified)', |
|
|
englishName: 'Chinese (simplified)', |
|
|
asrCode: 'zh-CN', |
|
|
asrCode: 'zh-CN', |
|
|
ttsVoiceName: 'zh-CN-XiaoxiaoNeural', |
|
|
ttsVoiceName: 'zh-CN-XiaoxiaoNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'zh-CN-YunxiNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -83,6 +89,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Chinese (traditional)', |
|
|
englishName: 'Chinese (traditional)', |
|
|
asrCode: 'zh-TW', |
|
|
asrCode: 'zh-TW', |
|
|
ttsVoiceName: 'zh-TW-HsiaoChenNeural', |
|
|
ttsVoiceName: 'zh-TW-HsiaoChenNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'zh-TW-YunJheNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -91,6 +98,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Chinese (Hongkong traditional)', |
|
|
englishName: 'Chinese (Hongkong traditional)', |
|
|
asrCode: 'zh-HK', |
|
|
asrCode: 'zh-HK', |
|
|
ttsVoiceName: 'zh-HK-HiuMaanNeural', |
|
|
ttsVoiceName: 'zh-HK-HiuMaanNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'zh-HK-WanLungNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
// 英语相关 |
|
|
// 英语相关 |
|
|
@ -100,6 +108,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'English', |
|
|
englishName: 'English', |
|
|
asrCode: 'en-US', |
|
|
asrCode: 'en-US', |
|
|
ttsVoiceName: 'en-US-AriaNeural', |
|
|
ttsVoiceName: 'en-US-AriaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'en-US-GuyNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
// 日语相关 |
|
|
// 日语相关 |
|
|
@ -109,6 +118,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Japanese', |
|
|
englishName: 'Japanese', |
|
|
asrCode: 'ja-JP', |
|
|
asrCode: 'ja-JP', |
|
|
ttsVoiceName: 'ja-JP-NanamiNeural', |
|
|
ttsVoiceName: 'ja-JP-NanamiNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ja-JP-KeitaNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
// 韩语相关 |
|
|
// 韩语相关 |
|
|
@ -118,6 +128,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Korean', |
|
|
englishName: 'Korean', |
|
|
asrCode: 'ko-KR', |
|
|
asrCode: 'ko-KR', |
|
|
ttsVoiceName: 'ko-KR-SunHiNeural', |
|
|
ttsVoiceName: 'ko-KR-SunHiNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ko-KR-InJoonNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
// 欧洲语言 |
|
|
// 欧洲语言 |
|
|
@ -127,6 +138,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'French', |
|
|
englishName: 'French', |
|
|
asrCode: 'fr-FR', |
|
|
asrCode: 'fr-FR', |
|
|
ttsVoiceName: 'fr-FR-DeniseNeural', |
|
|
ttsVoiceName: 'fr-FR-DeniseNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'fr-FR-HenriNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -135,6 +147,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Spanish', |
|
|
englishName: 'Spanish', |
|
|
asrCode: 'es-ES', |
|
|
asrCode: 'es-ES', |
|
|
ttsVoiceName: 'es-ES-ElviraNeural', |
|
|
ttsVoiceName: 'es-ES-ElviraNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'es-ES-AlvaroNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -143,6 +156,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Portuguese', |
|
|
englishName: 'Portuguese', |
|
|
asrCode: 'pt-BR', |
|
|
asrCode: 'pt-BR', |
|
|
ttsVoiceName: 'pt-BR-FranciscaNeural', |
|
|
ttsVoiceName: 'pt-BR-FranciscaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'pt-BR-AntonioNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -151,6 +165,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Italian', |
|
|
englishName: 'Italian', |
|
|
asrCode: 'it-IT', |
|
|
asrCode: 'it-IT', |
|
|
ttsVoiceName: 'it-IT-ElsaNeural', |
|
|
ttsVoiceName: 'it-IT-ElsaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'it-IT-DiegoNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -159,6 +174,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'German', |
|
|
englishName: 'German', |
|
|
asrCode: 'de-DE', |
|
|
asrCode: 'de-DE', |
|
|
ttsVoiceName: 'de-DE-KatjaNeural', |
|
|
ttsVoiceName: 'de-DE-KatjaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'de-DE-ConradNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -167,6 +183,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Russian', |
|
|
englishName: 'Russian', |
|
|
asrCode: 'ru-RU', |
|
|
asrCode: 'ru-RU', |
|
|
ttsVoiceName: 'ru-RU-SvetlanaNeural', |
|
|
ttsVoiceName: 'ru-RU-SvetlanaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ru-RU-DmitryNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -175,6 +192,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Polish', |
|
|
englishName: 'Polish', |
|
|
asrCode: 'pl-PL', |
|
|
asrCode: 'pl-PL', |
|
|
ttsVoiceName: 'pl-PL-AgnieszkaNeural', |
|
|
ttsVoiceName: 'pl-PL-AgnieszkaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'pl-PL-MarekNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -183,6 +201,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Dutch', |
|
|
englishName: 'Dutch', |
|
|
asrCode: 'nl-NL', |
|
|
asrCode: 'nl-NL', |
|
|
ttsVoiceName: 'nl-NL-ColetteNeural', |
|
|
ttsVoiceName: 'nl-NL-ColetteNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'nl-NL-MaartenNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -191,6 +210,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Swedish', |
|
|
englishName: 'Swedish', |
|
|
asrCode: 'sv-SE', |
|
|
asrCode: 'sv-SE', |
|
|
ttsVoiceName: 'sv-SE-SofieNeural', |
|
|
ttsVoiceName: 'sv-SE-SofieNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'sv-SE-MattiasNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -199,6 +219,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Czech', |
|
|
englishName: 'Czech', |
|
|
asrCode: 'cs-CZ', |
|
|
asrCode: 'cs-CZ', |
|
|
ttsVoiceName: 'cs-CZ-VlastaNeural', |
|
|
ttsVoiceName: 'cs-CZ-VlastaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'cs-CZ-AntoninNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -207,6 +228,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Modern Greek', |
|
|
englishName: 'Modern Greek', |
|
|
asrCode: 'el-GR', |
|
|
asrCode: 'el-GR', |
|
|
ttsVoiceName: 'el-GR-AthinaNeural', |
|
|
ttsVoiceName: 'el-GR-AthinaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'el-GR-NestorasNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -215,6 +237,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Romanian', |
|
|
englishName: 'Romanian', |
|
|
asrCode: 'ro-RO', |
|
|
asrCode: 'ro-RO', |
|
|
ttsVoiceName: 'ro-RO-AlinaNeural', |
|
|
ttsVoiceName: 'ro-RO-AlinaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ro-RO-EmilNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -223,6 +246,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Hungarian', |
|
|
englishName: 'Hungarian', |
|
|
asrCode: 'hu-HU', |
|
|
asrCode: 'hu-HU', |
|
|
ttsVoiceName: 'hu-HU-NoemiNeural', |
|
|
ttsVoiceName: 'hu-HU-NoemiNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'hu-HU-TamasNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -231,6 +255,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Ukrainian', |
|
|
englishName: 'Ukrainian', |
|
|
asrCode: 'uk-UA', |
|
|
asrCode: 'uk-UA', |
|
|
ttsVoiceName: 'uk-UA-PolinaNeural', |
|
|
ttsVoiceName: 'uk-UA-PolinaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'uk-UA-OstapNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -239,6 +264,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Danish', |
|
|
englishName: 'Danish', |
|
|
asrCode: 'da-DK', |
|
|
asrCode: 'da-DK', |
|
|
ttsVoiceName: 'da-DK-ChristelNeural', |
|
|
ttsVoiceName: 'da-DK-ChristelNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'da-DK-JeppeNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -247,6 +273,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Finnish', |
|
|
englishName: 'Finnish', |
|
|
asrCode: 'fi-FI', |
|
|
asrCode: 'fi-FI', |
|
|
ttsVoiceName: 'fi-FI-NooraNeural', |
|
|
ttsVoiceName: 'fi-FI-NooraNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'fi-FI-HarriNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -255,6 +282,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Norwegian', |
|
|
englishName: 'Norwegian', |
|
|
asrCode: 'nb-NO', |
|
|
asrCode: 'nb-NO', |
|
|
ttsVoiceName: 'nb-NO-IselinNeural', |
|
|
ttsVoiceName: 'nb-NO-IselinNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'nb-NO-FinnNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -263,6 +291,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Croatian', |
|
|
englishName: 'Croatian', |
|
|
asrCode: 'hr-HR', |
|
|
asrCode: 'hr-HR', |
|
|
ttsVoiceName: 'hr-HR-GabrijelaNeural', |
|
|
ttsVoiceName: 'hr-HR-GabrijelaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'hr-HR-SreckoNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -271,6 +300,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Catalan', |
|
|
englishName: 'Catalan', |
|
|
asrCode: 'ca-ES', |
|
|
asrCode: 'ca-ES', |
|
|
ttsVoiceName: 'ca-ES-JoanaNeural', |
|
|
ttsVoiceName: 'ca-ES-JoanaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ca-ES-EnricNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
// 亚洲语言 |
|
|
// 亚洲语言 |
|
|
@ -280,6 +310,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Arabic', |
|
|
englishName: 'Arabic', |
|
|
asrCode: 'ar-EG', |
|
|
asrCode: 'ar-EG', |
|
|
ttsVoiceName: 'ar-EG-SalmaNeural', |
|
|
ttsVoiceName: 'ar-EG-SalmaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ar-EG-ShakirNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -288,6 +319,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Thai', |
|
|
englishName: 'Thai', |
|
|
asrCode: 'th-TH', |
|
|
asrCode: 'th-TH', |
|
|
ttsVoiceName: 'th-TH-PremwadeeNeural', |
|
|
ttsVoiceName: 'th-TH-PremwadeeNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'th-TH-NiwatNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -296,6 +328,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Vietnamese', |
|
|
englishName: 'Vietnamese', |
|
|
asrCode: 'vi-VN', |
|
|
asrCode: 'vi-VN', |
|
|
ttsVoiceName: 'vi-VN-HoaiMyNeural', |
|
|
ttsVoiceName: 'vi-VN-HoaiMyNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'vi-VN-NamMinhNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -304,6 +337,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Indonesian', |
|
|
englishName: 'Indonesian', |
|
|
asrCode: 'id-ID', |
|
|
asrCode: 'id-ID', |
|
|
ttsVoiceName: 'id-ID-GadisNeural', |
|
|
ttsVoiceName: 'id-ID-GadisNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'id-ID-ArdiNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -312,6 +346,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Hindi', |
|
|
englishName: 'Hindi', |
|
|
asrCode: 'hi-IN', |
|
|
asrCode: 'hi-IN', |
|
|
ttsVoiceName: 'hi-IN-SwaraNeural', |
|
|
ttsVoiceName: 'hi-IN-SwaraNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'hi-IN-MadhurNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -319,7 +354,8 @@ class LanguageManager extends GetxService { |
|
|
chineseName: '土耳其语', |
|
|
chineseName: '土耳其语', |
|
|
englishName: 'Turkish', |
|
|
englishName: 'Turkish', |
|
|
asrCode: 'tr-TR', |
|
|
asrCode: 'tr-TR', |
|
|
ttsVoiceName: 'tr-TR-SedaNeural', |
|
|
ttsVoiceName: 'tr-TR-EmelNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'tr-TR-AhmetNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -328,6 +364,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Malay', |
|
|
englishName: 'Malay', |
|
|
asrCode: 'ms-MY', |
|
|
asrCode: 'ms-MY', |
|
|
ttsVoiceName: 'ms-MY-YasminNeural', |
|
|
ttsVoiceName: 'ms-MY-YasminNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ms-MY-OsmanNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -336,6 +373,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Bengali', |
|
|
englishName: 'Bengali', |
|
|
asrCode: 'bn-IN', |
|
|
asrCode: 'bn-IN', |
|
|
ttsVoiceName: 'bn-IN-TanishaaNeural', |
|
|
ttsVoiceName: 'bn-IN-TanishaaNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'bn-IN-BashkarNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -344,6 +382,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Tamil', |
|
|
englishName: 'Tamil', |
|
|
asrCode: 'ta-IN', |
|
|
asrCode: 'ta-IN', |
|
|
ttsVoiceName: 'ta-IN-PallaviNeural', |
|
|
ttsVoiceName: 'ta-IN-PallaviNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ta-IN-ValluvarNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -352,6 +391,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Telugu', |
|
|
englishName: 'Telugu', |
|
|
asrCode: 'te-IN', |
|
|
asrCode: 'te-IN', |
|
|
ttsVoiceName: 'te-IN-ShrutiNeural', |
|
|
ttsVoiceName: 'te-IN-ShrutiNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'te-IN-MohanNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -360,6 +400,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Marathi', |
|
|
englishName: 'Marathi', |
|
|
asrCode: 'mr-IN', |
|
|
asrCode: 'mr-IN', |
|
|
ttsVoiceName: 'mr-IN-AarohiNeural', |
|
|
ttsVoiceName: 'mr-IN-AarohiNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'mr-IN-ManoharNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -368,6 +409,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Urdu', |
|
|
englishName: 'Urdu', |
|
|
asrCode: 'ur-IN', |
|
|
asrCode: 'ur-IN', |
|
|
ttsVoiceName: 'ur-IN-GulNeural', |
|
|
ttsVoiceName: 'ur-IN-GulNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'ur-IN-SalmanNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
_addLanguage( |
|
|
_addLanguage( |
|
|
@ -376,6 +418,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Persian', |
|
|
englishName: 'Persian', |
|
|
asrCode: 'fa-IR', |
|
|
asrCode: 'fa-IR', |
|
|
ttsVoiceName: 'fa-IR-DilaraNeural', |
|
|
ttsVoiceName: 'fa-IR-DilaraNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'fa-IR-FaridNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
// 非洲语言 |
|
|
// 非洲语言 |
|
|
@ -385,6 +428,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: 'Swahili', |
|
|
englishName: 'Swahili', |
|
|
asrCode: 'sw-KE', |
|
|
asrCode: 'sw-KE', |
|
|
ttsVoiceName: 'sw-KE-ZuriNeural', |
|
|
ttsVoiceName: 'sw-KE-ZuriNeural', |
|
|
|
|
|
ttsVoiceNameMale: 'sw-KE-RafikiNeural', |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
Logger.info('语言管理器初始化完成,共加载 ${_languageMap.length} 种语言'); |
|
|
Logger.info('语言管理器初始化完成,共加载 ${_languageMap.length} 种语言'); |
|
|
@ -397,6 +441,7 @@ class LanguageManager extends GetxService { |
|
|
required String englishName, |
|
|
required String englishName, |
|
|
required String asrCode, |
|
|
required String asrCode, |
|
|
required String ttsVoiceName, |
|
|
required String ttsVoiceName, |
|
|
|
|
|
required String ttsVoiceNameMale, |
|
|
String? note, |
|
|
String? note, |
|
|
}) { |
|
|
}) { |
|
|
final languageInfo = LanguageInfo( |
|
|
final languageInfo = LanguageInfo( |
|
|
@ -405,6 +450,7 @@ class LanguageManager extends GetxService { |
|
|
englishName: englishName, |
|
|
englishName: englishName, |
|
|
asrCode: asrCode, |
|
|
asrCode: asrCode, |
|
|
ttsVoiceName: ttsVoiceName, |
|
|
ttsVoiceName: ttsVoiceName, |
|
|
|
|
|
ttsVoiceNameMale: ttsVoiceNameMale, |
|
|
note: note, |
|
|
note: note, |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
@ -488,17 +534,28 @@ class LanguageManager extends GetxService { |
|
|
return languageInfo?.shortCode; |
|
|
return languageInfo?.shortCode; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 根据 ASR 代码获取 TTS 语音名称 |
|
|
/// 根据用户性别获取对应的 TTS 语音名称 |
|
|
|
|
|
/// gender: 0=未设置(默认女声), 1=男, 2=女 |
|
|
|
|
|
String? _getVoiceByGender(LanguageInfo? info) { |
|
|
|
|
|
if (info == null) return null; |
|
|
|
|
|
try { |
|
|
|
|
|
final gender = User.instance.gender; |
|
|
|
|
|
return gender == 1 ? info.ttsVoiceNameMale : info.ttsVoiceName; |
|
|
|
|
|
} catch (_) { |
|
|
|
|
|
return info.ttsVoiceName; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// 根据 ASR 代码获取 TTS 语音名称(根据用户性别自动选择) |
|
|
String? getTtsVoiceNameByAsrCode(String asrCode) { |
|
|
String? getTtsVoiceNameByAsrCode(String asrCode) { |
|
|
final languageInfo = _languageMap[asrCode]; |
|
|
return _getVoiceByGender(_languageMap[asrCode]); |
|
|
return languageInfo?.ttsVoiceName; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 根据中文名称获取 TTS 语音名称 |
|
|
/// 根据中文名称获取 TTS 语音名称(根据用户性别自动选择) |
|
|
String? getTtsVoiceNameByChineseName(String chineseName) { |
|
|
String? getTtsVoiceNameByChineseName(String chineseName) { |
|
|
final asrCode = _chineseNameToAsrCodeMap[chineseName]; |
|
|
final asrCode = _chineseNameToAsrCodeMap[chineseName]; |
|
|
if (asrCode == null) return null; |
|
|
if (asrCode == null) return null; |
|
|
return _languageMap[asrCode]?.ttsVoiceName; |
|
|
return _getVoiceByGender(_languageMap[asrCode]); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 根据短代码获取中文名称 |
|
|
/// 根据短代码获取中文名称 |
|
|
@ -515,11 +572,11 @@ class LanguageManager extends GetxService { |
|
|
return _languageMap[asrCode]?.englishName; |
|
|
return _languageMap[asrCode]?.englishName; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 根据短代码获取 TTS 语音名称 |
|
|
/// 根据短代码获取 TTS 语音名称(根据用户性别自动选择) |
|
|
String? getTtsVoiceNameByShortCode(String shortCode) { |
|
|
String? getTtsVoiceNameByShortCode(String shortCode) { |
|
|
final asrCode = _shortCodeToAsrCodeMap[shortCode]; |
|
|
final asrCode = _shortCodeToAsrCodeMap[shortCode]; |
|
|
if (asrCode == null) return null; |
|
|
if (asrCode == null) return null; |
|
|
return _languageMap[asrCode]?.ttsVoiceName; |
|
|
return _getVoiceByGender(_languageMap[asrCode]); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 获取中文名称到 ASR 代码的映射 |
|
|
/// 获取中文名称到 ASR 代码的映射 |
|
|
|