Browse Source

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

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

47
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,27 +1462,34 @@ 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;
sourceLanguageCode.value,
targetLanguageCode.value
];
Logger.info('重新初始化ASR服务,支持语言: $asrSupportedLanguages');
await _asrService.initialize(supportedLanguages: asrSupportedLanguages);
var recognitionStream = await _asrService.recognizeCallback(); if (currentMode.value == 'audioVideo') {
_recognitionSubscription?.cancel(); asrSupportedLanguages = [sourceLanguageCode.value];
_recognitionSubscription = } else {
recognitionStream.listen(_handleRecognitionEvent); asrSupportedLanguages = [
sourceLanguageCode.value,
targetLanguageCode.value
];
}
if (currentMode.value == "call") { if (currentMode.value == "call") {
_initializeCallModeTranslationService(); _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服务重新初始化成功'); Logger.info('ASR服务重新初始化成功');
} catch (e) { } catch (e) {

Loading…
Cancel
Save