feat: 1,注释对讲调试代码2,iOS端APP到锁的声音调优(失真变好)3,新增降噪算法
This commit is contained in:
parent
148541bcb2
commit
08b3847e60
@ -55,11 +55,11 @@ FutureOr<void> main() async {
|
||||
}
|
||||
});
|
||||
|
||||
//ToDo: 增加对讲调试、正式可删除
|
||||
runApp(MultiProvider(providers: [
|
||||
ChangeNotifierProvider(create: (_) => DebugInfoModel()),
|
||||
], child: MyApp(isLogin: isLogin)));
|
||||
// runApp(MyApp(isLogin: isLogin));
|
||||
// //ToDo: 增加对讲调试、正式可删除
|
||||
// runApp(MultiProvider(providers: [
|
||||
// ChangeNotifierProvider(create: (_) => DebugInfoModel()),
|
||||
// ], child: MyApp(isLogin: isLogin)));
|
||||
runApp(MyApp(isLogin: isLogin));
|
||||
}, onException: (FlutterErrorDetails details) async {
|
||||
debugPrint("FlutterErrorDetails $details");
|
||||
});
|
||||
|
||||
@ -225,19 +225,19 @@ class StartChartManage {
|
||||
/// 设置数据接收回调
|
||||
_onReceiveData(_udpSocket!, Get.context!);
|
||||
|
||||
//ToDo: 增加对讲调试、正式可删除
|
||||
// 每秒重置数据速率
|
||||
Timer.periodic(Duration(seconds: 1), (Timer t) {
|
||||
UdpTalkDataHandler().resetDataRates();
|
||||
// 更新调试信息
|
||||
Provider.of<DebugInfoModel>(Get.context!, listen: false)
|
||||
.updateDebugInfo(
|
||||
UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
||||
UdpTalkDataHandler().getLastRecvPacketCount(),
|
||||
UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
||||
UdpTalkDataHandler().getLastSendPacketCount(),
|
||||
);
|
||||
});
|
||||
// //ToDo: 增加对讲调试、正式可删除
|
||||
// // 每秒重置数据速率
|
||||
// Timer.periodic(Duration(seconds: 1), (Timer t) {
|
||||
// UdpTalkDataHandler().resetDataRates();
|
||||
// // 更新调试信息
|
||||
// Provider.of<DebugInfoModel>(Get.context!, listen: false)
|
||||
// .updateDebugInfo(
|
||||
// UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
||||
// UdpTalkDataHandler().getLastRecvPacketCount(),
|
||||
// UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
||||
// UdpTalkDataHandler().getLastSendPacketCount(),
|
||||
// );
|
||||
// });
|
||||
}).catchError((error) {
|
||||
_log(text: 'Failed to bind UDP socket: $error');
|
||||
});
|
||||
@ -983,16 +983,16 @@ class StartChartManage {
|
||||
if (dg?.data != null) {
|
||||
final deserialize = ScpMessage.deserialize(dg!.data);
|
||||
|
||||
//ToDo: 增加对讲调试、正式可删除
|
||||
UdpTalkDataHandler().updateRecvDataRate(dg.data.length);
|
||||
// //ToDo: 增加对讲调试、正式可删除
|
||||
// UdpTalkDataHandler().updateRecvDataRate(dg.data.length);
|
||||
|
||||
// 更新调试信息
|
||||
Provider.of<DebugInfoModel>(context, listen: false).updateDebugInfo(
|
||||
UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
||||
UdpTalkDataHandler().getLastRecvPacketCount(),
|
||||
UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
||||
UdpTalkDataHandler().getLastSendPacketCount(),
|
||||
);
|
||||
// // 更新调试信息
|
||||
// Provider.of<DebugInfoModel>(context, listen: false).updateDebugInfo(
|
||||
// UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
||||
// UdpTalkDataHandler().getLastRecvPacketCount(),
|
||||
// UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
||||
// UdpTalkDataHandler().getLastSendPacketCount(),
|
||||
// );
|
||||
|
||||
if (deserialize != null) {
|
||||
// 处理返回数据
|
||||
|
||||
@ -1,46 +1,33 @@
|
||||
import 'dart:async';
|
||||
import 'dart:ffi';
|
||||
import 'dart:io';
|
||||
import 'dart:math';
|
||||
import 'dart:typed_data';
|
||||
import 'dart:ui' as ui;
|
||||
import 'dart:math'; // Import the math package to use sqrt
|
||||
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:flutter_pcm_sound/flutter_pcm_sound.dart';
|
||||
import 'package:flutter_screen_recording/flutter_screen_recording.dart';
|
||||
import 'package:flutter_voice_processor/flutter_voice_processor.dart';
|
||||
import 'package:gallery_saver/gallery_saver.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:get_storage/get_storage.dart';
|
||||
import 'package:image_gallery_saver/image_gallery_saver.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/blue/blue_manage.dart';
|
||||
import 'package:star_lock/blue/io_protocol/io_openLock.dart';
|
||||
import 'package:star_lock/blue/io_tool/io_tool.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_logic.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_state.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockDetail/lockNetToken_entity.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSet_logic.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSet_state.dart';
|
||||
import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart';
|
||||
import 'package:star_lock/main/lockMian/lockList/lockList_logic.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/talk/call/g711.dart';
|
||||
import 'package:star_lock/talk/starChart/constant/talk_status.dart';
|
||||
import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart';
|
||||
import 'package:star_lock/talk/starChart/proto/talk_data.pbenum.dart';
|
||||
import 'package:star_lock/talk/starChart/proto/talk_expect.pb.dart';
|
||||
import 'package:star_lock/talk/starChart/star_chart_manage.dart';
|
||||
import 'package:star_lock/talk/starChart/views/talkView/talk_view_state.dart';
|
||||
import 'package:star_lock/tools/bugly/bugly_tool.dart';
|
||||
import 'package:star_lock/tools/commonDataManage.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
|
||||
import '../../../../tools/baseGetXController.dart';
|
||||
|
||||
@ -68,7 +55,7 @@ class TalkViewLogic extends BaseGetXController {
|
||||
if (Platform.isAndroid) {
|
||||
FlutterPcmSound.setFeedThreshold(1024); // Android 平台的特殊处理
|
||||
} else {
|
||||
FlutterPcmSound.setFeedThreshold(sampleRate ~/ 32); // 非 Android 平台的处理
|
||||
FlutterPcmSound.setFeedThreshold(2000); // 非 Android 平台的处理
|
||||
}
|
||||
}
|
||||
|
||||
@ -622,6 +609,54 @@ class TalkViewLogic extends BaseGetXController {
|
||||
}
|
||||
return processedList;
|
||||
}
|
||||
//test测试降噪算法
|
||||
// List<int> preprocessAudio(List<int> pcmList) {
|
||||
// final List<int> processedList = [];
|
||||
// final int windowSize = 5;
|
||||
// final int thresholdFactor = 2; // 动态阈值的倍数
|
||||
|
||||
// for (int i = 0; i < pcmList.length; i++) {
|
||||
// int pcmVal = pcmList[i];
|
||||
|
||||
// // 计算当前窗口内的标准差
|
||||
// int sum = 0;
|
||||
// int count = 0;
|
||||
// for (int j = i; j < i + windowSize && j < pcmList.length; j++) {
|
||||
// sum += pcmList[j];
|
||||
// count++;
|
||||
// }
|
||||
// int mean = sum ~/ count;
|
||||
|
||||
// // 计算标准差
|
||||
// int varianceSum = 0;
|
||||
// for (int j = i; j < i + windowSize && j < pcmList.length; j++) {
|
||||
// varianceSum += (pcmList[j] - mean) * (pcmList[j] - mean);
|
||||
// }
|
||||
// double standardDeviation =
|
||||
// sqrt(varianceSum / count); // Use sqrt from dart:math
|
||||
|
||||
// // 动态阈值
|
||||
// int dynamicThreshold = (standardDeviation * thresholdFactor).toInt();
|
||||
|
||||
// // 动态降噪:如果信号小于动态阈值,则设为0
|
||||
// if (pcmVal.abs() < dynamicThreshold) {
|
||||
// pcmVal = 0;
|
||||
// }
|
||||
|
||||
// // 移动平均滤波器
|
||||
// int sumFilter = 0;
|
||||
// int countFilter = 0;
|
||||
// for (int j = i; j < i + windowSize && j < pcmList.length; j++) {
|
||||
// sumFilter += pcmList[j];
|
||||
// countFilter++;
|
||||
// }
|
||||
// int average = sumFilter ~/ countFilter;
|
||||
|
||||
// processedList.add(average);
|
||||
// }
|
||||
|
||||
// return processedList;
|
||||
// }
|
||||
|
||||
List<int> listLinearToALaw(List<int> pcmList) {
|
||||
final List<int> aLawList = [];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user