Iphoneのマイクで拾った声を、AVAudioEngineでbluetoothスピーカーから出力しようとした時に、ボリュームを大きくするとハウリングしてしまいます。このハウリングを抑える方法がありませんでしょうか?
swift5
1import UIKit 2import AVFoundation 3 4class ViewController: UIViewController { 5 var audioEngine = AVAudioEngine() 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 self.view.backgroundColor = UIColor.yellow 10 11 AudioSession() 12 13 ChangeMicState() 14 MicSlider() 15 16 } 17 //MARK:- Audio 18 func AudioSession(){ 19 try! AVAudioSession.sharedInstance().setCategory(.playAndRecord,mode: .videoChat,options: .allowBluetoothA2DP) 20 21 let input = audioEngine.inputNode 22 let output = audioEngine.mainMixerNode 23 let format = audioEngine.inputNode.inputFormat(forBus: 0) 24 25 audioEngine.connect(input,to:output,format: format) 26 try! audioEngine.start() 27 } 28 //MARK:- Objects 29 func ChangeMicState(){ 30 let changeMicState = UISwitch(frame: CGRect(x: 50, y: 50, width: 100, height: 50)) 31 changeMicState.addTarget(self, action: #selector(sw(sender:)), for: .valueChanged) 32 self.view.addSubview(changeMicState) 33 } 34 @objc func sw(sender:UISwitch){ 35 if sender.isOn{ 36 try! audioEngine.start() 37 }else{ 38 audioEngine.stop() 39 } 40 } 41 func MicSlider(){ 42 let micSlider = UISlider(frame: CGRect(x: 50, y: 100, width: self.view.frame.width - 100, height: 30)) 43 micSlider.addTarget(self, action: #selector(mic(sender:)), for: .valueChanged) 44 self.view.addSubview(micSlider) 45 } 46 @objc func mic(sender:UISlider){ 47 print(sender.value) 48 audioEngine.inputNode.volume = sender.value * 100 49 } 50}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/02 09:34