Browse Source

Merge branch 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

weicu
lxm 12 months ago
parent
commit
ccbd9b1b39
  1. 21
      lib/data/services/meeting/meeting_task_service.dart
  2. 2
      lib/data/services/meeting/meeting_upload_service.dart
  3. 5
      lib/modules/meeting/controllers/meeting_details_controller.dart
  4. 1
      lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart
  5. 8
      lib/modules/pairing/controllers/pairing_controller.dart
  6. 30
      lib/modules/splash/controllers/splash_controller.dart
  7. 6
      local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureTtsHelper.swift

21
lib/data/services/meeting/meeting_task_service.dart

@ -56,8 +56,8 @@ class MeetingTaskService extends GetxService {
_executeTask();
}
Future<void> addTask(int id, String audiourl, String taskid, String language,
String prompt, String outline) async {
Future<void> addTask(int id, String audiourl, String taskid, bool isSpeaker,
String language, String prompt, String outline) async {
if (audiourl.isEmpty) {
Map uploadData = _uploadService.uploadList.firstWhere(
(element) => element['id'] == id,
@ -66,23 +66,25 @@ class MeetingTaskService extends GetxService {
if (uploadData.isNotEmpty) {
if (uploadData['audiourl'].isEmpty) {
uploadData['isTask'] = true;
uploadData['isSpeaker'] = isSpeaker;
uploadData['language'] = language;
uploadData['prompt'] = prompt;
uploadData['outline'] = outline;
} else {
await addTaskList(
id, uploadData['audiourl'], taskid, language, prompt, outline);
await addTaskList(id, uploadData['audiourl'], taskid, isSpeaker,
language, prompt, outline);
}
}
} else {
await addTaskList(id, audiourl, taskid, language, prompt, outline);
await addTaskList(
id, audiourl, taskid, isSpeaker, language, prompt, outline);
}
}
Future<void> addTaskList(int id, String audiourl, String taskId,
String language, String prompt, String outline) async {
bool isSpeaker, String language, String prompt, String outline) async {
if (taskId.isEmpty) {
taskId = await _submitTask(audiourl, language);
taskId = await _submitTask(audiourl, isSpeaker, language);
}
await SqfliteApi.editMeeting(id, {'tasktype': 1, 'taskid': taskId});
_taskList.add({
@ -131,7 +133,8 @@ class MeetingTaskService extends GetxService {
}
}
Future<String> _submitTask(String audiourl, String language) async {
Future<String> _submitTask(
String audiourl, bool isSpeaker, String language) async {
String format = _getFileType(audiourl);
final requestBody = jsonEncode({
@ -149,7 +152,7 @@ class MeetingTaskService extends GetxService {
},
"additions": {
"language": language,
"with_speaker_info": "True",
"with_speaker_info": isSpeaker ? "True" : "False",
}
});

2
lib/data/services/meeting/meeting_upload_service.dart

@ -41,6 +41,7 @@ class MeetingUploadService extends GetxService {
'rootdir': rootDir,
'audiourl': '',
'isTask': false,
'isSpeaker': true,
'language': '',
'prompt': '',
'outline': '',
@ -77,6 +78,7 @@ class MeetingUploadService extends GetxService {
element['id'],
audiourl,
'',
element['isSpeaker'],
element['language'],
element['prompt'],
element['outline'],

5
lib/modules/meeting/controllers/meeting_details_controller.dart

@ -245,13 +245,14 @@ class MeetingDetailsController extends GetxController
}
}
void summaryCreate(String language, String prompt, String outline) async {
void summaryCreate(
bool isSpeaker, String language, String prompt, String outline) async {
EasyLoading.show();
_everType = 2;
String audiourl = meetingData.value.audiourl;
String taskId = meetingDetails.value.taskid;
await _meetingTaskService.addTask(
id, audiourl, taskId, language, prompt, outline);
id, audiourl, taskId, isSpeaker, language, prompt, outline);
meetingDetails.value.tasktype = 1;
meetingDetails.refresh();
EasyLoading.dismiss();

1
lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart

@ -289,6 +289,7 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
);
} else {
_controller.summaryCreate(
_isSpeaker,
_language,
_templateData['prompt'],
_templateData['outline'],

8
lib/modules/pairing/controllers/pairing_controller.dart

@ -732,7 +732,13 @@ class PairingController extends GetxController with WidgetsBindingObserver {
try {
// 设置超时定时器
_bleTimeoutTimer?.cancel();
_bleTimeoutTimer = Timer(const Duration(seconds: 20), () {
_bleTimeoutTimer = Timer(const Duration(seconds: 10), () async {
final currentBleState = await _bleManager.getConnectionState();
if (currentBleState == 2) {
_bleTimeoutTimer?.cancel();
_transition(PairingState.completed);
return;
}
if (_currentState.value == PairingState.waitingBle) {
_setError(ErrorType.bleTimeout,
'bleConnectionTimeoutRetry'.tr); //BLE连接超时,请重启耳机后再试

30
lib/modules/splash/controllers/splash_controller.dart

@ -108,30 +108,30 @@ class SplashController extends GetxController {
// 无限循环直到网络检查成功
try {
final connectivityResult = await Connectivity().checkConnectivity();
final hasConnectivity =
!connectivityResult.contains(ConnectivityResult.none);
// 检查是否有网络连接
if (connectivityResult.contains(ConnectivityResult.none)) {
// 显示弹窗并等待用户操作
await _showNoNetworkDialogAndWait();
continue; // 重新检查
// 条件变更:满足“有网络连接”或“能访问至少一个测试地址”之一即通过
if (hasConnectivity) {
Logger.d(_tag, '网络检查通过:检测到设备网络连接');
break;
}
// 进一步检查网络连通性
// 若设备层面无网络标识,再尝试外网连通性
final hasInternet = await _checkInternetConnection();
if (!hasInternet) {
// 显示弹窗并等待用户操作
await _showNoNetworkDialogAndWait();
continue; // 重新检查
if (hasInternet) {
Logger.d(_tag, '网络检查通过:可访问外网测试地址');
break;
}
// 网络检查成功,跳出循环
Logger.d(_tag, '网络检查成功,继续APP初始化流程');
break;
// 两个条件都不满足,提示并重试
await _showNoNetworkDialogAndWait();
continue;
} catch (e) {
Logger.e(_tag, '网络检查失败: $e');
// 显示弹窗并等待用户操作
Logger.e(_tag, '网络检查异常: $e');
await _showNoNetworkDialogAndWait();
continue; // 重新检查
continue;
}
}
}

6
local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureTtsHelper.swift

@ -266,8 +266,11 @@ public class AzureTtsHelper: NSObject, ITtsService {
lastSpokenText = ""
// 重置计数器
pendingTextCount = 0
// 清空所有待处理任务并重置处理状态
taskLock.lock()
pendingTasks.removeAll()
isProcessing = false // 重置处理状态
taskLock.unlock()
do {
@ -474,6 +477,9 @@ public class AzureTtsHelper: NSObject, ITtsService {
*/
private func recreateSynthesizer() {
do {
// 强制释放旧的合成器
synthesizer = nil
// 创建音频配置
let audioConfig: SPXAudioConfiguration?
if !useInternalPlayer || customAudioOutputStream != nil {

Loading…
Cancel
Save