deepchords新增语言
authorliangzhenying <867174124@qq.com>
Fri, 9 Jan 2026 02:48:03 +0000 (10:48 +0800)
committerliangzhenying <867174124@qq.com>
Fri, 9 Jan 2026 02:48:03 +0000 (10:48 +0800)
58 files changed:
ShenYin/Pods/Kingfisher/PrivacyInfo 2.xcprivacy [new file with mode: 0644]
ShenYin/Pods/MBProgressHUD/PrivacyInfo 2.xcprivacy [new file with mode: 0644]
ShenYin/ShenYin.xcodeproj/project.pbxproj
ShenYin/ShenYin/Api/LogManager.swift
ShenYin/ShenYin/Sdk/CCAiSupportLanguage.swift
ShenYin/ShenYin/Sdk/CCBleManager.swift
ShenYin/ShenYin/Sdk/CCDevice.swift
ShenYin/ShenYin/Sdk/CCPage.swift
ShenYin/ShenYin/Sdk/JoySdk/JoySdkManager.swift
ShenYin/ShenYin/UI/Base/BaseTC.swift
ShenYin/ShenYin/UI/Home/HistoryRecord/search/CloudSelectedVC.swift
ShenYin/ShenYin/UI/Home/HistoryRecord/search/HistorySelectedVC.swift
ShenYin/ShenYin/lan/Arabic.swift
ShenYin/ShenYin/lan/Filipino.swift
ShenYin/ShenYin/lan/German.swift
ShenYin/ShenYin/lan/TraditionalChinese.swift
ShenYin/ShenYin/lan/Vietnam.swift
ShenYin/ShenYin/lan/chinese.swift
ShenYin/ShenYin/lan/english.swift
ShenYin/ShenYin/lan/french.swift
ShenYin/ShenYin/lan/indonesian.swift
ShenYin/ShenYin/lan/japanese.swift
ShenYin/ShenYin/lan/korean.swift
ShenYin/ShenYin/lan/malay.swift
ShenYin/ShenYin/lan/russian.swift
ShenYin/ShenYin/lan/spanish.swift
ShenYin/ShenYin/lan/thai.swift
ShenYin/framework/JLAudioUnitKit.xcframework/Info.plist [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources [deleted file]
ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt [deleted file]
document/PrivacyInfo.xcprivacy

diff --git a/ShenYin/Pods/Kingfisher/PrivacyInfo 2.xcprivacy b/ShenYin/Pods/Kingfisher/PrivacyInfo 2.xcprivacy
new file mode 100644 (file)
index 0000000..e540750
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>NSPrivacyTracking</key>
+       <false/>
+       <key>NSPrivacyAccessedAPITypes</key>
+       <array/>
+       <key>NSPrivacyCollectedDataTypes</key>
+       <array/>
+       <key>NSPrivacyTrackingDomains</key>
+       <array/>
+</dict>
+</plist>
diff --git a/ShenYin/Pods/MBProgressHUD/PrivacyInfo 2.xcprivacy b/ShenYin/Pods/MBProgressHUD/PrivacyInfo 2.xcprivacy
new file mode 100644 (file)
index 0000000..e540750
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>NSPrivacyTracking</key>
+       <false/>
+       <key>NSPrivacyAccessedAPITypes</key>
+       <array/>
+       <key>NSPrivacyCollectedDataTypes</key>
+       <array/>
+       <key>NSPrivacyTrackingDomains</key>
+       <array/>
+</dict>
+</plist>
index d006ab1..62cdd99 100644 (file)
@@ -7,24 +7,11 @@
        objects = {
 
 /* Begin PBXBuildFile section */
-               3F469CB12F0B539600121DBD /* DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */; };
                3F8F58292EBCA2B800FFC00B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */; };
-               3FD1A2952F0BCACB00A62733 /* JLAudioUnitKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */; };
-               3FD1A2962F0BCACB00A62733 /* JLAudioUnitKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
                644D1BB5EDD3EA1D77C57786 /* Pods_DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 248D8B53B5A178ACA5867275 /* Pods_DeepChordsSdk.framework */; };
                F2E449CAD5874BE652A69B50 /* Pods_ShenYin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3862D5561144E20721225B96 /* Pods_ShenYin.framework */; };
 /* End PBXBuildFile section */
 
-/* Begin PBXContainerItemProxy section */
-               0D54E1022F0A61E600A80EE7 /* PBXContainerItemProxy */ = {
-                       isa = PBXContainerItemProxy;
-                       containerPortal = 3F887B942E38D8DC00C98658 /* Project object */;
-                       proxyType = 1;
-                       remoteGlobalIDString = 0D54E0EE2F0A61E600A80EE7;
-                       remoteInfo = DeepChordsSdk;
-               };
-/* End PBXContainerItemProxy section */
-
 /* Begin PBXCopyFilesBuildPhase section */
                0D54E4462F0A62D900A80EE7 /* Embed Frameworks */ = {
                        isa = PBXCopyFilesBuildPhase;
@@ -42,7 +29,6 @@
                        dstPath = "";
                        dstSubfolderSpec = 10;
                        files = (
-                               3FD1A2962F0BCACB00A62733 /* JLAudioUnitKit.xcframework in Embed Frameworks */,
                        );
                        name = "Embed Frameworks";
                        runOnlyForDeploymentPostprocessing = 0;
@@ -56,7 +42,6 @@
                3F7602EA2EFA891200588C18 /* DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
                3F887B9C2E38D8DC00C98658 /* ShenYin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ShenYin.app; sourceTree = BUILT_PRODUCTS_DIR; };
                3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
-               3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = JLAudioUnitKit.xcframework; path = framework/JLAudioUnitKit.xcframework; sourceTree = "<group>"; };
                5A92F7DC2CB6E6E69D2AB23E /* Pods-DeepChordsSdk.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeepChordsSdk.debug.xcconfig"; path = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.debug.xcconfig"; sourceTree = "<group>"; };
                5F5DE5910965D53C2B3405B0 /* Pods-ShenYin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShenYin.debug.xcconfig"; path = "Target Support Files/Pods-ShenYin/Pods-ShenYin.debug.xcconfig"; sourceTree = "<group>"; };
                CB933A7969ADF81D59503790 /* Pods-LingQi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LingQi.debug.xcconfig"; path = "Target Support Files/Pods-LingQi/Pods-LingQi.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
-               3F469CAC2F0B539000121DBD /* Exceptions for "DeepChordsSdk" folder in "ShenYin" target */ = {
-                       isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
-                       membershipExceptions = (
-                               StarburstSdk.framework,
-                       );
-                       target = 3F887B9B2E38D8DC00C98658 /* ShenYin */;
-               };
                3F887BAE2E38D8DD00C98658 /* Exceptions for "ShenYin" folder in "ShenYin" target */ = {
                        isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
                        membershipExceptions = (
                                Info.plist,
+                               Sdk/DcSdk/DcBleManager.swift,
+                               Sdk/DcSdk/DcCall.swift,
+                               Sdk/DcSdk/DcChatManager.swift,
+                               Sdk/DcSdk/DcChinese2Enligsh.swift,
+                               Sdk/DcSdk/DcSdkManager.swift,
+                               Sdk/DcSdk/DcStereo.swift,
+                               Sdk/DcSdk/DcTcty.swift,
+                               Sdk/DcSdk/DcThly.swift,
+                               Sdk/DcSdk/DcXcly.swift,
+                               Sdk/DcSdk/OpusTools.swift,
+                               Sdk/DcSdk/VC/DcCallingRecordVC.swift,
+                               Sdk/DcSdk/VC/DcChatVC.swift,
+                               Sdk/DcSdk/VC/DcChinese2EnglishVC.swift,
+                               Sdk/DcSdk/VC/DcDialogTranslateVC.swift,
+                               Sdk/DcSdk/VC/DcStereoCallVC.swift,
+                               Sdk/DcSdk/VC/DcTctyVC.swift,
+                               Sdk/DcSdk/VC/DcXclyVC.swift,
                        );
                        target = 3F887B9B2E38D8DC00C98658 /* ShenYin */;
                };
                                StarburstSdk.framework,
                        );
                };
