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