From 9a17f818d2b34590aae8155797f8ea9599a9139a Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Wed, 5 Nov 2025 19:57:58 +0800 Subject: [PATCH] =?UTF-8?q?refactor(translation):=20=E4=BC=98=E5=8C=96ASR?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E6=94=AF=E6=8C=81=E9=80=9A=E8=AF=9D=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除未使用的ASR支持语言列表初始化代码 - 在通话模式中初始化AST服务并配置支持语言 - 根据当前模式动态调整ASR支持语言列表 - 统一先停止旧识别再进行重新初始化 --- .../controllers/translation_controller.dart | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) 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) {