Browse Source

refactor(translation): 优化ASR服务初始化逻辑并支持通话模式

- 移除未使用的ASR支持语言列表初始化代码
- 在通话模式中初始化AST服务并配置支持语言
- 根据当前模式动态调整ASR支持语言列表
- 统一先停止旧识别再进行重新初始化
newdev_shunjiawei
lxm 12 months ago
parent
commit
eee45e7c10
  1. 31
      lib/modules/translation/controllers/translation_controller.dart

31
lib/modules/translation/controllers/translation_controller.dart

@ -588,10 +588,10 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
await _translationService.initialize(); await _translationService.initialize();
// 初始化 ASR 服务时,明确指定需要支持的语言 // 初始化 ASR 服务时,明确指定需要支持的语言
final List<String> asrSupportedLanguages = [ // final List<String> asrSupportedLanguages = [
sourceLanguageCode.value, // sourceLanguageCode.value,
targetLanguageCode.value // targetLanguageCode.value
]; // ];
//Logger.info('2初始化ASR服务,支持语言: $asrSupportedLanguages'); //Logger.info('2初始化ASR服务,支持语言: $asrSupportedLanguages');
//await _asrService.initialize(supportedLanguages: asrSupportedLanguages); //await _asrService.initialize(supportedLanguages: asrSupportedLanguages);
@ -811,6 +811,12 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
/// 配置通话模式 /// 配置通话模式
Future<void> _configureCallMode() async { Future<void> _configureCallMode() async {
final List<String> callModeLanguages = [
sourceLanguageCode.value,
targetLanguageCode.value
];
Logger.info('1初始化AST服务,支持语言: $callModeLanguages'); //ast=asr+translate
await _astService.initialize(supportedLanguages: callModeLanguages);
bleManager.openA2DPDecoder(); bleManager.openA2DPDecoder();
_audioSourceType = true; _audioSourceType = true;
isTtsEnabled.value = false; isTtsEnabled.value = false;
@ -1456,16 +1462,26 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
} }
} }
/// 重新初始化ASR服务以支持新的语言 /// 重新初始化ASR服务
Future<void> _reinitializeAsrService() async { Future<void> _reinitializeAsrService() async {
try { try {
//1.统一先停止旧识别
await stopRecognition(); await stopRecognition();
final List<String> asrSupportedLanguages = [ late final List<String> asrSupportedLanguages;
if (currentMode.value == 'audioVideo') {
asrSupportedLanguages = [sourceLanguageCode.value];
} else {
asrSupportedLanguages = [
sourceLanguageCode.value, sourceLanguageCode.value,
targetLanguageCode.value targetLanguageCode.value
]; ];
}
if (currentMode.value == "call") {
_initializeCallModeTranslationService();
} else {
Logger.info('重新初始化ASR服务,支持语言: $asrSupportedLanguages'); Logger.info('重新初始化ASR服务,支持语言: $asrSupportedLanguages');
await _asrService.initialize(supportedLanguages: asrSupportedLanguages); await _asrService.initialize(supportedLanguages: asrSupportedLanguages);
@ -1474,9 +1490,6 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
_recognitionSubscription?.cancel(); _recognitionSubscription?.cancel();
_recognitionSubscription = _recognitionSubscription =
recognitionStream.listen(_handleRecognitionEvent); recognitionStream.listen(_handleRecognitionEvent);
if (currentMode.value == "call") {
_initializeCallModeTranslationService();
} }
Logger.info('ASR服务重新初始化成功'); Logger.info('ASR服务重新初始化成功');
} catch (e) { } catch (e) {

Loading…
Cancel
Save