|
@@ -494,7 +494,6 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
let header = dicResult?["header"] as? [String: Any]
|
|
|
let payload = dicResult?["payload"] as? [String: Any]
|
|
|
-
|
|
|
BFLog(1, message: "识别结果:) \(payload?["result"] ?? "") ,taskId:\((header?["task_id"] as? String) ?? "taskId"), 识别时间:\(((payload?["begin_time"]) as? Int) ?? 0) ~ \(((payload?["time"]) as? Int) ?? 0) startTime:\(self?.recorderManager?.voiceModel?.startCMTime.seconds ?? 0.0)")
|
|
|
|
|
|
DispatchQueue.main.async {
|
|
@@ -502,44 +501,46 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
let newSubtitle = PQEditSubTitleModel()
|
|
|
// 任务全局唯一ID,请记录该值,便于排查问题。 每次 startRecorder 和 stopRecoder 之间 task_Id都不会变化
|
|
|
- newSubtitle.taskID = (header?["task_id"] as? String) ?? ""
|
|
|
+ let taskID = header?["task_id"] as? String
|
|
|
+ newSubtitle.taskID = taskID ?? ""
|
|
|
BFLog(1, message: "对应关系:字幕所属地址:\((audioFilePath ?? "b").replacingOccurrences(of: documensDirectory, with: "")), 开始录音输入:\((self?.recorderManager?.voiceModel?.wavFilePath ?? "aa").replacingOccurrences(of: documensDirectory, with: ""))")
|
|
|
// 这里加300ms 是因为返回结果为了切到字,时长提前一些时间,具体时间官方没说和原音频有关系。这里我们先延后300ms 单位:毫秒。
|
|
|
- if let audioUrl = audioFilePath, URL(fileURLWithPath: audioUrl).deletingPathExtension().lastPathComponent.contains(URL(fileURLWithPath: self?.recorderManager?.voiceModel?.wavFilePath ?? "aa").deletingPathExtension().lastPathComponent) {
|
|
|
- newSubtitle.timelineIn = (self?.recorderManager?.voiceModel?.startCMTime ?? .zero) + CMTime(seconds: Float64((((payload?["begin_time"]) as? Int) ?? 0) + 300) / 1000.0, preferredTimescale: 1000)
|
|
|
- newSubtitle.timelineOut = (self?.recorderManager?.voiceModel?.startCMTime ?? .zero) + CMTime(seconds: Float64(((payload?["time"]) as? Int) ?? 0) / 1000.0, preferredTimescale: 1000)
|
|
|
- newSubtitle.audioFilePath = audioUrl
|
|
|
- BFLog(1, message: "字幕按时回来")
|
|
|
-
|
|
|
- if (newSubtitle.timelineIn - (self?.recorderManager?.voiceModel?.endCMTime ?? .zero)).seconds > 0.1 {
|
|
|
- BFLog(1, message: "卡在录音尾巴上了1")
|
|
|
- newSubtitle.timelineIn = newSubtitle.timelineIn - CMTime(seconds: 0.1, preferredTimescale: 1000)
|
|
|
- }
|
|
|
- } else {
|
|
|
- if let voice = self?.itemModels[self?.currItemModelIndex ?? 0].voiceStickers.first(where: { m in
|
|
|
- m.wavFilePath == audioFilePath
|
|
|
- }) {
|
|
|
- newSubtitle.timelineIn = voice.startCMTime + CMTime(seconds: Float64((((payload?["begin_time"]) as? Int) ?? 0) + 300) / 1000.0, preferredTimescale: 1000)
|
|
|
- newSubtitle.timelineOut = voice.startCMTime + CMTime(seconds: Float64(((payload?["time"]) as? Int) ?? 0) / 1000.0, preferredTimescale: 1000)
|
|
|
- newSubtitle.audioFilePath = voice.wavFilePath
|
|
|
- BFLog(1, message: "字幕没及时回来")
|
|
|
- if (newSubtitle.timelineIn - voice.endCMTime).seconds > 0.1 {
|
|
|
- BFLog(1, message: "卡在录音尾巴上了1")
|
|
|
- newSubtitle.timelineIn = newSubtitle.timelineIn - CMTime(seconds: 0.1, preferredTimescale: 1000)
|
|
|
+ var tempVoice:PQVoiceModel?
|
|
|
+ var tempItem:BFRecordItemModel?
|
|
|
+ self?.itemModels.forEach({ item in
|
|
|
+ if tempVoice == nil {
|
|
|
+ tempVoice = item.voiceStickers.first { voice in
|
|
|
+ voice.titleTaskId == taskID
|
|
|
+ }
|
|
|
+ if tempVoice != nil {
|
|
|
+ tempItem = item
|
|
|
}
|
|
|
- } else {
|
|
|
- BFLog(1, message: "没有对应音频播放记录,出现错误!!!!!!")
|
|
|
- return
|
|
|
}
|
|
|
+ })
|
|
|
+ guard let currentVoice = tempVoice ?? self?.recorderManager?.voiceModel else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ guard let currentItem = tempItem ?? self?.itemModels[self?.currItemModelIndex ?? 0] else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if currentVoice.titleTaskId == nil {
|
|
|
+ currentVoice.titleTaskId = taskID
|
|
|
+ }
|
|
|
+ newSubtitle.timelineIn = currentVoice.startCMTime + CMTime(seconds: Float64((((payload?["begin_time"]) as? Int) ?? 0) + 300) / 1000.0, preferredTimescale: 1000)
|
|
|
+ newSubtitle.timelineOut = currentVoice.startCMTime + CMTime(seconds: Float64(((payload?["time"]) as? Int) ?? 0) / 1000.0, preferredTimescale: 1000)
|
|
|
+ newSubtitle.audioFilePath = currentVoice.wavFilePath
|
|
|
+ BFLog(1, message: "字幕按时回来")
|
|
|
+ BFLog(3, message: "字幕返回begin:\(((payload?["begin_time"]) as? Int) ?? 0),timelineIn:\(newSubtitle.timelineIn.seconds), end:\(((payload?["time"]) as? Int) ?? 0),timelineOut:\(newSubtitle.timelineOut.seconds)")
|
|
|
+ if (newSubtitle.timelineIn - currentVoice.startCMTime).seconds > 0.1 {
|
|
|
+ BFLog(1, message: "卡在录音尾巴上了1")
|
|
|
+ newSubtitle.timelineIn = newSubtitle.timelineIn - CMTime(seconds: 0.1, preferredTimescale: 1000)
|
|
|
}
|
|
|
let showText = ((payload?["result"]) as? String) ?? ""
|
|
|
newSubtitle.text = showText
|
|
|
// newSubtitle.audioFilePath = audioFilePath ?? ""
|
|
|
- BFLog(1, message: "添加字幕数据 timelineIn \(newSubtitle.timelineIn.seconds) timelineOut \(newSubtitle.timelineOut.seconds) text: \(newSubtitle.text) 音频路径为:\(audioFilePath ?? "bb") 传入的地址:\(self?.recorderManager?.voiceModel?.wavFilePath ?? "aa")")
|
|
|
-
|
|
|
+ BFLog(1, message: "添加字幕数据 timelineIn \(newSubtitle.timelineIn.seconds) timelineOut \(newSubtitle.timelineOut.seconds) text: \(newSubtitle.text) 音频路径为:\(audioFilePath ?? "bb") 传入的地址:\(currentVoice.wavFilePath ?? "aa")")
|
|
|
newSubtitle.setting = self?.subtitleSettingView.subtitle.setting ?? BFSubTitileSettingModel()
|
|
|
-
|
|
|
- self?.itemModels[self?.currItemModelIndex ?? 0].titleStickers.append(newSubtitle)
|
|
|
+ currentItem.titleStickers.append(newSubtitle)
|
|
|
}
|
|
|
}
|
|
|
|