Browse Source

Merge branch 'dev' of https://git.yishihui.com/iOS/BFRecordScreenKit into dev

harry 3 years ago
parent
commit
26cb23da0f

+ 42 - 25
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -2833,7 +2833,7 @@ extension BFRecordScreenController: BFTTSManagerDelegte{
         
         let ttsAudioAsset = AVURLAsset(url: URL(fileURLWithPath: model.wavFilePath), options: avAssertOptions)
      
-        BFLog(message: "文字转语音完成recordId:\(model.recordId) tttaskid:\(model.tTtaskId)  tss语音时长\(ttsAudioAsset.duration.seconds) 字幕开始\(model.timelineIn.seconds) 字幕结束\(model.timelineOut.seconds) 字幕原时长\(CMTimeSubtract(model.timelineOut, model.timelineIn).seconds)")
+        BFLog(message: "文字转语音完成recordId:\(model.recordId) tttaskid:\(model.tTtaskId)  tss语音时长\(ttsAudioAsset.duration.seconds) 字幕开始\(model.timelineIn.seconds) 字幕结束\(model.timelineOut.seconds) 字幕原时长\(CMTimeSubtract(model.timelineOut, model.timelineIn).seconds) text\(model.text)")
         
         let voice = PQVoiceModel.init()
         voice.wavFilePath = model.wavFilePath
@@ -2841,11 +2841,7 @@ extension BFRecordScreenController: BFTTSManagerDelegte{
         voice.endCMTime = model.timelineOut
         voice.ttsTaskID = model.tTtaskId
         voice.recordId = model.recordId
-        //变音返回时如果没有所在录制段不加入抛弃掉。
-        let findRecordId = itemModels[Int(model.itemModelIndex)].voiceStickers.first { temp in
-            temp.recordId == model.recordId
-        }
-        //第一次录制返回后是voiceStickers为空的也要加入
+        voice.voice = model.fontName
         itemModels[Int(model.itemModelIndex)].voiceChangeStickers.append(voice)
         
      
@@ -2923,6 +2919,26 @@ extension BFRecordScreenController: BFTTSManagerDelegte{
         self.present(alertController, animated: true, completion: nil)
         
     }
+    //指量加入 TTS 任务,1切换发音人了,2,删除段落后
+    func bathPushTask(){
+        //使用不包含方法
+        for itemModel in itemModels{
+            for title in itemModel.titleStickers{
+                //加入变音缓存,
+                let ttsModel = BFTTSTaskModel.init()
+                ttsModel.timelineIn = title.timelineIn
+                ttsModel.timelineOut = title.timelineOut
+                ttsModel.fontName = mSelectVoiced?.voice ?? ""
+                ttsModel.recordId = title.recordId ?? ""
+                ttsModel.tTtaskId = getUniqueId(desc: "tTtaskId")
+                ttsModel.itemModelIndex = Int32(itemModel.index)
+                ttsModel.text = title.text
+                tts?.pushTaskCache(ttsModel, autoTranslate:false)
+                
+            }
+            
+        }
+    }
     
     
     /// 查看发音人文件是否已经全都完成,如果没有完成不能进行预览,合成操作
@@ -2933,6 +2949,24 @@ extension BFRecordScreenController: BFTTSManagerDelegte{
             return true
         }
         
+        //检查一个是否有和当前发人不一样的数据 删除
+        var titlestickerCount = 0
+        var voiceChangeStickersCount = 0
+        for itemModel in itemModels{
+            titlestickerCount += itemModel.titleStickers.count
+            BFLog(message: "voiceChangeStickers 删除前:\(itemModel.voiceChangeStickers.count)")
+            itemModel.voiceChangeStickers.removeAll { m in
+                BFLog(message: "老发音人:\(m.voice) 新发音人:\(mSelectVoiced?.voice ?? "")" );
+                return m.voice != mSelectVoiced?.voice
+            }
+            BFLog(message: "voiceChangeStickers 删除后:\(itemModel.voiceChangeStickers.count)")
+            voiceChangeStickersCount += itemModel.voiceChangeStickers.count
+        }
+        //在恢得删除的段落后 发音人有可能会改变要删除老的发音人数据
+        if(voiceChangeStickersCount == 0 && titlestickerCount != 0 ){
+            tts?.changedVoice(mSelectVoiced?.voice ?? "")
+        }
+        
         var isFinish = true
         //所有任务数也就是字幕的个数
         var AllCount = 0
@@ -2950,28 +2984,11 @@ extension BFRecordScreenController: BFTTSManagerDelegte{
             }
         }
         
-        //使用不包含方法
+      
         BFLog(message: "翻译任务总数:\(AllCount) 已经完成数:\(FinishCount)")
         if(FinishCount < AllCount){
             isFinish = false
-            
-            for itemModel in itemModels{
-                    for title in itemModel.titleStickers{
-                    //加入变音缓存,
-                    let ttsModel = BFTTSTaskModel.init()
-                    ttsModel.timelineIn = title.timelineIn
-                    ttsModel.timelineOut = title.timelineOut
-                    ttsModel.fontName = mSelectVoiced?.voice ?? ""
-                    ttsModel.recordId = title.recordId ?? ""
-                    ttsModel.tTtaskId = getUniqueId(desc: "tTtaskId")
-                    ttsModel.itemModelIndex = Int32(itemModel.index
-)
-                    ttsModel.text = title.text
-                    tts?.pushTaskCache(ttsModel, autoTranslate:false)
-                    
-                }
-                
-            }
+            bathPushTask()
          
         }