字幕翻译优化
authorliangzhenying <867174124@qq.com>
Fri, 20 Mar 2026 10:20:10 +0000 (18:20 +0800)
committerliangzhenying <867174124@qq.com>
Fri, 20 Mar 2026 10:20:10 +0000 (18:20 +0800)
ShenYin/DeepChordsSdk/DCBleRecord.swift
ShenYin/ShenYin/Channel/DeepChords/Channel/Config/CCPage.swift
ShenYin/ShenYin/Channel/DeepChords/Channel/UI/JoyAiFunctionVC.swift
ShenYin/ShenYin/Channel/PLAYBOY/Channel/UI/PbSubTitleVC.swift
ShenYin/ShenYin/Channel/PLAYBOY/Sdk/DcSdkManager.swift
ShenYin/ShenYin/Channel/PLAYBOY/Sdk/DcSubTitle.swift
ShenYin/ShenYin/UI/Home/SubTitle/PipContentVC.swift
ShenYin/ShenYin/UI/Home/SubTitle/SubTitleSetVC.swift
ShenYin/ShenYin/UI/common/pop/LanguagePicker/LanguageSelectItem.swift

index 73fe130..04596ef 100644 (file)
@@ -92,7 +92,7 @@ public class DCBleRecord {
                 asrCallback?(asrText)
             }
             if let translate = model.translateResult,let text = translate.text,!text.isEmpty{
-                DCLogger.debug("translate = \(text)")
+//                DCLogger.debug("translate = \(text)")
                 translateSplitCallback?(DCAsrModel(text: text, index: Int(translate.definiteIndex), definite: translate.definite))
                 let msg = translateList.firstIndex (where: { (str,idx) in
                     return idx == translate.definiteIndex;
index 4545195..a24b989 100644 (file)
@@ -66,15 +66,15 @@ class CCPage{
         }
     }
     static func gotoSubTitle(){
-        if CCConfig.sdkType == .joy{
+        if CCConfig.sdkType == .lianJuXing{
             if #available(iOS 15.0, *) {
-                App.shared.goToPage(JoySubTitleVC())
+                App.shared.goToPage(PbSubTitleVC())
             } else {
                 // Fallback on earlier versions
             }
         }
         else{
-
+            YLprogressHUD.showAutoHiden("当前设备不支持字幕翻译")
         }
     }
 }
index 2b0550a..c870bc7 100644 (file)
@@ -84,7 +84,10 @@ class JoyAiFunctionVC:BaseVC{
         }
     }
     @objc func subTitleAction(){
-        CCPage.gotoSubTitle()
+        if CCBleManager.shared.isConected(mac: device.mac){
+            CCPage.gotoSubTitle()
+        }
+        
     }
 }
 
index 98b7a09..0ca36d3 100644 (file)
@@ -29,21 +29,13 @@ class PbSubTitleVC: BaseVC {
         languageItem.leftLabel.language = cache.lan_form
         languageItem.rightLabel.language = cache.lan_to
     }
