diff --git a/lan/lan_hi.json b/lan/lan_hi.json index 1e608b4f..070bc036 100644 --- a/lan/lan_hi.json +++ b/lan/lan_hi.json @@ -1149,5 +1149,7 @@ "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. एप्लिकेशन में लॉक का रिमोट अनलॉकिंग फ़ंक्शन सक्षम करें (यह फ़ंक्शन डिफ़ॉल्ट रूप से बंद है). यदि यह विकल्प उपलब्ध नहीं है, तो लॉक आपके गूगल होम को सपोर्ट नहीं करेगा।", "3.安装Google Home APP,点击左上角的加号按钮": "3. गूगल होम ऐप को इंस्टॉल करें और ऊपरी बाएं कोने में प्लस बटन पर क्लिक करें।", "暂无最新记录": "वर्तमान में कोई नवीनतम रिकॉर्ड उपलब्ध नहीं हैं", + "繁体中文(中国台湾)": "पारंपरिक चीनी (ताइवान, चीनी)", + "繁体中文(中国香港)": "पारंपरिक चीनी (हांग कांग, चीनी)", "请将手机切换至2.4G WiFi进行手动连接": "मैन्युअल कनेक्शन के लिए कृपया अपना फोन 2.4 जी वाईफ़ाई पर स्विच करें।" } \ No newline at end of file diff --git a/lan/lan_ur.json b/lan/lan_ur.json index 90574a85..528ad145 100644 --- a/lan/lan_ur.json +++ b/lan/lan_ur.json @@ -1045,15 +1045,15 @@ "一键开锁": "ایک کلک ان لاک", "已开通": "کھولی", "英文": "انگريزی", - "简体中文": "简体中文", - "繁体中文": "繁體中文", - "法语": "Francis", - "俄语": "Русский", - "德语": "Deutsch", - "日语": "日本語", - "韩语": "한국어", - "意大利语": "Italiano", - "乌克兰语": "Українська", + "简体中文": "ساده چینی", + "繁体中文": "سنتی چینی", + "法语": "فرانسوی", + "俄语": "روسی", + "德语": "جرمن", + "日语": "جاپانی", + "韩语": "کوریا", + "意大利语": "ایتالیایی", + "乌克兰语": "Ukrainian", "葡萄牙语": "Português", "西班牙语": "Español", "阿拉伯语": "العربية", @@ -1149,5 +1149,7 @@ "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. اے پی پی میں لاک کے ریموٹ ان لاکنگ فنکشن کو فعال کریں (یہ فنکشن ڈیفالٹ طور پر بند ہے)۔ اگر یہ آپشن دستیاب نہیں ہے تو ، لاک گوگل ہوم کو سپورٹ نہیں کرے گا۔", "3.安装Google Home APP,点击左上角的加号按钮": "3. گوگل ہوم ایپ انسٹال کریں اور اوپری بائیں کونے میں پلس بٹن پر کلک کریں۔", "暂无最新记录": "فی الحال کوئی تازہ ترین ریکارڈ دستیاب نہیں ہے", + "繁体中文(中国台湾)": "(تائیوان، چین)سنتی چینی", + "繁体中文(中国香港)": "(ہنگ کنگ، چین)سنتی چینی", "请将手机切换至2.4G WiFi进行手动连接": "براہ کرم دستی کنکشن کے لئے اپنے فون کو 2.4 جی وائی فائی پر سوئچ کریں" } \ No newline at end of file diff --git a/lib/main/lockMian/lockMain/lockMain_logic.dart b/lib/main/lockMian/lockMain/lockMain_logic.dart index bd859377..802e9bbe 100755 --- a/lib/main/lockMian/lockMain/lockMain_logic.dart +++ b/lib/main/lockMian/lockMain/lockMain_logic.dart @@ -381,7 +381,8 @@ class LockMainLogic extends BaseGetXController { _initSubscription(); getUserInfoRequest(); // connectListener(); - + // 添加语言变化监听 + listenToLanguageChanges(); // AppLog.log('onInit() updateZoneOffsetsAndLanguages'); // updateZoneOffsetsAndLanguages(); } @@ -394,6 +395,16 @@ class LockMainLogic extends BaseGetXController { super.onClose(); } + // 监听语言变化并刷新列表 + void listenToLanguageChanges() { + // 收到切换语言消息,重新拉取一下列表 + eventBus + .on() + .listen((ChangeLanguageBlockLastLanguageEvent event) { + getStarLockInfo(isUnShowLoading: true); + }); + } + static LockMainLogic? to() { if (Get.isRegistered()) { return Get.find(); diff --git a/lib/talk/starChart/views/talkView/talk_view_logic.dart b/lib/talk/starChart/views/talkView/talk_view_logic.dart index fb7abd92..7ed217f6 100644 --- a/lib/talk/starChart/views/talkView/talk_view_logic.dart +++ b/lib/talk/starChart/views/talkView/talk_view_logic.dart @@ -658,8 +658,22 @@ class TalkViewLogic extends BaseGetXController { // 音频帧处理 Future _onFrame(List frame) async { + // 添加数据监控 + int maxVal = 0; + int minVal = 0; + int sum = 0; + for (int val in frame) { + maxVal = max(maxVal, val); + minVal = min(minVal, val); + sum += val; + } + double average = sum / frame.length; + AppLog.log('音频数据特征 - 最大值: $maxVal, 最小值: $minVal, 平均值: $average'); + final List processedFrame = preprocessAudio(frame); - final List list = listLinearToALaw(processedFrame); + // 添加平滑处理 + final List smoothedFrame = smoothAudio(processedFrame); + final List list = listLinearToALaw(smoothedFrame); _bufferedAudioFrames.addAll(list); final int ms = DateTime.now().millisecondsSinceEpoch - @@ -671,6 +685,15 @@ class TalkViewLogic extends BaseGetXController { } if (_bufferedAudioFrames.length >= getFrameLength) { + // 添加数据监控 + int maxVal = 0; + int minVal = 255; + for (int val in _bufferedAudioFrames) { + maxVal = max(maxVal, val); + minVal = min(minVal, val); + } + AppLog.log( + '发送音频数据 - G711编码后 - 最大值: $maxVal, 最小值: $minVal, 长度: ${_bufferedAudioFrames.length}'); // 发送音频数据到UDP await StartChartManage() .sendTalkDataMessage( @@ -691,19 +714,46 @@ class TalkViewLogic extends BaseGetXController { AppLog.log(error.message!); } + // 简化的音频预处理函数 List preprocessAudio(List pcmList) { - // 简单的降噪处理 final List processedList = []; + final int noiseThreshold = 300; // 噪音阈值 + for (int pcmVal in pcmList) { - // 简单的降噪示例:将小于阈值的信号置为0 - if (pcmVal.abs() < 200) { - pcmVal = 0; + // 简单的噪音门控:小于阈值的信号会被减弱 + if (pcmVal.abs() < noiseThreshold) { + pcmVal = (pcmVal * 0.3).round(); // 减弱噪音 } + + // 简单的压缩:防止大信号失真 + if (pcmVal.abs() > 20000) { + double factor = 1.0 - ((pcmVal.abs() - 20000) / 12768) * 0.3; + pcmVal = (pcmVal * factor).round(); + } + processedList.add(pcmVal); } + return processedList; } +// 简单的平滑处理 + List smoothAudio(List pcmList) { + final List smoothedList = []; + + for (int i = 0; i < pcmList.length; i++) { + if (i > 0 && i < pcmList.length - 1) { + // 简单的三点平均 + int avg = (pcmList[i - 1] + pcmList[i] * 2 + pcmList[i + 1]) ~/ 4; + smoothedList.add(avg); + } else { + smoothedList.add(pcmList[i]); + } + } + + return smoothedList; + } + //test测试降噪算法 // List preprocessAudio(List pcmList) { // final List processedList = []; @@ -753,34 +803,31 @@ class TalkViewLogic extends BaseGetXController { // return processedList; // } +// 简化的音量调整 List adjustVolume(List pcmList, double volume) { final List adjustedPcmList = []; + for (final int pcmVal in pcmList) { - // 调整音量 int adjustedPcmVal = (pcmVal * volume).round(); - - // 裁剪到 16-bit PCM 范围 - if (adjustedPcmVal > 32767) { - adjustedPcmVal = 32767; - } else if (adjustedPcmVal < -32768) { - adjustedPcmVal = -32768; - } - + adjustedPcmVal = adjustedPcmVal.clamp(-32768, 32767); adjustedPcmList.add(adjustedPcmVal); } + return adjustedPcmList; } +// 简化的A-law编码 List listLinearToALaw(List pcmList) { - // 先调节音量 - final List adjustedPcmList = adjustVolume(pcmList, 5.0); + // 调整音量,使用适中的增益值 + final List adjustedPcmList = adjustVolume(pcmList, 2.2); - // 再进行 A-law 编码 + // 执行A-law编码 final List aLawList = []; for (final int pcmVal in adjustedPcmList) { final int aLawVal = linearToALaw(pcmVal); aLawList.add(aLawVal); } + return aLawList; }