|  | @@ -433,6 +433,18 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |          return btn
 | 
	
		
			
				|  |  |      }()
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  | +    // 字幕设置
 | 
	
		
			
				|  |  | +    lazy var voiceSettingBtn: UIButton = {
 | 
	
		
			
				|  |  | +        let btn = UIButton(type: .custom)
 | 
	
		
			
				|  |  | +        btn.setImage(imageInRecordScreenKit(by: "TTS"), for: .normal)
 | 
	
		
			
				|  |  | +        btn.setTitle("变声", for: .normal)
 | 
	
		
			
				|  |  | +        btn.titleLabel?.font = UIFont.systemFont(ofSize: 10)
 | 
	
		
			
				|  |  | +        btn.addTarget(self, action: #selector(voiceSetting), for: .touchUpInside)
 | 
	
		
			
				|  |  | +        btn.imageEdgeInsets = UIEdgeInsets(top: -20, left: 4, bottom: 0, right: -4)
 | 
	
		
			
				|  |  | +        btn.titleEdgeInsets = UIEdgeInsets(top: 20, left: -40, bottom: -20, right: 0)
 | 
	
		
			
				|  |  | +        return btn
 | 
	
		
			
				|  |  | +    }()
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      // 镜头反转设置
 | 
	
		
			
				|  |  |      lazy var cameraFlipBtn: UIButton = {
 | 
	
	
		
			
				|  | @@ -453,7 +465,13 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |          subtitleSetting.isHidden = true
 | 
	
		
			
				|  |  |          return subtitleSetting
 | 
	
		
			
				|  |  |      }()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    //变音设置面板
 | 
	
		
			
				|  |  | +    lazy var voiceSettingView: BFVoiceSettingView = {
 | 
	
		
			
				|  |  | +        let voiceSettingView = BFVoiceSettingView(frame: CGRect(x: 0, y: 0, width: cScreenWidth, height: cScreenHeigth))
 | 
	
		
			
				|  |  | +        voiceSettingView.isHidden = true
 | 
	
		
			
				|  |  | +        return voiceSettingView
 | 
	
		
			
				|  |  | +    }()
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  |      // 编辑字幕
 | 
	
		
			
				|  |  |      lazy var subtitleEditView: BFSubtitleEditView = {
 | 
	
		
			
				|  |  |          let subtitleEditView = BFSubtitleEditView(frame: CGRect(x: 0, y: 0, width: cScreenWidth, height: cScreenHeigth))
 | 
	
	
		
			
				|  | @@ -668,9 +686,14 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |  //        view.addSubview(drawPinBtn)
 | 
	
		
			
				|  |  |          view.addSubview(subtitleBtn)
 | 
	
		
			
				|  |  |          view.addSubview(soundSettingBtn)
 | 
	
		
			
				|  |  | +        if(BFLocalizedUtil.currentLanguage() == "zh"){
 | 
	
		
			
				|  |  | +            view.addSubview(voiceSettingBtn)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  |          view.addSubview(cameraFlipBtn)
 | 
	
		
			
				|  |  |          view.addSubview(subtitleSettingView)
 | 
	
		
			
				|  |  |          view.addSubview(audioSettingView)
 | 
	
		
			
				|  |  | +        view.addSubview(voiceSettingView)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          bottomeView.addSubview(progreddL)
 | 
	
		
			
				|  |  |          //        view.addSubview(toolV)
 | 
	
	
		
			
				|  | @@ -745,6 +768,21 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |              view.addSubview(neoNuiDebugLabel)
 | 
	
		
			
				|  |  |              view.addSubview(audioQueueRecoderLabel)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        voiceSettingView.voiceSettingCallBack = {[weak self] actionType ,selectVoice in
 | 
	
		
			
				|  |  | +            guard let wself = self else { return }
 | 
	
		
			
				|  |  | +            if actionType == .VoiceSettingActionConfirm{
 | 
	
		
			
				|  |  | +                BFLog(2, message: "确认发音人操作")
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +            }else if actionType == .voiceSettingActionCancel{
 | 
	
		
			
				|  |  | +                BFLog(2, message: "取消发音人操作")
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +            }else if actionType == .voiceSettingActionDelete{
 | 
	
		
			
				|  |  | +                BFLog(2, message: "删除发音人操作")
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      func layoutsubview() {
 | 
	
	
		
			
				|  | @@ -809,6 +847,13 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |              make.top.equalTo(soundSettingBtn.snp.bottom).offset(18)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  | +        if(BFLocalizedUtil.currentLanguage() == "zh"){
 | 
	
		
			
				|  |  | +            voiceSettingBtn.snp.makeConstraints { make in
 | 
	
		
			
				|  |  | +                make.right.width.height.equalTo(subtitleBtn)
 | 
	
		
			
				|  |  | +                make.top.equalTo(subtitleBtn.snp.bottom).offset(18)
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          cameraFlipBtn.snp.makeConstraints { make in
 | 
	
		
			
				|  |  |              make.left.equalTo(8)
 | 
	
		
			
				|  |  |              make.top.equalTo(soundSettingBtn)
 | 
	
	
		
			
				|  | @@ -1212,6 +1257,23 @@ public class BFRecordScreenController: BFBaseViewController {
 | 
	
		
			
				|  |  |          audioSettingView.isHidden = false
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  | +    //变声设置
 | 
	
		
			
				|  |  | +    @objc func voiceSetting() {
 | 
	
		
			
				|  |  | +        BFLog(message: "设置变音")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        voiceSettingView.isHidden = false
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +        BFRecordScreenViewModel.getAllVoiceCates { [weak self] categorys, voices in
 | 
	
		
			
				|  |  | +            guard let wself = self else { return }
 | 
	
		
			
				|  |  | +            wself.voiceSettingView.categorys = categorys
 | 
	
		
			
				|  |  | +            wself.voiceSettingView.voices = voices
 | 
	
		
			
				|  |  | +         
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      @objc func doubleTapAction(tap:UITapGestureRecognizer) {
 | 
	
		
			
				|  |  |          if currMediaType == .Camera {
 | 
	
		
			
				|  |  |              rscmanager.cameraFlip()
 |