-               3F469CB02F0B539500121DBD /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "ShenYin" target */ = {
-                       isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet;
-                       attributesByRelativePath = {
-                               StarburstSdk.framework = (CodeSignOnCopy, RemoveHeadersOnCopy, );
-                       };
-                       buildPhase = 3F469CAF2F0B539400121DBD /* Embed Frameworks */;
-                       membershipExceptions = (
-                               StarburstSdk.framework,
-                       );
-               };
                3FD1D6A12F0D1AE600A62733 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "ShenYin" target */ = {
                        isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet;
                        attributesByRelativePath = {
                0D54E0F02F0A61E600A80EE7 /* DeepChordsSdk */ = {
                        isa = PBXFileSystemSynchronizedRootGroup;
                        exceptions = (
-                               3F469CAC2F0B539000121DBD /* Exceptions for "DeepChordsSdk" folder in "ShenYin" target */,
-                               3F469CB02F0B539500121DBD /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "ShenYin" target */,
                                0D54E4472F0A62D900A80EE7 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */,
                        );
                        path = DeepChordsSdk;
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               3F469CB12F0B539600121DBD /* DeepChordsSdk.framework in Frameworks */,
                                F2E449CAD5874BE652A69B50 /* Pods_ShenYin.framework in Frameworks */,
-                               3FD1A2952F0BCACB00A62733 /* JLAudioUnitKit.xcframework in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                676B86A4BA2639E8694D56B4 /* Frameworks */ = {
                        isa = PBXGroup;
                        children = (
-                               3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */,
                                3F7602EA2EFA891200588C18 /* DeepChordsSdk.framework */,
                                3862D5561144E20721225B96 /* Pods_ShenYin.framework */,
                                248D8B53B5A178ACA5867275 /* Pods_DeepChordsSdk.framework */,
                        buildRules = (
                        );
                        dependencies = (
-                               0D54E1032F0A61E600A80EE7 /* PBXTargetDependency */,
                        );
                        fileSystemSynchronizedGroups = (
                                3F887B9E2E38D8DC00C98658 /* ShenYin */,
                };
 /* End PBXSourcesBuildPhase section */
 
-/* Begin PBXTargetDependency section */
-               0D54E1032F0A61E600A80EE7 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 0D54E0EE2F0A61E600A80EE7 /* DeepChordsSdk */;
-                       targetProxy = 0D54E1022F0A61E600A80EE7 /* PBXContainerItemProxy */;
-               };
-/* End PBXTargetDependency section */
-
 /* Begin XCBuildConfiguration section */
                0D54E1052F0A61E600A80EE7 /* Debug */ = {
                        isa = XCBuildConfiguration;
                                        "$(inherited)",
                                        "$(PROJECT_DIR)/ShenYin/Sdk/DcSdk/opus/code_opus/lib",
                                );
-                               MARKETING_VERSION = 1.1.0;
+                               MARKETING_VERSION = 1.0.2;
                                PRODUCT_BUNDLE_IDENTIFIER = com.deepchords.app;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                PROVISIONING_PROFILE_SPECIFIER = "";
                                        "$(inherited)",
                                        "$(PROJECT_DIR)/ShenYin/Sdk/DcSdk/opus/code_opus/lib",
                                );
-                               MARKETING_VERSION = 1.1.0;
+                               MARKETING_VERSION = 1.0.2;
                                PRODUCT_BUNDLE_IDENTIFIER = com.deepchords.app;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                PROVISIONING_PROFILE_SPECIFIER = "";
index 8735333..f61e054 100644 (file)
@@ -9,7 +9,7 @@ import Foundation
 
 /// 日记管理
 class Logger {
-    static var isDebug: Bool = true
+    static var isDebug: Bool = false
     
     fileprivate static let shared = Logger()
     private var fileHandle:FileHandle?
index 64f4eac..20848b0 100644 (file)
@@ -23,12 +23,27 @@ enum CCAiLanguage:String{
     case thai = "thai"
     case Arabic = "Arabic"
     case Vietnam = "Vietnam"
+    
+    case Danish = "Danish"
+    case  Greek = "Greek"
+    case Finnish = "Finnish"
+    case  Hebrew = "Hebrew"
+    case  Hindi = "Hindi"
+    case  Italian = "Italian"
+    case Dutch = "Dutch"
+    case  Norwegian = "Norwegian"
+    case Polish = "Polish"
+    case Swedish = "Swedish"
+    case Swahili = "Swahili"
+    case  Turkish = "Turkish"
+
+    
 
     static var chinse2english:[CCAiLanguage]{
         return [.chinse,.english]
     }
     static var all:[CCAiLanguage]{
-        let list = [.chinse,.english,.japanese,.korean,.french,.spanish,.portuguese,.indonesian,.russian,.malay,German,Filipino,thai,Arabic,Vietnam]
+        let list = [.chinse,.english,.japanese,.korean,.french,.spanish,.portuguese,.indonesian,.russian,.malay,German,Filipino,thai,Arabic,Vietnam,Danish,Greek,Finnish,Hebrew,Hindi,Italian,Dutch,Norwegian,Polish,Swedish,Swahili,Turkish,]
 //        Logger.debug(list.map{$0.value})
         return list
     }
@@ -64,42 +79,34 @@ enum CCAiLanguage:String{
             return "阿拉伯文".l10n
         case .Vietnam:
             return "越南文".l10n
+            
+        case .Danish:
+            return "丹麦文".l10n
+        case .Greek:
+            return "希腊文".l10n
+        case .Finnish:
+            return "芬兰文".l10n
+        case .Hebrew:
+            return "希伯来文".l10n
+        case .Hindi:
+            return "印地文".l10n
+        case .Italian:
+            return "意大利文".l10n
+        case .Dutch:
+            return "荷兰文".l10n
+        case .Norwegian:
+            return "挪威文".l10n
+        case .Polish:
+            return "波兰文".l10n
+        case .Swedish:
+            return "瑞典文".l10n
+        case .Swahili:
+            return "斯瓦希里文".l10n
+        case .Turkish:
+            return "土耳其文".l10n
         }
     }
-//    var value:String{
-//        switch self {
-//        case .chinse:
-//            return kJoyGemAILocalizationZH
-//        case .english:
-//            return kJoyGemAILocalizationEN
-//        case .japanese:
-//            return kJoyGemAILocalizationJA
-//        case .korean:
-//            return kJoyGemAILocalizationKO
-//        case .french:
-//            return kJoyGemAILocalizationFR
-//        case .spanish:
-//            return kJoyGemAILocalizationES
-//        case .portuguese:
-//            return kJoyGemAILocalizationPT
-//        case .indonesian:
-//            return kJoyGemAILocalizationID
-//        case .russian:
-//            return kJoyGemAILocalizationRU_Target
-//        case .malay:
-//            return kJoyGemAILocalizationMS
-//        case .German:
-//            return kJoyGemAILocalizationDE
-//        case .Filipino:
-//            return kJoyGemAILocalizationFIL
-//        case .thai:
-//            return kJoyGemAILocalizationTH
-//        case .Arabic:
-//            return kJoyGemAILocalizationAR
-//        case .Vietnam:
-//            return kJoyGemAILocalizationVI
-//        }
-//    }
+
     var value:String{
         switch self {
         case .chinse:
@@ -132,6 +139,31 @@ enum CCAiLanguage:String{
             return "ar-SA"
         case .Vietnam:
             return "vi"
+            
+        case .Danish:
+            return "da"
+        case .Greek:
+            return "el"
+        case .Finnish:
+            return "fi"
+        case .Hebrew:
+            return "he"
+        case .Hindi:
+            return "hi"
+        case .Italian:
+            return "it"
+        case .Dutch:
+            return "nl"
+        case .Norwegian:
+            return "no"
+        case .Polish:
+            return "pl"
+        case .Swedish:
+            return "sv"
+        case .Swahili:
+            return "sw"
+        case .Turkish:
+            return "tr"
         }
     }
 }
index 19b703b..1762253 100644 (file)
@@ -10,7 +10,7 @@ import CoreBluetooth
 import AVFAudio
 
 //#if FEATURE_X
-import DeepChordsSdk
+//import DeepChordsSdk
 //#endif
 
 
@@ -71,21 +71,21 @@ extension CCBleManager:CBCentralManagerDelegate{
         }
         Logger.debug(peripheral)
         
-        if let name = peripheral.name,name.hasPrefix("AI") {
-            let mac = DcSdkManager.getMac(advertisementData) ?? ""
-            devices.append(DCPeripheral(device: peripheral,mac: mac))
-            discoverDeviceCallback?(devices)
-        }
-        else{
-            let mac = JoySdkManager.getMac(advertisementData) ?? ""
-            devices.append(DCPeripheral(device: peripheral,mac: mac))
-            discoverDeviceCallback?(devices)
-        }
-//        if CCDevice.isJoy{
+//        if let name = peripheral.name,name.hasPrefix("AI") {
+//            let mac = DcSdkManager.getMac(advertisementData) ?? ""
+//            devices.append(DCPeripheral(device: peripheral,mac: mac))
+//            discoverDeviceCallback?(devices)
+//        }
+//        else{
 //            let mac = JoySdkManager.getMac(advertisementData) ?? ""
 //            devices.append(DCPeripheral(device: peripheral,mac: mac))
 //            discoverDeviceCallback?(devices)
 //        }
+        if CCDevice.isJoy{
+            let mac = JoySdkManager.getMac(advertisementData) ?? ""
+            devices.append(DCPeripheral(device: peripheral,mac: mac))
+            discoverDeviceCallback?(devices)
+        }
 //        else{
 //            let mac = DcSdkManager.getMac(advertisementData) ?? ""
 //            devices.append(DCPeripheral(device: peripheral,mac: mac))
@@ -101,8 +101,8 @@ extension CCBleManager:CBCentralManagerDelegate{
             peripheral.discoverServices([CBUUID(string: JoySdkManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]);
         }
         else{
-            DCBleManager.shared.centralManager(central, didConnect: peripheral)
-            peripheral.discoverServices([CBUUID(string: DCBleManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]);
+//            DCBleManager.shared.centralManager(central, didConnect: peripheral)
+//            peripheral.discoverServices([CBUUID(string: DCBleManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]);
         }
     }
     func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
@@ -114,7 +114,7 @@ extension CCBleManager:CBCentralManagerDelegate{
         YLprogressHUD.showAutoHiden("蓝牙已断开".l10n)
         self.isConnetd = false
         if CCDevice.isJoy{
-            DCBleManager.shared.centralManager(central, didDisconnectPeripheral: peripheral, error: nil)
+//            DCBleManager.shared.centralManager(central, didDisconnectPeripheral: peripheral, error: nil)
         }
         NotificationManager.post(type: .deviceValidChange, objtect: nil)
         OtaMananger.shared.otaManager.centralManager(central, didDisconnectPeripheral: peripheral, error: error)
@@ -141,7 +141,7 @@ extension CCBleManager: CBPeripheralDelegate {
             }
         }
         else{
-            DCBleManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error)
+//            DCBleManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error)
         }
     }
     
@@ -174,7 +174,7 @@ extension CCBleManager: CBPeripheralDelegate {
             }
         }
         else{
-            DCBleManager.shared.peripheral(peripheral, didUpdateValueFor: characteristic, error: error)
+//            DCBleManager.shared.peripheral(peripheral, didUpdateValueFor: characteristic, error: error)
         }
     }
     
@@ -204,7 +204,7 @@ extension CCBleManager{
             centralManager.scanForPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false])
         }
         else{
-            centralManager.scanForPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false])
+//            centralManager.scanForPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false])
         }
         discoverDeviceCallback?(devices)
     }
@@ -293,9 +293,10 @@ extension CCBleManager{
 //            return []
         }
         else{
-            let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)])
-            Logger.debug("已连接设备",list)
-            return list
+//            let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)])
+//            Logger.debug("已连接设备",list)
+//            return list
+            return []
         }
     }
 }
index 16cefe8..072c8c2 100644 (file)
@@ -5,7 +5,7 @@
 //  Created by liangshi on 2025/12/25.
 //
 import JoyGemAI
-import DeepChordsSdk
+//import DeepChordsSdk
 class CCDevice{
     static var isJoy = true
     static func initSdk(){
@@ -13,7 +13,7 @@ class CCDevice{
             JoySdkManager.shared.setupSdk()
         }
         else{
-            DcSdkManager.shared.initSdk()
+//            DcSdkManager.shared.initSdk()
         }
     }
     static func translate(text:String,from:String,to:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){
@@ -26,10 +26,10 @@ class CCDevice{
             }
         }
         else{
-            DeepChordsAiSdk.shared.cancelTranslateByTextWithSplit()
-            DeepChordsAiSdk.shared.translate(text: text, from: from, to: to) { result in
-                finished(result)
-            }
+//            DeepChordsAiSdk.shared.cancelTranslateByTextWithSplit()
+//            DeepChordsAiSdk.shared.translate(text: text, from: from, to: to) { result in
+//                finished(result)
+//            }
         }
     }
     static func summary(text:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){
@@ -42,10 +42,10 @@ class CCDevice{
             }
         }
         else{
-            DeepChordsAiSdk.shared.cancelSummaryByTextWithSplit()
-            DeepChordsAiSdk.shared.sumary(text: text) { result in
-                finished(result)
-            }
+//            DeepChordsAiSdk.shared.cancelSummaryByTextWithSplit()
+//            DeepChordsAiSdk.shared.sumary(text: text) { result in
+//                finished(result)
+//            }
         }
     }
 }
@@ -68,9 +68,9 @@ extension CCDevice{
             }
         }
         else{
-            let value:UInt8 = mode == .cancel ? 0:1
-            DCDevice.shared.findDevice(state: value) { result in
-            }
+//            let value:UInt8 = mode == .cancel ? 0:1
+//            DCDevice.shared.findDevice(state: value) { result in
+//            }
         }
     }
     static func getEQMode(finished:@escaping (ModeEffectsType?)->Void){
@@ -104,28 +104,28 @@ extension CCDevice{
             //    0x03(爵士)
             //    0x04(摇滚)
             //    0x05(自定义)
-            DCDevice.shared.getEQ { (arg0,result) in
-                guard let (type,list) = arg0 else{
-                    finished(nil)
-                    return
-                }
-                switch type{
-                case 0:
-                    finished(.normal)
-                case 1:
-                    finished(.pop)
-                case 2:
-                    finished(.classic)
-                case 3:
-                    finished(.jazz)
-                case 4:
-                    finished(.rock)
-                case 5:
-                    finished(.custom)
-                default:
-                    finished(nil)
-                }
-            }
+//            DCDevice.shared.getEQ { (arg0,result) in
+//                guard let (type,list) = arg0 else{
+//                    finished(nil)
+//                    return
+//                }
+//                switch type{
+//                case 0:
+//                    finished(.normal)
+//                case 1:
+//                    finished(.pop)
+//                case 2:
+//                    finished(.classic)
+//                case 3:
+//                    finished(.jazz)
+//                case 4:
+//                    finished(.rock)
+//                case 5:
+//                    finished(.custom)
+//                default:
+//                    finished(nil)
+//                }
+//            }
         }
     }
     static func setEQMode(_ type:ModeEffectsType){
@@ -150,10 +150,10 @@ extension CCDevice{
                 Logger.debug("setEQMode:\(err)");
             }
         }else{
-            let value:UInt8 = UInt8(type.rawValue)
-            DCDevice.shared.setEQ(type: value) { success in
-                
-            }
+//            let value:UInt8 = UInt8(type.rawValue)
+//            DCDevice.shared.setEQ(type: value) { success in
+//                
+//            }
         }
     }
     
