| 
					
				 | 
			
			
				@@ -34,7 +34,7 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public var recordEndHandle: ((_ currentRecord: PQVoiceModel?) -> Void)? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 字幕按钮点击上报 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public var subTitleBtnClickHandle: ((_ isOn: Bool) -> Void)? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public var currentRecordId: String? // 当前录制Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public var currentRecordId: String? // 当前录制Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // MARK: - 录制参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -486,34 +486,34 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 录音字幕回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recorderManager?.subtitleRecordHandle = { [weak self] eventCode, recordId, asrResult, audioFilePath, _ in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if asrResult == nil || (asrResult?.count ?? 0) <= 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BFLog(message: "识别结果为空????不能生成字幕数据") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if eventCode == 26 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self?.currentRecordId = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if eventCode == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self?.currentRecordId = recordId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 只有为24时才有字幕返回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if eventCode != 24 || recordId == nil{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BFLog(1, message: "eventcode:\(eventCode), recordid:\(recordId), asr:\(asrResult)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DispatchQueue.global().async { [weak self] in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let newSubtitle = PQEditSubTitleModel() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                newSubtitle.recordId = recordId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    if eventCode == 26 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                        self?.currentRecordId = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    if eventCode == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                        self?.currentRecordId = recordId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if asrResult == nil || (asrResult?.count ?? 0) <= 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BFLog(1, message: "onNuiEventCallback 识别结果为空????不能生成字幕数据") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 只有为24时才有字幕返回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if eventCode != 24 || recordId == nil{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BFLog(1, message: "onNuiEventCallback eventCode != 24 || recordId == nil") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let dicResult: [String: Any]? = jsonStringToDictionary(asrResult!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let header = dicResult?["header"] as? [String: Any] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let payload = dicResult?["payload"] as? [String: Any] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BFLog(1, message: "onNuiEventCallback event 识别结果:) \(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)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 1,保存字幕数据 begin_time是开始出现文字的时间,time 是结束文字出现的时间 单位都为毫秒,都是相对于录制音频数据整段时间。self.recorderManager.voiceModel?.startCMTime.seconds 为开始的录制的时间,开始和结束都要加上这个时差 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let newSubtitle = PQEditSubTitleModel() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 任务全局唯一ID,请记录该值,便于排查问题。 每次 startRecorder 和 stopRecoder 之间  task_Id都不会变化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let taskID = header?["task_id"] as? String 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                newSubtitle.taskID = taskID ?? "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                newSubtitle.recordId = self?.currentRecordId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BFLog(1, message: "对应关系:字幕所属地址:taskID:\(taskID ?? ""),\((audioFilePath ?? "b").replacingOccurrences(of: documensDirectory, with: "")), 开始录音输入:\((self?.recorderManager?.voiceModel?.wavFilePath ?? "aa").replacingOccurrences(of: documensDirectory, with: ""))") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let taskID = "aa" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 这里加300ms 是因为返回结果为了切到字,时长提前一些时间,具体时间官方没说和原音频有关系。这里我们先延后300ms 单位:毫秒。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var tempVoice: PQVoiceModel? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var tempItem: BFRecordItemModel? 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -794,7 +794,7 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (index, subtitle) in itemModels[currItemModelIndex].titleStickers.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if CMTimeCompare(subtitle.timelineIn, time) <= 0, CMTimeCompare(subtitle.timelineOut, time) > 0, subtitle.audioFilePath.count > 0 { //  audioFilePath.count 这个条件是确保这个字幕有对应录音 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 findShowSubtitle = subtitle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BFLog(1, message: "找到要显示的字幕 in \((findShowSubtitle?.timelineIn ?? .zero).seconds) out \((findShowSubtitle?.timelineOut ?? .zero).seconds) text:\(findShowSubtitle?.text ?? "") currTime is \(CMTimeGetSeconds(time))") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                BFLog(1, message: "找到要显示的字幕 in \((findShowSubtitle?.timelineIn ?? .zero).seconds) out \((findShowSubtitle?.timelineOut ?? .zero).seconds) text:\(findShowSubtitle?.text ?? "") currTime is \(CMTimeGetSeconds(time))") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 showSubtitleIndex = index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1091,7 +1091,7 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let model = PQVoiceModel() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         model.startCMTime = currentAssetProgress 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         model.currIndex = currItemModelIndex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        model.recordId = getUniqueId(desc: "recordId") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        model.recordId = getUniqueId(desc: "recordId") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         model.volume = 100 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recorderManager?.voiceModel = model 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BFLog(3, message: "开始录制-开始:currentAssetProgress=\(currentAssetProgress.seconds),cuInde=\(currItemModelIndex),\(model)") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1534,7 +1534,7 @@ public class BFRecordScreenController: BFBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BFLog(3, message: "未找到可播放录音") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BFLog(1, message: "当前时间:\(CMTimeGetSeconds(currentT)), 找到的音频:\(recordedAudio.startCMTime.seconds) ~ \(recordedAudio.endCMTime.seconds), \(recordedAudio.wavFilePath ?? "")") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        BFLog(1, message: "当前时间:\(CMTimeGetSeconds(currentT)), 找到的音频:\(recordedAudio.startCMTime.seconds) ~ \(recordedAudio.endCMTime.seconds), \(recordedAudio.wavFilePath ?? "")") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 创建播放器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if recordPlayer == nil || (recordPlayer?.currentItem?.asset as? AVURLAsset)?.url.lastPathComponent != (recordedAudio.wavFilePath as NSString?)?.lastPathComponent { 
			 |