|
@@ -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()
|
|
|
|
|
|
}
|
|
|
|