@@ -169,19 +169,19 @@ extension CCDevice{
             }
         }
         else{
-            DCDevice.shared.getEQ { (arg0,result) in
-                guard let (type,list) = arg0 else{
-                    finished(nil)
-                    return
-                }
-                if type == 5{
-                    let nums = list.map { NSNumber(value: $0) }
-                    finished(nums)
-                }
-                else{
-                    finished(nil)
-                }
-            }
+//            DCDevice.shared.getEQ { (arg0,result) in
+//                guard let (type,list) = arg0 else{
+//                    finished(nil)
+//                    return
+//                }
+//                if type == 5{
+//                    let nums = list.map { NSNumber(value: $0) }
+//                    finished(nums)
+//                }
+//                else{
+//                    finished(nil)
+//                }
+//            }
         }
     }
     static func resetCustomEQ(){
@@ -191,20 +191,20 @@ extension CCDevice{
             }
         }
         else{
-            let list = [
-                0,0,0,0,0,0,0,0,0,0,0,0
-            ]
-            let dispatchGroup = DispatchGroup()
-            for (index,item) in list.enumerated() {
-                dispatchGroup.enter()
-                DCDevice.shared.setCustomEQ(index: UInt8(index), value: item) {result in
-                    dispatchGroup.leave()
-                }
-            }
-            dispatchGroup.notify(queue:.main) {
-                DCDevice.shared.setEQ(type: 0x05) {result in
-                }
-            }
+//            let list = [
+//                0,0,0,0,0,0,0,0,0,0,0,0
+//            ]
+//            let dispatchGroup = DispatchGroup()
+//            for (index,item) in list.enumerated() {
+//                dispatchGroup.enter()
+//                DCDevice.shared.setCustomEQ(index: UInt8(index), value: item) {result in
+//                    dispatchGroup.leave()
+//                }
+//            }
+//            dispatchGroup.notify(queue:.main) {
+//                DCDevice.shared.setEQ(type: 0x05) {result in
+//                }
+//            }
         }
     }
     static func setCustomEQ(index:Int,value:Int){
@@ -214,8 +214,8 @@ extension CCDevice{
             }
         }
         else{
-            DCDevice.shared.setCustomEQ(index: UInt8(index), value: value) {result in
-            }
+//            DCDevice.shared.setCustomEQ(index: UInt8(index), value: value) {result in
+//            }
         }
     }
 }
@@ -245,10 +245,10 @@ extension CCDevice{
                 finished(nil)
             }
         }
-        else{
-            let dn = DeepChordsAiSdk.shared.getDeviceName()
-            finished(dn)
-        }
+//        else{
+//            let dn = DeepChordsAiSdk.shared.getDeviceName()
+//            finished(dn)
+//        }
     }
     static func getVersion(finished:@escaping ((_ version:String?)->Void)) {
         if CCDevice.isJoy {
@@ -259,10 +259,10 @@ extension CCDevice{
                 finished(nil)
             }
         }
-        else{
-            DCDevice.shared.getSoftVersion {result in
-                finished(result)
-            }
-        }
+//        else{
+//            DCDevice.shared.getSoftVersion {result in
+//                finished(result)
+//            }
+//        }
     }
 }
index a53d0ef..3c12f69 100644 (file)
@@ -11,7 +11,7 @@ class CCPage{
             App.shared.goToPage(JoyChatVC())
         }
         else{
-            App.shared.goToPage(DcChatVC())
+//            App.shared.goToPage(DcChatVC())
         }
     }
     static func gotoFieldRecord(){
@@ -19,7 +19,7 @@ class CCPage{
             App.shared.goToPage(JoyXclyVC())
         }
         else{
-            App.shared.goToPage(DcXclyVC())
+//            App.shared.goToPage(DcXclyVC())
         }
     }
     static func gotoCallRecord(){
@@ -33,7 +33,7 @@ class CCPage{
         }
         else{
 //            if JoySdkManager.shared.callRecord.supportStereo{
-                App.shared.goToPage(DcStereoCallVC())
+//                App.shared.goToPage(DcStereoCallVC())
 //            }
 //            else{
 //                App.shared.goToPage(DcCallingRecordVC())
@@ -45,7 +45,7 @@ class CCPage{
             App.shared.goToPage(JoyChinese2EnglishVC())
         }
         else{
-            App.shared.goToPage(DcChinese2EnglishVC())
+//            App.shared.goToPage(DcChinese2EnglishVC())
         }
     }
     static func gotoTcty(){
@@ -53,7 +53,7 @@ class CCPage{
             App.shared.goToPage(JoyTctyVC())
         }
         else{
-            App.shared.goToPage(DcTctyVC())
+//            App.shared.goToPage(DcTctyVC())
         }
     }
     static func gotoDialogTranslate(){
@@ -61,7 +61,7 @@ class CCPage{
             App.shared.goToPage(JoyDialogTranslateVC())
         }
         else{
-            App.shared.goToPage(DcDialogTranslateVC())
+//            App.shared.goToPage(DcDialogTranslateVC())
         }
     }
 }
index 4e9a702..9741485 100644 (file)
@@ -199,10 +199,10 @@ extension JoySdkManager{
             if (advMsd.count >= 13) {
                 let mac = advMsd[7...12];
                 let text = mac.map { String($0, radix: 16).padLeft(toLength: 2, withPad: "0") }.joined(separator: ":").uppercased()
-                Logger.debug(dict)
-                Logger.debug(advMsd)
-                Logger.debug(mac.joined())
-                Logger.debug(text)
+//                Logger.debug(dict)
+//                Logger.debug(advMsd)
+//                Logger.debug(mac.joined())
+//                Logger.debug(text)
                 return text
             } else {
                 return nil
index 748c887..1d3723b 100644 (file)
@@ -23,7 +23,12 @@ class BaseTC:UITabBarController{
     
 
     func setupUI(){
-        let item0 = UITabBarItem(title: "AI" + " " + "智能".l10n , image: UIImage(named: "tab_0_normal")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named: "tab_0_selected")?.withRenderingMode(.alwaysOriginal))
+        var title0 = "智能".l10n + " " + "AI"
+        if DCConfig.appLanguage == .chinse{
+            title0 = "AI" + " " + "智能".l10n
+        }
+
+        let item0 = UITabBarItem(title: title0 , image: UIImage(named: "tab_0_normal")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named: "tab_0_selected")?.withRenderingMode(.alwaysOriginal))
         let nc0 = BaseNC(rootViewController: homeVC)
         nc0.tabBarItem = item0
         
index 2b4f78a..1c55fda 100644 (file)
@@ -137,6 +137,9 @@ class CloudSelectedVC: BaseVC{
                 tempList.append(item.model)
             }
         }
+        if tempList.count == 0 {
+            return
+        }
         App.shared.goToPage(RecordShareVC(cloudList: tempList))
     }
     @objc func deleteAction(){
index 5d21bf2..e67e3c5 100644 (file)
@@ -135,6 +135,9 @@ class HistorySelectedVC: BaseVC{
                 tempList.append(item.model)
             }
         }