-    override func viewDidAppear(_ animated: Bool) {
-        super.viewDidAppear(animated)
-        
-    }
-    override func viewDidDisappear(_ animated: Bool) {
-        super.viewDidDisappear(animated)
-        sdk.stopEarRecord()
-    }
+
     override func setupViews() {
         view.backgroundColor = .color(.bgColor)
         navBar.do { v in
             v.addSubview(languageItem)
             v.rightView.isHidden = false
-//            v.rightView.setImage(UIImage(named: "set_right"), for: .normal)
-            navBar.rightView.setImage(UIImage(named: "help_icon"), for: .normal)
+            v.rightView.setImage(UIImage(named: "set_right"), for: .normal)
         }
         
         view.addSubviews([toolBar,tableView])
@@ -54,11 +46,13 @@ class PbSubTitleVC: BaseVC {
             v.rightItem.isHidden = true
         }
         languageItem.do { v in
-            v.languageChange = { (from,to) in
+            v.languageChange = {[weak self] (from,to) in
+                guard let self = self else{return}
                 let cache = SubTitleCache.shared.get()
                 cache.lan_form = from
                 cache.lan_to = to
                 SubTitleCache.shared.save(cache)
+                restart()
             }
         }
         tableView.do { v in
@@ -76,7 +70,7 @@ class PbSubTitleVC: BaseVC {
 //            make.size.equalTo(10)
 //            make.center.equalToSuperview()
 //        }
-        pipManager.setupPictureInPicture(soureceView: self.view)
+        pipManager.setupPictureInPicture(soureceView: self.navigationController!.view)
     }
     override func setupLayout() {
         languageItem.snp.makeConstraints { make in
@@ -115,10 +109,18 @@ class PbSubTitleVC: BaseVC {
         
     }
     override func navRightViewTapped() {
-        if !languageItem.enable {
-            return
-        }
         let vc = SubTitleSetVC()
+        vc.languageChanged = {[weak self] in
+            guard let self = self else{return}
+            let cache = SubTitleCache.shared.get()
+            languageItem.leftLabel.language = cache.lan_form
+            languageItem.rightLabel.language = cache.lan_to
+            restart()
+        }
+        vc.soureChanged = {[weak self] in
+            guard let self = self else{return}
+            restart()
+        }
         App.shared.goToPage(vc)
     }
 
@@ -144,26 +146,29 @@ class PbSubTitleVC: BaseVC {
             }
         }
     }
+    func restart(){
+        sdk.stopEarRecord()
+        DispatchQueue.main.asyncAfter(deadline:.now() + 1) {  
+            Logger.debug("延迟2秒后执行")
+            self.sdk.startEarRecord(from: self.languageItem.leftLabel.language, to: self.languageItem.rightLabel.language)
+        }
+        
+    }
 }
 
 
 @available(iOS 15.0, *)
 extension PbSubTitleVC:RecordBarDelegate{
     func recordBarLanguageChange(_ bar: RecordBar) {
-        
         sdk.stopEarRecord()
         sdk.startEarRecord(from: languageItem.leftLabel.language, to: languageItem.rightLabel.language)
     }
     func recordBar(_ bar: RecordBar, stateChange state: RecordBarSate) {
         if state == .start {
             sdk.startEarRecord(from: languageItem.leftLabel.language, to: languageItem.rightLabel.language)
-            languageItem.enable = false
-            navBar.rightView.alpha = 0.5
         }
         else if state == .stop{
             sdk.stopEarRecord()
-            languageItem.enable = true
-            navBar.rightView.alpha = 1
         }
     }
 }
index e4fe6fc..facef88 100644 (file)
@@ -14,7 +14,7 @@ class DcSdkManager{
     func initSdk(){
         DcCall.shared.start()
         DCSdk.shared.initSDK()
-        DCLogger.isDebug = false
+        DCLogger.isDebug = true
         DCSdk.shared.authCallback = {[weak self] (code,msg)in
             DCLogger.debug(code,msg)
             guard let self = self else{return}
index 388e0f4..683acaf 100644 (file)
@@ -49,15 +49,12 @@ class DcSubTitle:NSObject{
 //        DCBleRecord.shared.translateDataCallback = { data in
 //            PcmSound.sharedInstance().feed(data)
 //        }
-//        DCBleRecord.shared.codeCallback = { [weak self] code in
-//            guard let self = self else{return}
-//            if code == 20002 || code == 20003{
-//                if let model = dataList.last,model.send.isEmpty{
-//                    dataList.removeLast()
-//                    refreshData()
-//                }
-//            }
-//        }
+        DCBleRecord.shared.codeCallback = { [weak self] code in
+            guard let self = self else{return}
+            if code == 20002 || code == 20003{
+                Logger.debug("录音停止")
+            }
+        }
         DCBleRecord.shared.filePathCallBack = { [weak self] path in
             guard let self = self else{return}
             //            self.recordBtn.isSelected = false
@@ -67,7 +64,7 @@ class DcSubTitle:NSObject{
 
     func startEarRecord(from:CCAiLanguage,to:CCAiLanguage) {
         recording = true
-        dataList.removeAll()
+        dataList.removeAll()//字幕闪退
         recordNeedReloadData?()
         
         DCBleRecord.shared.fromLanguage = from.value
index 62363ef..93687ac 100644 (file)
@@ -98,7 +98,7 @@ class PipContentVC : AVPictureInPictureVideoCallViewController {
     override func viewDidLoad() {
         super.viewDidLoad()
         view.addSubviews([textView,translateTextView])
-        view.backgroundColor = .rgb(0x717171)
+        view.backgroundColor = .black
         reset()
     }
     
index 9f72411..cf9f7a8 100644 (file)
@@ -10,6 +10,8 @@ class SubTitleSetVC: BaseVC{
     let tableView = UITableView(frame: .zero, style: .plain)
     var list:[SubTitleSetCellType] = [.language,.soure,.showType,.font]
     let imgPicker = ImagePickerManager()
+    var languageChanged:(()->Void)?
+    var soureChanged:(()->Void)?
     
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -89,6 +91,7 @@ extension SubTitleSetVC{
             
             SubTitleCache.shared.save(cache)
             tableView.reloadData()
+            languageChanged?()
         }
     }
     
@@ -103,6 +106,7 @@ extension SubTitleSetVC{
             cache.sourceType = list.first(where: {$0.title == value})!
             SubTitleCache.shared.save(cache)
             tableView.reloadData()
+            soureChanged?()
         }
     }
     @objc func showTypeAction(){
index 6ce55dd..cd1f0d2 100644 (file)
@@ -12,11 +12,11 @@ class LanguageSelectItem: BaseView {
     let switcIcon = UIImageView()
     var languageChange:((_ from:CCAiLanguage,_ to:CCAiLanguage)->Void)?
     
-    var enable:Bool = true{
-        didSet{
-            self.alpha = enable ? 1:0.5
-        }
-    }
+//    var enable:Bool = true{
+//        didSet{
+//            self.alpha = enable ? 1:0.5
+//        }
+//    }
     
     override func setupViews() {
         addSubviews([bottonView])
@@ -64,9 +64,9 @@ class LanguageSelectItem: BaseView {
         }
     }
     @objc func switchAction(){
-        if !enable {
-            return
-        }
+//        if !enable {
+//            return
+//        }
         let text1 = leftLabel.language
         let text2 = rightLabel.language
         leftLabel.language = text2
@@ -76,9 +76,9 @@ class LanguageSelectItem: BaseView {
         languageChange?(leftLabel.language,rightLabel.language)
     }
     @objc func leftAction(){
-        if !enable {
-            return
-        }
+//        if !enable {
+//            return
+//        }
         let v = LanguagePickerView(languages: CCAiLanguage.all,isLeft: true,left: leftLabel.language,right: rightLabel.language)
         v.selectedIndex = v.list.firstIndex(where: {$0.title == leftLabel.language.title}) ?? 0
         v.show()
@@ -96,9 +96,9 @@ class LanguageSelectItem: BaseView {
         }
     }
     @objc func rightAction(){
-        if !enable {
-            return
-        }
+//        if !enable {
+//            return
+//        }
         let v = LanguagePickerView(languages: CCAiLanguage.all,isLeft: false,left: leftLabel.language,right: rightLabel.language)
         v.selectedIndex = v.list.firstIndex(where: {$0.title == rightLabel.language.title}) ?? 0
         v.show()