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();
// 初始化 ASR 服务时,明确指定需要支持的语言
final List<String> asrSupportedLanguages = [
sourceLanguageCode.value,
targetLanguageCode.value
];
// final List<String> 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<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();
_audioSourceType = true;
isTtsEnabled.value = false;
@ -1456,27 +1462,34 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
}
}
/// 重新初始化ASR服务以支持新的语言
/// 重新初始化ASR服务
Future<void> _reinitializeAsrService() async {
try {
//1.统一先停止旧识别
await stopRecognition();
final List<String> asrSupportedLanguages = [
sourceLanguageCode.value,
targetLanguageCode.value
];
Logger.info('重新初始化ASR服务,支持语言: $asrSupportedLanguages');
await _asrService.initialize(supportedLanguages: asrSupportedLanguages);
late final List<String> 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) {

Loading…
Cancel
Save