+        if tempList.count == 0 {
+            return
+        }
         App.shared.goToPage(RecordShareVC(localList: tempList))
     }
     @objc func deleteAction(){
index 8ce4ef6..23f29d3 100644 (file)
@@ -66,6 +66,18 @@ let arabicMap:[String:String] =
     "阿拉伯文" : "العربية",
     "越南文" : "الفيتنامية",
     "马来文" :"الملايوية",
+    "丹麦文":"الدنماركية",
+    "希腊文":"اليونانية",
+    "芬兰文":"الفنلندية",
+    "希伯来文":"العبرية",
+    "印地文":"الهندية",
+    "意大利文":"الإيطالية",
+    "荷兰文":"الهولندية",
+    "挪威文":"النرويجية",
+    "波兰文":"البولندية",
+    "瑞典文":"السويدية",
+    "斯瓦希里文":"السواحلية",
+    "土耳其文":"التركية",
     
     "保存录音" : "حفظ التسجيل",
     "原文" : "النص الأصلي",
index ead2742..6252374 100644 (file)
@@ -65,6 +65,18 @@ let filipinoMap:[String:String] =
     "阿拉伯文" : "Arabic",
     "越南文" : "Vietnamese",
     "马来文" : "Malay",
+        "丹麦文":"Danish",
+    "希腊文":"Greek",
+    "芬兰文":"Finnish",
+    "希伯来文":"Hebrew",
+    "印地文":"Hindi",
+    "意大利文":"Italian",
+    "荷兰文":"Dutch",
+    "挪威文":"Norwegian",
+    "波兰文":"Polish",
+    "瑞典文":"Swedish",
+    "斯瓦希里文":"Swahili",
+    "土耳其文":"Turkish",
     
     "保存录音" : "I-save ang Recording",
     "原文" : "Original na Teksto",
index b344e95..404eb74 100644 (file)
@@ -65,6 +65,18 @@ let germanMap:[String:String] =
     "阿拉伯文" : "Arabisch",
     "越南文" : "Vietnamesisch",
     "马来文" :"Malaiisch",
+    "丹麦文":"Dänisch",
+    "希腊文":"Griechisch",
+    "芬兰文":"Finnisch",
+    "希伯来文":"Hebräisch",
+    "印地文":"Hindi",
+    "意大利文":"Italienisch",
+    "荷兰文":"Niederländisch",
+    "挪威文":"Norwegisch",
+    "波兰文":"Polnisch",
+    "瑞典文":"Schwedisch",
+    "斯瓦希里文":"Swahili",
+    "土耳其文":"Türkisch",
     
     "保存录音" : "Aufnahme speichern",
     "原文" : "Originaltext",
index 52bea5b..51b05dd 100644 (file)
@@ -65,6 +65,18 @@ let chineseTraditionalMap:[String:String] =
     "阿拉伯文" : "阿拉伯文",
     "越南文" : "越南文",
     "马来文" : "馬來文",
+      "丹麦文":"丹麥文",
+    "希腊文":"希臘文",
+    "芬兰文":"芬蘭文",
+    "希伯来文":"希伯來文",
+    "印地文":"印地文",
+    "意大利文":"意大利文",
+    "荷兰文":"荷蘭文",
+    "挪威文":"挪威文",
+    "波兰文":"波蘭文",
+    "瑞典文":"瑞典文",
+    "斯瓦希里文":"斯瓦希里文",
+    "土耳其文":"土耳其文",
     
     "保存录音" : "保存錄音",
     "原文" : "原文",
index 95feae3..b4cd28b 100644 (file)
@@ -65,6 +65,18 @@ let vietnameseMap:[String:String] =
     "阿拉伯文" : "Tiếng Ả Rập",
     "越南文" : "Tiếng Việt",
     "马来文" :"Tiếng Mã Lai",
+        "丹麦文":"Tiếng Đan Mạch",
+    "希腊文":"Tiếng Hy Lạp",
+    "芬兰文":"Tiếng Phần Lan",
+    "希伯来文":"Tiếng Do Thái",
+    "印地文":"Tiếng Hindi",
+    "意大利文":"Tiếng Ý",
+    "荷兰文":"Tiếng Hà Lan",
+    "挪威文":"Tiếng Na Uy",
+    "波兰文":"Tiếng Ba Lan",
+    "瑞典文":"Tiếng Thụy Điển",
+    "斯瓦希里文":"Tiếng Swahili",
+    "土耳其文":"Tiếng Thổ Nhĩ Kỳ",
     
     "保存录音" : "Lưu bản ghi âm",
     "原文" : "Văn bản gốc",
index 173e51b..16cf06b 100644 (file)
@@ -66,6 +66,18 @@ let chineseMap:[String:String] =
     "阿拉伯文" : "",
     "越南文" : "",
     "马来文":"",
+    "丹麦文":"",
+    "希腊文":"",
+    "芬兰文":"",
+    "希伯来文":"",
+    "印地文":"",
+    "意大利文":"",
+    "荷兰文":"",
+    "挪威文":"",
+    "波兰文":"",
+    "瑞典文":"",
+    "斯瓦希里文":"",
+    "土耳其文":"",
 
     
     "保存录音" : "",
index 734899f..eb6e67d 100644 (file)
@@ -65,6 +65,18 @@ let englishMap:[String:String] =
     "阿拉伯文" : "Arabic",
     "越南文" : "Vietnamese",
     "马来文":"Malay",
+     "丹麦文":"Danish",
+    "希腊文":"Greek",
+    "芬兰文":"Finnish",
+    "希伯来文":"Hebrew",
+    "印地文":"Hindi",
+    "意大利文":"Italian",
+    "荷兰文":"Dutch",
+    "挪威文":"Norwegian",
+    "波兰文":"Polish",
+    "瑞典文":"Swedish",
+    "斯瓦希里文":"Swahili",
+    "土耳其文":"Turkish",
     
     "保存录音" : "Save Recording",
     "原文" : "Original Text",
index 52e6ea3..345979f 100644 (file)
@@ -66,6 +66,18 @@ let frenchMap:[String:String] =
     "阿拉伯文" : "Arabe",
     "越南文" : "Vietnamien",
     "马来文" : "Malais",
+        "丹麦文":"Danois",
+    "希腊文":"Grec",
+    "芬兰文":"Finnois",
+    "希伯来文":"Hébreu",
+    "印地文":"Hindi",
+    "意大利文":"Italien",
+    "荷兰文":"Néerlandais",
+    "挪威文":"Norvégien",
+    "波兰文":"Polonais",
+    "瑞典文":"Suédois",
+    "斯瓦希里文":"Swahili",
+    "土耳其文":"Turc",
     
     "保存录音" : "Enregistrer l'enregistrement",
     "原文" : "Texte original",
index a3f4eb0..7259f99 100644 (file)
@@ -65,6 +65,18 @@ let indonesianMap:[String:String] =
     "阿拉伯文" : "Bahasa Arab",
     "越南文" : "Bahasa Vietnam",
     "马来文" : "Bahasa Melayu",
+        "丹麦文":"Bahasa Denmark",
+    "希腊文":"Bahasa Yunani",
+    "芬兰文":"Bahasa Finlandia",
+    "希伯来文":"Bahasa Ibrani",
+    "印地文":"Bahasa Hindi",
+    "意大利文":"Bahasa Italia",
+    "荷兰文":"Bahasa Belanda",
+    "挪威文":"Bahasa Norwegia",
+    "波兰文":"Bahasa Polandia",
+    "瑞典文":"Bahasa Swedia",
+    "斯瓦希里文":"Bahasa Swahili",
+    "土耳其文":"Bahasa Turki",
     
     "保存录音" : "Simpan Rekaman",
     "原文" : "Teks Asli",
index 835d252..99768cd 100644 (file)
@@ -65,6 +65,18 @@ let japaneseMap:[String:String] =
     "阿拉伯文" : "アラビア語",
     "越南文" : "ベトナム語",
     "马来文" : "マレー語",
+    "丹麦文":"デンマーク語",
+    "希腊文":"ギリシャ語",
+    "芬兰文":"フィンランド語",
+    "希伯来文":"ヘブライ語",
+    "印地文":"ヒンディー語",
+    "意大利文":"イタリア語",
+    "荷兰文":"オランダ語",
+    "挪威文":"ノルウェー語",
+    "波兰文":"ポーランド語",
+    "瑞典文":"スウェーデン語",
+    "斯瓦希里文":"スワヒリ語",
+    "土耳其文":"トルコ語",
 
     "保存录音" : "録音を保存",
     "原文" : "原文",
index 5660768..92b0c30 100644 (file)
@@ -66,6 +66,18 @@ let koreanMap:[String:String] =
     "阿拉伯文" : "아랍어",
     "越南文" : "베트남어",
     "马来文" : "말레이어",
+      "丹麦文":"덴마크어",
+    "希腊文":"그리스어",
+    "芬兰文":"핀란드어",
+    "希伯来文":"히브리어",
+    "印地文":"힌디어",
+    "意大利文":"이탈리아어",
+    "荷兰文":"네덜란드어",
+    "挪威文":"노르웨이어",
+    "波兰文":"폴란드어",
+    "瑞典文":"스웨덴어",
+    "斯瓦希里文":"스와힐리어",
+    "土耳其文":"터키어",
     
     "保存录音" : "녹음 저장",
     "原文" : "원문",
index 63323d7..2bad6be 100644 (file)
@@ -65,6 +65,18 @@ let malayMap:[String:String] =
     "阿拉伯文" : "Bahasa Arab",
     "越南文" : "Bahasa Vietnam",
     "马来文" : "Bahasa Melayu",
+        "丹麦文":"Bahasa Denmark",
+    "希腊文":"Bahasa Greek",
+    "芬兰文":"Bahasa Finland",
+    "希伯来文":"Bahasa Ibrani",
+    "印地文":"Bahasa Hindi",
+    "意大利文":"Bahasa Itali",
+    "荷兰文":"Bahasa Belanda",
+    "挪威文":"Bahasa Norway",
+    "波兰文":"Bahasa Poland",
+    "瑞典文":"Bahasa Sweden",
+    "斯瓦希里文":"Bahasa Swahili",
+    "土耳其文":"Bahasa Turki",
     
     "保存录音" : "Simpan Rekod",
     "原文" : "Teks Asal",
index 4d4190f..bc5367c 100644 (file)
@@ -65,6 +65,19 @@ let russianMap:[String:String] =
     "阿拉伯文" : "Арабский",
     "越南文" : "Вьетнамский",
     "马来文" :"Малайский",
+        "丹麦文":"Датский",
+    "希腊文":"Греческий",
+    "芬兰文":"Финский",
+    "希伯来文":"Иврит",
+    "印地文":"Хинди",
+    "意大利文":"Итальянский",
+    "荷兰文":"Нидерландский",
+    "挪威文":"Норвежский",
+    "波兰文":"Польский",
+    "瑞典文":"Шведский",
+    "斯瓦希里文":"Суахили",
+    "土耳其文":"Турецкий",
+
     
     "保存录音" : "Сохранить запись",
     "原文" : "Оригинальный текст",
index 237c5ee..b3353a9 100644 (file)
@@ -66,6 +66,18 @@ let spanishMap:[String:String] =
     "阿拉伯文" : "Árabe",
     "越南文" : "Vietnamita",
     "马来文" :"Malayo",
+        "丹麦文":"Danés",
+    "希腊文":"Griego",
+    "芬兰文":"Finlandés",
+    "希伯来文":"Hebreo",
+    "印地文":"Hindi",
+    "意大利文":"Italiano",
+    "荷兰文":"Holandés",
+    "挪威文":"Noruego",
+    "波兰文":"Polaco",
+    "瑞典文":"Sueco",
+    "斯瓦希里文":"Swahili",
+    "土耳其文":"Turco",
     
     "保存录音" : "Guardar grabación",
     "原文" : "Texto original",
index 80e4a31..df50067 100644 (file)
@@ -65,6 +65,18 @@ let thaiMap:[String:String] =
     "阿拉伯文" : "ภาษาอาหรับ",
     "越南文" : "ภาษาวิเอตนาม",
     "马来文" :"ภาษามลายู",
+       "丹麦文":"ภาษาเดนมาร์ก",
+    "希腊文":"ภาษากรีก",
+    "芬兰文":"ภาษาฟินแลนด์",
+    "希伯来文":"ภาษาฮีบรู",
+    "印地文":"ภาษาฮินดี",
+    "意大利文":"ภาษาอิตาลี",
+    "荷兰文":"ภาษาดัตช์",
+    "挪威文":"ภาษานอร์เวย์",
+    "波兰文":"ภาษาโปแลนด์",
+    "瑞典文":"ภาษาสวีเดน",
+    "斯瓦希里文":"ภาษาสวาฮีลี",
+    "土耳其文":"ภาษาตุรกี",
     
     "保存录音" : "บันทึกเสียง",
     "原文" : "ข้อความต้นฉบับ",
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/Info.plist b/ShenYin/framework/JLAudioUnitKit.xcframework/Info.plist
deleted file mode 100644 (file)
index c989e87..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>AvailableLibraries</key>
-       <array>
-               <dict>
-                       <key>BinaryPath</key>
-                       <string>JLAudioUnitKit.framework/JLAudioUnitKit</string>
-                       <key>LibraryIdentifier</key>
-                       <string>ios-arm64</string>
-                       <key>LibraryPath</key>
-                       <string>JLAudioUnitKit.framework</string>
-                       <key>SupportedArchitectures</key>
-                       <array>
-                               <string>arm64</string>
-                       </array>
-                       <key>SupportedPlatform</key>
-                       <string>ios</string>
-               </dict>
-               <dict>
-                       <key>BinaryPath</key>
-                       <string>JLAudioUnitKit.framework/JLAudioUnitKit</string>
-                       <key>LibraryIdentifier</key>
-                       <string>ios-x86_64-simulator</string>
-                       <key>LibraryPath</key>
-                       <string>JLAudioUnitKit.framework</string>
-                       <key>SupportedArchitectures</key>
-                       <array>
-                               <string>x86_64</string>
-                       </array>
-                       <key>SupportedPlatform</key>
-                       <string>ios</string>
-                       <key>SupportedPlatformVariant</key>
-                       <string>simulator</string>
-               </dict>
-       </array>
-       <key>CFBundlePackageType</key>
-       <string>XFWK</string>
-       <key>XCFrameworkFormatVersion</key>
-       <string>1.0</string>
-</dict>
-</plist>
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h
deleted file mode 100644 (file)
index e6b3af6..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-//  JLAudioUnitKit.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//
-
-#import <Foundation/Foundation.h>
-
-//! Project version number for JLAudioUnitKit.
-FOUNDATION_EXPORT double JLAudioUnitKitVersionNumber;
-
-//! Project version string for JLAudioUnitKit.
-FOUNDATION_EXPORT const unsigned char JLAudioUnitKitVersionString[];
-
-// In this header, you should import all the public headers of your framework using statements like #import <JLAudioUnitKit/PublicHeader.h>
-
-#import <JLAudioUnitKit/JLSpeexDecoder.h>
-#import <JLAudioUnitKit/JLOpusDecoder.h>
-#import <JLAudioUnitKit/JLOpusEncoder.h>
-#import <JLAudioUnitKit/JLOpusFormat.h>
-#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
-#import <JLAudioUnitKit/JLPcmToWtg.h>
-#import <JLAudioUnitKit/JLPcmToWav.h>
-#import <JLAudioUnitKit/JLAudioUnitPlayer.h>
-#import <JLAudioUnitKit/JLOpusToOgg.h>
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h
deleted file mode 100644 (file)
index 7da831c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-//  JLAudioUnitPlayer.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/4/16.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <AudioToolbox/AudioToolbox.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NS_ENUM(NSInteger, JLAudioUnitPlayerType) {
-    JLAudioUnitPlayerTypeFile,   // 支持 MP3/WAV/AAC 等文件格式(AVAudioPlayer)
-    JLAudioUnitPlayerTypePCM      // 支持 PCM 流式播放(Audio Queue)
-};
-
-@class JLAudioUnitPlayer;
-
-@protocol JLAudioPlayerDelegate <NSObject>
-@optional
-// 播放进度更新(秒)
-- (void)audioPlayer:(JLAudioUnitPlayer *)player didUpdateProgress:(NSTimeInterval)currentTime duration:(NSTimeInterval)duration;
-// 播放完成
-- (void)audioPlayerDidFinishPlaying:(JLAudioUnitPlayer *)player;
-// 播放错误
-- (void)audioPlayer:(JLAudioUnitPlayer *)player didFailWithError:(NSError *)error;
-@end
-
-@interface JLAudioUnitPlayer : NSObject
-
-@property (nonatomic, weak) id<JLAudioPlayerDelegate> delegate;
-@property (nonatomic, readonly) NSTimeInterval duration;  // 总时长(文件模式下有效)
-@property (nonatomic, readonly) NSTimeInterval currentTime;
-@property (nonatomic, readonly) BOOL isPlaying;
-
-#pragma mark - 初始化方法
-
-/// 文件播放初始化(MP3/WAV/AAC)
-- (instancetype)initWithAudioFile:(NSString *)filePath;
-
-/// PCM 流播放初始化(需指定格式)
-- (instancetype)initWithPCMFormat:(AudioStreamBasicDescription)format;
-
-#pragma mark - 播放控制
-- (void)play;
-- (void)pause;
-- (void)stop;
-- (void)seekToTime:(NSTimeInterval)time; // 仅文件模式有效
-
-#pragma mark - PCM 流式输入(仅 PCM 模式有效)
-- (void)appendPCMData:(NSData *)pcmData;
-- (void)endPCMStream; // 结束 PCM 流输入
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h
deleted file mode 100644 (file)
index 711e2e9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-//  JLOpusDecoder.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//  Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <JLAudioUnitKit/JLOpusFormat.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@class JLOpusDecoder;
-
-/// Opus 解码代理
-@protocol JLOpusDecoderDelegate <NSObject>
-
-/// Opus 数据解码
-/// - Parameters:
-///   - decoder: 解码器
-///   - data: pcm 数据
-///   - error: 错误信息
--(void)opusDecoder:(JLOpusDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
-
-@end
-
-typedef void(^JLOpusDecoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
-
-/// Opus 解码
-@interface JLOpusDecoder : NSObject
-
-/// 数据格式参数
-@property (nonatomic, strong) JLOpusFormat *opusFormat;
-
-/// 代理委托
-@property(nonatomic, weak) id<JLOpusDecoderDelegate> delegate;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/// 初始化
-/// - Parameters:
-///   - format: 解码格式
-///   - delegate: 代理
-- (instancetype)initDecoder:(JLOpusFormat *)format delegate:(id<JLOpusDecoderDelegate>)delegate;
-
-/// 重置解码格式
-/// - Parameter format: 解码格式
--(void)resetOpusFramet:(JLOpusFormat *)format;
-
-/// 输入 Opus 数据
-/// - Parameter data: Opus 数据
--(void)opusDecoderInputData:(NSData *)data;
-
-/// 解码文件
-/// - Parameters:
-///   - input: opus 文件
-///   - outPut: 输出路径
-///   - result: 结果回调
--(void)opusDecodeFile:(NSString *)input outPut:(NSString *_Nullable)outPut Resoult:(JLOpusDecoderConvertBlock _Nullable)result;
-
-/// 释放
--(void)opusOnRelease;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h
deleted file mode 100644 (file)
index 037284e..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-//  JLOpusEncodeConfig.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/8/27.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NS_ENUM(NSInteger, JLOpusEncoderBandwidth) {
-    ///(4kHz bandpass)
-    JLOpusEncoderBandwidthNarrowband = 1101,   // 对应 OPUS_BANDWIDTH_NARROWBAND
-    /// (6kHz bandpass)
-    JLOpusEncoderBandwidthMediumband = 1102,   // 对应 OPUS_BANDWIDTH_MEDIUMBAND
-    /// (8kHz bandpass)
-    JLOpusEncoderBandwidthWideband   = 1103,     // 对应 OPUS_BANDWIDTH_WIDEBAND
-    /// (12kHz bandpass)
-    JLOpusEncoderBandwidthSuperwideband = 1104,// 对应 OPUS_BANDWIDTH_SUPERWIDEBAND
-    /// (20kHz bandpass)
-    JLOpusEncoderBandwidthFullband   = 1105      // 对应 OPUS_BANDWIDTH_FULLBAND
-};
-
-@interface JLOpusEncodeConfig : NSObject
-
-/// 采样率
-@property (nonatomic, assign) int sampleRate;
-
-/// 单/双声道
-@property (nonatomic, assign) int channels;
-
-/// 帧长度 20ms 默认值
-@property (nonatomic, assign) int frameDuration;
-
-/// 帧长度
-@property (nonatomic, assign) int frameSize;
-
-/// BitRate
-@property (nonatomic, assign) int bitRate;
-
-/// 可变比特率开关,默认 NO(使用 CBR)
-@property (nonatomic, assign) BOOL useVBR;
-
-/// VBR 限制模式,默认 NO
-@property (nonatomic, assign) BOOL constrainedVBR;
-
-/// 编码复杂度 0~10,默认 5
-@property (nonatomic, assign) int complexity;
-
-/// 强制输出声道数 -1: 自适应, 1: 单声道, 2: 双声道, 默认 -1
-@property (nonatomic, assign) int forceChannels;
-
-/// 是否启用 DTX(静音段不发送数据),默认 NO
-@property (nonatomic, assign) BOOL useDTX;
-
-/// 网络丢包百分比,默认 0
-@property (nonatomic, assign) int packetLossPercent;
-
-/// 最大带宽限制(OPUS_BANDWIDTH_*),默认 FULLBAND
-@property (nonatomic, assign) int bandwidth;
-
-/// PCM 输入有效位深,默认 16
-@property (nonatomic, assign) int lsbDepth;
-
-/// 专家模式下帧时长(ms),默认与 frameDuration 一致
-@property (nonatomic, assign) int expertFrameDuration;
-
-/// 是否启用数据头
-/// 默认是启用的
-@property (nonatomic, assign) BOOL hasDataHeader;
-
-/// 创建默认编码配置
-+ (instancetype)defaultConfig;
-
-/// 获取默认配置
-/// 杰理的无头配置
-+ (instancetype)defaultJL;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h
deleted file mode 100644 (file)
index fbe5af7..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-//  JLOpusEncoder.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//  Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@class JLOpusEncoder;
-
-/// Opus 编码代理
-@protocol JLOpusEncoderDelegate <NSObject>
-
-/// PCM 数据编码
-/// - Parameters:
-///   - encoder: 解码器
-///   - data: opus 数据
-///   - error: 错误信息
--(void)opusEncoder:(JLOpusEncoder *)encoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
-
-@end
-
-typedef void(^JLOpusEncoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
-
-/// Opus 编码
-@interface JLOpusEncoder : NSObject
-
-/// 音频格式
-@property (nonatomic, strong) JLOpusEncodeConfig *opusFormat;
-
-/// 代理
-@property (nonatomic, weak) id<JLOpusEncoderDelegate> delegate;
-
--(instancetype)init NS_UNAVAILABLE;
-
-/// 初始化
-/// - Parameters:
-///   - config: 音频格式
-///   - delegate: 代理
--(instancetype)initFormat:(JLOpusEncodeConfig *)format delegate:(id<JLOpusEncoderDelegate>)delegate;
-
-/// PCM 数据
-/// - Parameter data: PCM 数据
--(void)opusEncodeData:(NSData *)data;
-
-/// PCM 文件转换成 Opus 文件
-/// - Parameters:
-///   - pcmPath: PCM 文件存放路径
-///   - outPut: 文件输出路径
-///   - result: 结果回调
--(void)opusEncodeFile:(NSString *)pcmPath outPut:(NSString *_Nullable)outPut Resoult:(JLOpusEncoderConvertBlock _Nullable)result;
-
-/// 释放
--(void)opusOnRelease;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h
deleted file mode 100644 (file)
index 0165487..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-//  JLOpusOptions.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//  Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-#define OPUS_JL_MAX_FRAME_SIZE 48000 * 2
-#define OPUS_JL_MAX_PACKET_SIZE 1500
-
-
-@interface JLOpusFormat : NSObject
-
-/// 采样率
-@property (nonatomic, assign) int sampleRate;
-
-/// 单/双声道
-@property (nonatomic, assign) int channels;
-
-/// 帧长度 20ms 默认值
-@property (nonatomic, assign) int frameDuration;
-
-/// BitRate
-@property (nonatomic, assign) int bitRate;
-
-/// 数据帧大小
-@property (nonatomic, assign, readonly) int frameSize;
-
-/// 数据大小
-@property (nonatomic, assign) int dataSize;
-
-/// 是否包含数据头部
-@property (nonatomic, assign) BOOL hasDataHeader;
-
-/// 是否开启slik语音优化
-@property (nonatomic, assign) BOOL usVoipSlik;
-
-
--(instancetype)init NS_UNAVAILABLE;
-
-/// 默认配置
-/// sampleRate: 16000
-/// channels: 1
-/// frameDuration: 20
-/// dataSize: 40
-/// frameSize: 320
-/// hasDataHeader: YES
-/// bitRate: 16000
-/// usVoipSlik: false
-+(JLOpusFormat*)defaultFormats;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h
deleted file mode 100644 (file)
index 27b919b..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-//  JLOpusToOgg.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/5/16.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef void(^JLOpusToOggConvertBlock)(NSData *_Nullable oggData, BOOL isLast, NSError *_Nullable error);
-
-/// 将Opus数据转换为Ogg数据
-@interface JLOpusToOgg : NSObject
-
-/// 转码内容的回调
-@property(nonatomic,strong)JLOpusToOggConvertBlock _Nullable convertBlock;
-
-/// 帧长
-/// - Parameter frameLen: 帧长
-/// 默认值 40
-- (instancetype)initWithFrameLength:(uint32_t)frameLen;
-
-/// 开始流
--(void)startStream;
-
-/// 添加Opus数据
-/// - Parameter opusData: 符合杰理的无头裸 opus 数据
-- (void)appendOpusData:(NSData *)opusData;
-
-/// 关闭流
-- (void)closeStream;
-
-
-/// 将Opus数据转换为Ogg数据
-/// opus 必须为 16000
-/// opus 必须是 单声道
-/// - Parameters:
-///   - opusData: 符合杰理的无头裸 opus 数据
-///   - frameLen: 帧长 公版默认帧长是 40
-///   - duration: 转换后的时长
-///   - error: 错误
-+ (NSData *_Nullable)convertOpusDataToOgg:(NSData *)opusData
-                                 frameLen:(uint32_t)frameLen
-                                 duration:(double *)duration
-                                    error:(NSError *__autoreleasing _Nullable *)error ;
-
-/// 将Opus文件转换为Ogg文件
-/// 符合杰理的无头裸 opus 文件
-/// opus 必须为 16000
-/// opus 必须是 单声道
-/// - Parameters:
-///   - opusFilePath: opus文件路径
-///   - oggFilePath: ogg文件路径
-///   - frameLen: 帧长 公版默认帧长是 40
-///   - duration: 转换后的时长
-+(void)convertOpusFileToOgg:(NSString *)opusFilePath
-                oggFilePath:(NSString *)oggFilePath
-                   frameLen:(uint32_t)frameLen
-                   duration:(double *)duration;
-
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h
deleted file mode 100644 (file)
index b32ecef..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-//  JLPcmToWav.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/4/15.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// PCM 转 WAV
-@interface JLPcmToWav : NSObject
-
-#pragma mark - 流式编码接口
-
-/// 初始化流式编码器
-/// @param outputPath 输出文件路径
-/// @param sampleRate 采样率(如 16000)
-/// @param numChannels 声道数(1 或 2)
-/// @param bitsPerSample 位深(16)
-- (instancetype)initWithOutputPath:(NSString *)outputPath
-                       sampleRate:(uint32_t)sampleRate
-                     numChannels:(uint16_t)numChannels
-                  bitsPerSample:(uint16_t)bitsPerSample;
-
-/// 追加 PCM 数据(需确保数据格式与初始化参数一致)
-/// @param pcmData PCM 数据块
-/// @param error 错误信息
-- (BOOL)appendPCMData:(NSData *)pcmData error:(NSError **)error;
-
-/// 完成编码并关闭文件(必须调用以更新 WAV 头)
-/// @param error 错误信息
-- (BOOL)finishWithError:(NSError **)error;
-
-#pragma mark - 一次性编码接口(便捷方法)
-
-/// 将 PCM 数据一次性转为 WAV 文件
-/// @param pcmData PCM 数据块
-/// @param outputPath 输出文件路径
-/// @param sampleRate 采样率(如 16000)
-/// @param numChannels 声道数(1 或 2)
-/// @param bitsPerSample 位深(16)
-/// @param error 错误信息
-+ (BOOL)convertPCMData:(NSData *)pcmData
-            toWAVFile:(NSString *)outputPath
-           sampleRate:(uint32_t)sampleRate
-         numChannels:(uint16_t)numChannels
-      bitsPerSample:(uint16_t)bitsPerSample
-              error:(NSError **)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h
deleted file mode 100644 (file)
index 231b3e8..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-//  JLPcmToWtg.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/1/21.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface JLPcm2WtgModel : NSObject <NSCopying>
-
-/// 音频文件
-@property (nonatomic, copy) NSString *pcmPath;
-
-/// 输出文件
-@property (nonatomic, copy) NSString *wtgPath;
-
-@end
-
-
-/// JLPcmToWtgProtocol
-@protocol JLPcmToWtgDelegate <NSObject>
-
-/// 音频转码完成
-/// - Parameter model: 音频转码模型
-- (void)convertPcmToWtgDone:(JLPcm2WtgModel *)model;
-
-@end
-
-/// 音频转码
-/// PCM 转 WTG
-@interface JLPcmToWtg : NSObject
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/// 音频转码初始化
-/// - Parameter delegate: 音频转码代理
-- (instancetype)initWithDelegate:(id<JLPcmToWtgDelegate>)delegate;
-
-/// 音频转码
-/// 当前接口模型只限制 PCM 文件格式为:8k 16bit
-/// 输入的pcm文件(16bit,小端,8k采样率),wtg_filename:输出的wtg文件
-/// - Parameter model: 音频转码模型
--(void)convertPcmToWtg:(JLPcm2WtgModel *)model;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h
deleted file mode 100644 (file)
index ad223d0..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-//  JLSpeexUnit.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@class JLSpeexDecoder;
-
-@protocol JLSpeexDelegate <NSObject>
-
-/// Speex 数据解码
-/// - Parameters:
-///   - decoder: 解码器
-///   - data: PCM 数据
-///   - error: 错误信息
-- (void)speexDecoder:(JLSpeexDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
-
-@end
-
-typedef void(^JLSpeexConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
-
-/// Speex 数据解码
-@interface JLSpeexDecoder : NSObject
-
--(instancetype)init NS_UNAVAILABLE;
-
-/// 初始化
-/// - Parameter delegate: 委托
--(instancetype)initWithDelegate:(id<JLSpeexDelegate>)delegate;
-
-/// 委托
-@property (nonatomic, weak) id<JLSpeexDelegate> delegate;
-
-/// 输入 Speex 数据
-/// - Parameter data: Speex 数据
--(void)speexInputData:(NSData*)data;
-
-/// 将 Speex 转换为 PCM
-/// - Parameters:
-///   - filePath: Speex 路径
-///   - opPath: 输出路径
-///   - result: 结果回调
--(void)speexConvertToPcm:(NSString *)filePath outPutFilePath:(NSString * _Nullable)opPath Result:(JLSpeexConvertBlock)result;
-
-/// 释放对象
--(void)speexOnRelease;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist
deleted file mode 100644 (file)
index 8464456..0000000
Binary files a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist and /dev/null differ
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit
deleted file mode 100755 (executable)
index 10234ec..0000000
Binary files a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit and /dev/null differ
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap
deleted file mode 100644 (file)
index 5e1ae1d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-framework module JLAudioUnitKit {
-  umbrella header "JLAudioUnitKit.h"
-  export *
-
-  module * { export * }
-}
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt
deleted file mode 100644 (file)
index 6789fe6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-DESCRIPTION\r
------------\r
-This package includes the files needed to build the fixed point implementation\r
-of the ITU-T G.729 Appendix IV.\r
-\r
-DIFFERENCES WITH G.729B\r
------------------------\r
-The ANSI-C source code simulating the bit-exact, fixed point simulation \r
-software of enhanced VAD is integrated into the G.729B source code. \r
-The modification to the G.729B source code updated files of coder.c, \r
-cod_ld8k.c, bits.c, dec_sid.c, dtx.c, qsidgain.c, qsidlsf.c, tab_dtx.c, \r
-tab_dtx.h, ld8k.h, deleted vad.c/h and integrated the enhanced VAD functions\r
-into the G.729B project. The modification also replaced the original basic \r
-operators used in the original G.729B source code by the basic operators of \r
-ITU-T Software Tool Library STL2005.\r
-\r
-COMPILATION\r
------------\r
-For UNIX systems the following makefiles are provided\r
-\r
-   coder.mak\r
-   decoder.mak\r
-\r
-Edit the makefiles coder.mak and decoder.mak to set the proper options\r
-for your system.\r
-The command to compile and link all code on a UNIX system is\r
-\r
-   make -f coder.mak\r
-   make -f decoder.mak\r
-\r
-For other platforms, the *.mak files can be used to work out the\r
-compilation procedures.\r
-\r
-USAGE\r
------\r
-The command line instruction for the encoder is as follows:\r
-   coder inputfile bitstreamfile dtx_option mode x \r
-where:\r
-   inputfile    : 8 kHz sampled data file containing 16 bit linear PCM signal \r
-   bitstreamfile: binary file containing bitstream \r
-   dtx_option   : = 1 : DTX enabled   0 : DTX disabled\r
-   mode X       : Run encoder with enhanced VAD in operating point X, \r
-                  X=0 or 1 or 2 representing balanced or quality-preferred \r
-                  or bandwidth saving operating point, respectively  \r
-\r
-The command line for the decoder is as follows:\r
-   decoder bitstreamfile outputfile\r
-where:\r
-   bitstreamfile: binary file containing bitstream\r
-   outputfile   : 8 kHz sampled data file containing 16 bit linear PCM signal\r
-\r
-\r
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h
deleted file mode 100644 (file)
index e6b3af6..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-//  JLAudioUnitKit.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//
-
-#import <Foundation/Foundation.h>
-
-//! Project version number for JLAudioUnitKit.
-FOUNDATION_EXPORT double JLAudioUnitKitVersionNumber;
-
-//! Project version string for JLAudioUnitKit.
-FOUNDATION_EXPORT const unsigned char JLAudioUnitKitVersionString[];
-
-// In this header, you should import all the public headers of your framework using statements like #import <JLAudioUnitKit/PublicHeader.h>
-
-#import <JLAudioUnitKit/JLSpeexDecoder.h>
-#import <JLAudioUnitKit/JLOpusDecoder.h>
-#import <JLAudioUnitKit/JLOpusEncoder.h>
-#import <JLAudioUnitKit/JLOpusFormat.h>
-#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
-#import <JLAudioUnitKit/JLPcmToWtg.h>
-#import <JLAudioUnitKit/JLPcmToWav.h>
-#import <JLAudioUnitKit/JLAudioUnitPlayer.h>
-#import <JLAudioUnitKit/JLOpusToOgg.h>
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h
deleted file mode 100644 (file)
index 7da831c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-//  JLAudioUnitPlayer.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/4/16.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <AudioToolbox/AudioToolbox.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NS_ENUM(NSInteger, JLAudioUnitPlayerType) {
-    JLAudioUnitPlayerTypeFile,   // 支持 MP3/WAV/AAC 等文件格式(AVAudioPlayer)
-    JLAudioUnitPlayerTypePCM      // 支持 PCM 流式播放(Audio Queue)
-};
-
-@class JLAudioUnitPlayer;
-
-@protocol JLAudioPlayerDelegate <NSObject>
-@optional
-// 播放进度更新(秒)
-- (void)audioPlayer:(JLAudioUnitPlayer *)player didUpdateProgress:(NSTimeInterval)currentTime duration:(NSTimeInterval)duration;
-// 播放完成
-- (void)audioPlayerDidFinishPlaying:(JLAudioUnitPlayer *)player;
-// 播放错误
-- (void)audioPlayer:(JLAudioUnitPlayer *)player didFailWithError:(NSError *)error;
-@end
-
-@interface JLAudioUnitPlayer : NSObject
-
-@property (nonatomic, weak) id<JLAudioPlayerDelegate> delegate;
-@property (nonatomic, readonly) NSTimeInterval duration;  // 总时长(文件模式下有效)
-@property (nonatomic, readonly) NSTimeInterval currentTime;
-@property (nonatomic, readonly) BOOL isPlaying;
-
-#pragma mark - 初始化方法
-
-/// 文件播放初始化(MP3/WAV/AAC)
-- (instancetype)initWithAudioFile:(NSString *)filePath;
-
-/// PCM 流播放初始化(需指定格式)
-- (instancetype)initWithPCMFormat:(AudioStreamBasicDescription)format;
-
-#pragma mark - 播放控制
-- (void)play;
-- (void)pause;
-- (void)stop;
-- (void)seekToTime:(NSTimeInterval)time; // 仅文件模式有效
-
-#pragma mark - PCM 流式输入(仅 PCM 模式有效)
-- (void)appendPCMData:(NSData *)pcmData;
-- (void)endPCMStream; // 结束 PCM 流输入
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h
deleted file mode 100644 (file)
index 711e2e9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-//  JLOpusDecoder.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//  Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <JLAudioUnitKit/JLOpusFormat.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@class JLOpusDecoder;
-
-/// Opus 解码代理
-@protocol JLOpusDecoderDelegate <NSObject>
-
-/// Opus 数据解码
-/// - Parameters:
-///   - decoder: 解码器
-///   - data: pcm 数据
-///   - error: 错误信息
--(void)opusDecoder:(JLOpusDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
-
-@end
-
-typedef void(^JLOpusDecoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
-
-/// Opus 解码
-@interface JLOpusDecoder : NSObject
-
-/// 数据格式参数
-@property (nonatomic, strong) JLOpusFormat *opusFormat;
-
-/// 代理委托
-@property(nonatomic, weak) id<JLOpusDecoderDelegate> delegate;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/// 初始化
-/// - Parameters:
-///   - format: 解码格式
-///   - delegate: 代理
-- (instancetype)initDecoder:(JLOpusFormat *)format delegate:(id<JLOpusDecoderDelegate>)delegate;
-
-/// 重置解码格式
-/// - Parameter format: 解码格式
--(void)resetOpusFramet:(JLOpusFormat *)format;
-
-/// 输入 Opus 数据
-/// - Parameter data: Opus 数据
--(void)opusDecoderInputData:(NSData *)data;
-
-/// 解码文件
-/// - Parameters:
-///   - input: opus 文件
-///   - outPut: 输出路径
-///   - result: 结果回调
--(void)opusDecodeFile:(NSString *)input outPut:(NSString *_Nullable)outPut Resoult:(JLOpusDecoderConvertBlock _Nullable)result;
-
-/// 释放
--(void)opusOnRelease;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h
deleted file mode 100644 (file)
index 037284e..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-//  JLOpusEncodeConfig.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/8/27.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NS_ENUM(NSInteger, JLOpusEncoderBandwidth) {
-    ///(4kHz bandpass)
-    JLOpusEncoderBandwidthNarrowband = 1101,   // 对应 OPUS_BANDWIDTH_NARROWBAND
-    /// (6kHz bandpass)
-    JLOpusEncoderBandwidthMediumband = 1102,   // 对应 OPUS_BANDWIDTH_MEDIUMBAND
-    /// (8kHz bandpass)
-    JLOpusEncoderBandwidthWideband   = 1103,     // 对应 OPUS_BANDWIDTH_WIDEBAND
-    /// (12kHz bandpass)
-    JLOpusEncoderBandwidthSuperwideband = 1104,// 对应 OPUS_BANDWIDTH_SUPERWIDEBAND
-    /// (20kHz bandpass)
-    JLOpusEncoderBandwidthFullband   = 1105      // 对应 OPUS_BANDWIDTH_FULLBAND
-};
-
-@interface JLOpusEncodeConfig : NSObject
-
-/// 采样率
-@property (nonatomic, assign) int sampleRate;
-
-/// 单/双声道
-@property (nonatomic, assign) int channels;
-
-/// 帧长度 20ms 默认值
-@property (nonatomic, assign) int frameDuration;
-
-/// 帧长度
-@property (nonatomic, assign) int frameSize;
-
-/// BitRate
-@property (nonatomic, assign) int bitRate;
-
-/// 可变比特率开关,默认 NO(使用 CBR)
-@property (nonatomic, assign) BOOL useVBR;
-
-/// VBR 限制模式,默认 NO
-@property (nonatomic, assign) BOOL constrainedVBR;
-
-/// 编码复杂度 0~10,默认 5
-@property (nonatomic, assign) int complexity;
-
-/// 强制输出声道数 -1: 自适应, 1: 单声道, 2: 双声道, 默认 -1
-@property (nonatomic, assign) int forceChannels;
-
-/// 是否启用 DTX(静音段不发送数据),默认 NO
-@property (nonatomic, assign) BOOL useDTX;
-
-/// 网络丢包百分比,默认 0
-@property (nonatomic, assign) int packetLossPercent;
-
-/// 最大带宽限制(OPUS_BANDWIDTH_*),默认 FULLBAND
-@property (nonatomic, assign) int bandwidth;
-
-/// PCM 输入有效位深,默认 16
-@property (nonatomic, assign) int lsbDepth;
-
-/// 专家模式下帧时长(ms),默认与 frameDuration 一致
-@property (nonatomic, assign) int expertFrameDuration;
-
-/// 是否启用数据头
-/// 默认是启用的
-@property (nonatomic, assign) BOOL hasDataHeader;
-
-/// 创建默认编码配置
-+ (instancetype)defaultConfig;
-
-/// 获取默认配置
-/// 杰理的无头配置
-+ (instancetype)defaultJL;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h
deleted file mode 100644 (file)
index fbe5af7..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-//  JLOpusEncoder.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//  Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@class JLOpusEncoder;
-
-/// Opus 编码代理
-@protocol JLOpusEncoderDelegate <NSObject>
-
-/// PCM 数据编码
-/// - Parameters:
-///   - encoder: 解码器
-///   - data: opus 数据
-///   - error: 错误信息
--(void)opusEncoder:(JLOpusEncoder *)encoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
-
-@end
-
-typedef void(^JLOpusEncoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
-
-/// Opus 编码
-@interface JLOpusEncoder : NSObject
-
-/// 音频格式
-@property (nonatomic, strong) JLOpusEncodeConfig *opusFormat;
-
-/// 代理
-@property (nonatomic, weak) id<JLOpusEncoderDelegate> delegate;
-
--(instancetype)init NS_UNAVAILABLE;
-
-/// 初始化
-/// - Parameters:
-///   - config: 音频格式
-///   - delegate: 代理
--(instancetype)initFormat:(JLOpusEncodeConfig *)format delegate:(id<JLOpusEncoderDelegate>)delegate;
-
-/// PCM 数据
-/// - Parameter data: PCM 数据
--(void)opusEncodeData:(NSData *)data;
-
-/// PCM 文件转换成 Opus 文件
-/// - Parameters:
-///   - pcmPath: PCM 文件存放路径
-///   - outPut: 文件输出路径
-///   - result: 结果回调
--(void)opusEncodeFile:(NSString *)pcmPath outPut:(NSString *_Nullable)outPut Resoult:(JLOpusEncoderConvertBlock _Nullable)result;
-
-/// 释放
--(void)opusOnRelease;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h
deleted file mode 100644 (file)
index 0165487..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-//  JLOpusOptions.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//  Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-#define OPUS_JL_MAX_FRAME_SIZE 48000 * 2
-#define OPUS_JL_MAX_PACKET_SIZE 1500
-
-
-@interface JLOpusFormat : NSObject
-
-/// 采样率
-@property (nonatomic, assign) int sampleRate;
-
-/// 单/双声道
-@property (nonatomic, assign) int channels;
-
-/// 帧长度 20ms 默认值
-@property (nonatomic, assign) int frameDuration;
-
-/// BitRate
-@property (nonatomic, assign) int bitRate;
-
-/// 数据帧大小
-@property (nonatomic, assign, readonly) int frameSize;
-
-/// 数据大小
-@property (nonatomic, assign) int dataSize;
-
-/// 是否包含数据头部
-@property (nonatomic, assign) BOOL hasDataHeader;
-
-/// 是否开启slik语音优化
-@property (nonatomic, assign) BOOL usVoipSlik;
-
-
--(instancetype)init NS_UNAVAILABLE;
-
-/// 默认配置
-/// sampleRate: 16000
-/// channels: 1
-/// frameDuration: 20
-/// dataSize: 40
-/// frameSize: 320
-/// hasDataHeader: YES
-/// bitRate: 16000
-/// usVoipSlik: false
-+(JLOpusFormat*)defaultFormats;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h
deleted file mode 100644 (file)
index 27b919b..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-//  JLOpusToOgg.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/5/16.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef void(^JLOpusToOggConvertBlock)(NSData *_Nullable oggData, BOOL isLast, NSError *_Nullable error);
-
-/// 将Opus数据转换为Ogg数据
-@interface JLOpusToOgg : NSObject
-
-/// 转码内容的回调
-@property(nonatomic,strong)JLOpusToOggConvertBlock _Nullable convertBlock;
-
-/// 帧长
-/// - Parameter frameLen: 帧长
-/// 默认值 40
-- (instancetype)initWithFrameLength:(uint32_t)frameLen;
-
-/// 开始流
--(void)startStream;
-
-/// 添加Opus数据
-/// - Parameter opusData: 符合杰理的无头裸 opus 数据
-- (void)appendOpusData:(NSData *)opusData;
-
-/// 关闭流
-- (void)closeStream;
-
-
-/// 将Opus数据转换为Ogg数据
-/// opus 必须为 16000
-/// opus 必须是 单声道
-/// - Parameters:
-///   - opusData: 符合杰理的无头裸 opus 数据
-///   - frameLen: 帧长 公版默认帧长是 40
-///   - duration: 转换后的时长
-///   - error: 错误
-+ (NSData *_Nullable)convertOpusDataToOgg:(NSData *)opusData
-                                 frameLen:(uint32_t)frameLen
-                                 duration:(double *)duration
-                                    error:(NSError *__autoreleasing _Nullable *)error ;
-
-/// 将Opus文件转换为Ogg文件
-/// 符合杰理的无头裸 opus 文件
-/// opus 必须为 16000
-/// opus 必须是 单声道
-/// - Parameters:
-///   - opusFilePath: opus文件路径
-///   - oggFilePath: ogg文件路径
-///   - frameLen: 帧长 公版默认帧长是 40
-///   - duration: 转换后的时长
-+(void)convertOpusFileToOgg:(NSString *)opusFilePath
-                oggFilePath:(NSString *)oggFilePath
-                   frameLen:(uint32_t)frameLen
-                   duration:(double *)duration;
-
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h
deleted file mode 100644 (file)
index b32ecef..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-//  JLPcmToWav.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/4/15.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// PCM 转 WAV
-@interface JLPcmToWav : NSObject
-
-#pragma mark - 流式编码接口
-
-/// 初始化流式编码器
-/// @param outputPath 输出文件路径
-/// @param sampleRate 采样率(如 16000)
-/// @param numChannels 声道数(1 或 2)
-/// @param bitsPerSample 位深(16)
-- (instancetype)initWithOutputPath:(NSString *)outputPath
-                       sampleRate:(uint32_t)sampleRate
-                     numChannels:(uint16_t)numChannels
-                  bitsPerSample:(uint16_t)bitsPerSample;
-
-/// 追加 PCM 数据(需确保数据格式与初始化参数一致)
-/// @param pcmData PCM 数据块
-/// @param error 错误信息
-- (BOOL)appendPCMData:(NSData *)pcmData error:(NSError **)error;
-
-/// 完成编码并关闭文件(必须调用以更新 WAV 头)
-/// @param error 错误信息
-- (BOOL)finishWithError:(NSError **)error;
-
-#pragma mark - 一次性编码接口(便捷方法)
-
-/// 将 PCM 数据一次性转为 WAV 文件
-/// @param pcmData PCM 数据块
-/// @param outputPath 输出文件路径
-/// @param sampleRate 采样率(如 16000)
-/// @param numChannels 声道数(1 或 2)
-/// @param bitsPerSample 位深(16)
-/// @param error 错误信息
-+ (BOOL)convertPCMData:(NSData *)pcmData
-            toWAVFile:(NSString *)outputPath
-           sampleRate:(uint32_t)sampleRate
-         numChannels:(uint16_t)numChannels
-      bitsPerSample:(uint16_t)bitsPerSample
-              error:(NSError **)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h
deleted file mode 100644 (file)
index 231b3e8..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-//  JLPcmToWtg.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2025/1/21.
-//  Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface JLPcm2WtgModel : NSObject <NSCopying>
-
-/// 音频文件
-@property (nonatomic, copy) NSString *pcmPath;
-
-/// 输出文件
-@property (nonatomic, copy) NSString *wtgPath;
-
-@end
-
-
-/// JLPcmToWtgProtocol
-@protocol JLPcmToWtgDelegate <NSObject>
-
-/// 音频转码完成
-/// - Parameter model: 音频转码模型
-- (void)convertPcmToWtgDone:(JLPcm2WtgModel *)model;
-
-@end
-
-/// 音频转码
-/// PCM 转 WTG
-@interface JLPcmToWtg : NSObject
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/// 音频转码初始化
-/// - Parameter delegate: 音频转码代理
-- (instancetype)initWithDelegate:(id<JLPcmToWtgDelegate>)delegate;
-
-/// 音频转码
-/// 当前接口模型只限制 PCM 文件格式为:8k 16bit
-/// 输入的pcm文件(16bit,小端,8k采样率),wtg_filename:输出的wtg文件
-/// - Parameter model: 音频转码模型
--(void)convertPcmToWtg:(JLPcm2WtgModel *)model;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h
deleted file mode 100644 (file)
index ad223d0..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-//  JLSpeexUnit.h
-//  JLAudioUnitKit
-//
-//  Created by EzioChan on 2024/11/14.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@class JLSpeexDecoder;
-
-@protocol JLSpeexDelegate <NSObject>
-
-/// Speex 数据解码
-/// - Parameters:
-///   - decoder: 解码器
-///   - data: PCM 数据
-///   - error: 错误信息
-- (void)speexDecoder:(JLSpeexDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
-
-@end
-
-typedef void(^JLSpeexConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
-
-/// Speex 数据解码
-@interface JLSpeexDecoder : NSObject
-
--(instancetype)init NS_UNAVAILABLE;
-
-/// 初始化
-/// - Parameter delegate: 委托
--(instancetype)initWithDelegate:(id<JLSpeexDelegate>)delegate;
-
-/// 委托
-@property (nonatomic, weak) id<JLSpeexDelegate> delegate;
-
-/// 输入 Speex 数据
-/// - Parameter data: Speex 数据
--(void)speexInputData:(NSData*)data;
-
-/// 将 Speex 转换为 PCM
-/// - Parameters:
-///   - filePath: Speex 路径
-///   - opPath: 输出路径
-///   - result: 结果回调
--(void)speexConvertToPcm:(NSString *)filePath outPutFilePath:(NSString * _Nullable)opPath Result:(JLSpeexConvertBlock)result;
-
-/// 释放对象
--(void)speexOnRelease;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist
deleted file mode 100644 (file)
index 6d387d3..0000000
Binary files a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist and /dev/null differ
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit
deleted file mode 100755 (executable)
index 61fc959..0000000
Binary files a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit and /dev/null differ
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap
deleted file mode 100644 (file)
index 5e1ae1d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-framework module JLAudioUnitKit {
-  umbrella header "JLAudioUnitKit.h"
-  export *
-
-  module * { export * }
-}
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources
deleted file mode 100644 (file)
index be9f00c..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>files</key>
-       <dict>
-               <key>Headers/JLAudioUnitKit.h</key>
-               <data>
-               hE2nr+4q2/NdSgBaayJc7ZoOXb0=
-               </data>
-               <key>Headers/JLAudioUnitPlayer.h</key>
-               <data>
-               QPMLV/XA8hjk39d+vT+S57t0fDU=
-               </data>
-               <key>Headers/JLOpusDecoder.h</key>
-               <data>
-               K1bYcaJ67prImNlGuldy8csTRHc=
-               </data>
-               <key>Headers/JLOpusEncodeConfig.h</key>
-               <data>
-               NArAew5QxnSJGsD0tRzQ2V7bHrY=
-               </data>
-               <key>Headers/JLOpusEncoder.h</key>
-               <data>
-               BkgtVe9kCM4Fkc9oH1tC3BNh5Kw=
-               </data>
-               <key>Headers/JLOpusFormat.h</key>
-               <data>
-               Du1x3VNk87NstmspRk7ElijuZrk=
-               </data>
-               <key>Headers/JLOpusToOgg.h</key>
-               <data>
-               fSJT6LcyylJHTHX1wsN3JHG2FxU=
-               </data>
-               <key>Headers/JLPcmToWav.h</key>
-               <data>
-               /BbZmqmWpWVBusXqjnzbjaBNCNg=
-               </data>
-               <key>Headers/JLPcmToWtg.h</key>
-               <data>
-               zoOdOFpIulND0F1OrfIXR1H0kh0=
-               </data>
-               <key>Headers/JLSpeexDecoder.h</key>
-               <data>
-               5ecBKtD3BDGccLiKpTs0fS0CSgs=
-               </data>
-               <key>Info.plist</key>
-               <data>
-               Q2Tz1ljDQKvKxkn8afbgb/2RVnU=
-               </data>
-               <key>Modules/module.modulemap</key>
-               <data>
-               2vYf0m+hGTOTapX6sliv/F1E1VI=
-               </data>
-               <key>readme.txt</key>
-               <data>
-               wijZX0Dr2OlODWS6XYbpeKabb7g=
-               </data>
-       </dict>
-       <key>files2</key>
-       <dict>
-               <key>Headers/JLAudioUnitKit.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       J5pq6Ed3fR+cQ7CGPXDoPl7BZzix7Cjf5yJZFRRvxqs=
-                       </data>
-               </dict>
-               <key>Headers/JLAudioUnitPlayer.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       qBz0OA82HUH4kBtO8xiUw7Q4ohtiIvCSYfCqax5xjJY=
-                       </data>
-               </dict>
-               <key>Headers/JLOpusDecoder.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       cnAj6Nt6vgRLoEH6QY3Q+gYpjcxGPN1OLLZbCgdLymI=
-                       </data>
-               </dict>
-               <key>Headers/JLOpusEncodeConfig.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       qrPpsrXaNCvyxf0/gUZtvveL+ywsfgBUrMPFibjneOo=
-                       </data>
-               </dict>
-               <key>Headers/JLOpusEncoder.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       PK+jl5IacMxuDEKkBwsjwpnGYxj/6Th3ICW4YQ7aRPA=
-                       </data>
-               </dict>
-               <key>Headers/JLOpusFormat.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       Nm6vM9/EbFzyIWbsysu6EOO2S+vZVeplcop4NvoJaMA=
-                       </data>
-               </dict>
-               <key>Headers/JLOpusToOgg.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       dNSvJJnED/6E1p7TYZ4zBzUnLDVsZ8NovuNYjge6T/w=
-                       </data>
-               </dict>
-               <key>Headers/JLPcmToWav.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       l/SEQhSFh7ctq/pBV+Z7X+Z0/gz30eCw3s31otjMPho=
-                       </data>
-               </dict>
-               <key>Headers/JLPcmToWtg.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       MwtbX3Sa0nytA+m11x+1rDvP4WvJnZLljshuT5B3WD0=
-                       </data>
-               </dict>
-               <key>Headers/JLSpeexDecoder.h</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       pV0X3xn07Ps7wE+0EfL9Yu/08tp8Ug8s14iDigRU46o=
-                       </data>
-               </dict>
-               <key>Modules/module.modulemap</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       akFCUM59aSAaRM/ADWQ138YT9GD3oAjcaTvTUo24Ml8=
-                       </data>
-               </dict>
-               <key>readme.txt</key>
-               <dict>
-                       <key>hash2</key>
-                       <data>
-                       +2GG9ORrf2yJnBe2joKWtyBZL9p2sCH8EXqK1GIgW0E=
-                       </data>
-               </dict>
-       </dict>
-       <key>rules</key>
-       <dict>
-               <key>^.*</key>
-               <true/>
-               <key>^.*\.lproj/</key>
-               <dict>
-                       <key>optional</key>
-                       <true/>
-                       <key>weight</key>
-                       <real>1000</real>
-               </dict>
-               <key>^.*\.lproj/locversion.plist$</key>
-               <dict>
-                       <key>omit</key>
-                       <true/>
-                       <key>weight</key>
-                       <real>1100</real>
-               </dict>
-               <key>^Base\.lproj/</key>
-               <dict>
-                       <key>weight</key>
-                       <real>1010</real>
-               </dict>
-               <key>^version.plist$</key>
-               <true/>
-       </dict>
-       <key>rules2</key>
-       <dict>
-               <key>.*\.dSYM($|/)</key>
-               <dict>
-                       <key>weight</key>
-                       <real>11</real>
-               </dict>
-               <key>^(.*/)?\.DS_Store$</key>
-               <dict>
-                       <key>omit</key>
-                       <true/>
-                       <key>weight</key>
-                       <real>2000</real>
-               </dict>
-               <key>^.*</key>
-               <true/>
-               <key>^.*\.lproj/</key>
-               <dict>
-                       <key>optional</key>
-                       <true/>
-                       <key>weight</key>
-                       <real>1000</real>
-               </dict>
-               <key>^.*\.lproj/locversion.plist$</key>
-               <dict>
-                       <key>omit</key>
-                       <true/>
-                       <key>weight</key>
-                       <real>1100</real>
-               </dict>
-               <key>^Base\.lproj/</key>
-               <dict>
-                       <key>weight</key>
-                       <real>1010</real>
-               </dict>
-               <key>^Info\.plist$</key>
-               <dict>
-                       <key>omit</key>
-                       <true/>
-                       <key>weight</key>
-                       <real>20</real>
-               </dict>
-               <key>^PkgInfo$</key>
-               <dict>
-                       <key>omit</key>
-                       <true/>
-                       <key>weight</key>
-                       <real>20</real>
-               </dict>
-               <key>^embedded\.provisionprofile$</key>
-               <dict>
-                       <key>weight</key>
-                       <real>20</real>
-               </dict>
-               <key>^version\.plist$</key>
-               <dict>
-                       <key>weight</key>
-                       <real>20</real>
-               </dict>
-       </dict>
-</dict>
-</plist>
diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt b/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt
deleted file mode 100644 (file)
index 6789fe6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-DESCRIPTION\r
------------\r
-This package includes the files needed to build the fixed point implementation\r
-of the ITU-T G.729 Appendix IV.\r
-\r
-DIFFERENCES WITH G.729B\r
------------------------\r
-The ANSI-C source code simulating the bit-exact, fixed point simulation \r
-software of enhanced VAD is integrated into the G.729B source code. \r
-The modification to the G.729B source code updated files of coder.c, \r
-cod_ld8k.c, bits.c, dec_sid.c, dtx.c, qsidgain.c, qsidlsf.c, tab_dtx.c, \r
-tab_dtx.h, ld8k.h, deleted vad.c/h and integrated the enhanced VAD functions\r
-into the G.729B project. The modification also replaced the original basic \r
-operators used in the original G.729B source code by the basic operators of \r
-ITU-T Software Tool Library STL2005.\r
-\r
-COMPILATION\r
------------\r
-For UNIX systems the following makefiles are provided\r
-\r
-   coder.mak\r
-   decoder.mak\r
-\r
-Edit the makefiles coder.mak and decoder.mak to set the proper options\r
-for your system.\r
-The command to compile and link all code on a UNIX system is\r
-\r
-   make -f coder.mak\r
-   make -f decoder.mak\r
-\r
-For other platforms, the *.mak files can be used to work out the\r
-compilation procedures.\r
-\r
-USAGE\r
------\r
-The command line instruction for the encoder is as follows:\r
-   coder inputfile bitstreamfile dtx_option mode x \r
-where:\r
-   inputfile    : 8 kHz sampled data file containing 16 bit linear PCM signal \r
-   bitstreamfile: binary file containing bitstream \r
-   dtx_option   : = 1 : DTX enabled   0 : DTX disabled\r
-   mode X       : Run encoder with enhanced VAD in operating point X, \r
-                  X=0 or 1 or 2 representing balanced or quality-preferred \r
-                  or bandwidth saving operating point, respectively  \r
-\r
-The command line for the decoder is as follows:\r
-   decoder bitstreamfile outputfile\r
-where:\r
-   bitstreamfile: binary file containing bitstream\r
-   outputfile   : 8 kHz sampled data file containing 16 bit linear PCM signal\r
-\r
-\r
index 148b97e..e540750 100644 (file)
@@ -4,20 +4,11 @@
 <dict>
        <key>NSPrivacyTracking</key>
        <false/>
-       <key>NSPrivacyTrackingDomains</key>
-       <array/>
        <key>NSPrivacyAccessedAPITypes</key>
-       <array>
-               <dict>
-                       <key>NSPrivacyAccessedAPIType</key>
-                       <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
-                       <key>NSPrivacyAccessedAPITypeReasons</key>
-                       <array>
-                               <string>E174.1</string>
-                       </array>
-               </dict>
-       </array>
+       <array/>
        <key>NSPrivacyCollectedDataTypes</key>
        <array/>
+       <key>NSPrivacyTrackingDomains</key>
+       <array/>
 </dict>
 </plist>