|
|
@ -318,6 +318,9 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
/// [speakerId] 说话者ID |
|
|
/// [speakerId] 说话者ID |
|
|
Future<void> _startFaceToFaceRecognition(int speakerId) async { |
|
|
Future<void> _startFaceToFaceRecognition(int speakerId) async { |
|
|
try { |
|
|
try { |
|
|
|
|
|
if (_asrSessionStartTime == null) { |
|
|
|
|
|
await _initializeSession(); |
|
|
|
|
|
} |
|
|
await _asrService.startContinuousRecognition(_audioSourceType); //开启识别 |
|
|
await _asrService.startContinuousRecognition(_audioSourceType); //开启识别 |
|
|
_startAsrActiveTracking(); //开启识别活动跟踪 |
|
|
_startAsrActiveTracking(); //开启识别活动跟踪 |
|
|
if (isRecording.value) { |
|
|
if (isRecording.value) { |
|
|
@ -347,6 +350,7 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
} |
|
|
} |
|
|
await _asrService.stopContinuousRecognition(); |
|
|
await _asrService.stopContinuousRecognition(); |
|
|
_stopAsrActiveTracking(); //停止识别活动跟踪 |
|
|
_stopAsrActiveTracking(); //停止识别活动跟踪 |
|
|
|
|
|
_recordAsrUsageStats(sourceLanguage.value); |
|
|
isRecognizing.value = false; |
|
|
isRecognizing.value = false; |
|
|
currentSessionId = null; |
|
|
currentSessionId = null; |
|
|
|
|
|
|
|
|
@ -902,6 +906,13 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
await _astService.stopContinuousTranslation(); |
|
|
await _astService.stopContinuousTranslation(); |
|
|
} |
|
|
} |
|
|
_stopAsrActiveTracking(); |
|
|
_stopAsrActiveTracking(); |
|
|
|
|
|
final langName = _languageManager |
|
|
|
|
|
.getChineseNameByAsrCode( |
|
|
|
|
|
(detectedLanguageCode.isNotEmpty |
|
|
|
|
|
? detectedLanguageCode |
|
|
|
|
|
: sourceLanguageCode.value)) ?? |
|
|
|
|
|
'未知'; |
|
|
|
|
|
_recordAsrUsageStats(langName); |
|
|
isRecognizing.value = false; |
|
|
isRecognizing.value = false; |
|
|
currentSessionId = null; |
|
|
currentSessionId = null; |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
@ -1197,7 +1208,6 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
|
|
|
|
|
|
Logger.info( |
|
|
Logger.info( |
|
|
'翻译统计: 源文本${sourceText.length}字符, 模式${currentMode.value}, 语言对$sourceLanguageName→$targetLanguageName'); |
|
|
'翻译统计: 源文本${sourceText.length}字符, 模式${currentMode.value}, 语言对$sourceLanguageName→$targetLanguageName'); |
|
|
_recordAsrUsageStats(sourceLanguageName); |
|
|
|
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
Logger.error('记录翻译统计失败: $e'); |
|
|
Logger.error('记录翻译统计失败: $e'); |
|
|
} |
|
|
} |
|
|
@ -1579,6 +1589,10 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
|
|
|
|
|
|
Logger.info( |
|
|
Logger.info( |
|
|
'ASR会话统计: 总时长${totalDurationSeconds}秒, 实际活跃时长${effectiveDurationSeconds}秒, 语言$language'); |
|
|
'ASR会话统计: 总时长${totalDurationSeconds}秒, 实际活跃时长${effectiveDurationSeconds}秒, 语言$language'); |
|
|
|
|
|
_asrSessionStartTime = null; |
|
|
|
|
|
_asrActiveDuration = Duration.zero; |
|
|
|
|
|
_isAsrActive = false; |
|
|
|
|
|
_asrActiveStartTime = null; |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
Logger.error('记录ASR统计失败: $e'); |
|
|
Logger.error('记录ASR统计失败: $e'); |
|
|
} |
|
|
} |
|
|
|