🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1309閲覧

【swift】AVAudioEngineでハウリングを抑える方法

Kamecks

総合スコア6

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/10/02 03:59

編集2019/10/02 04:35

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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ハウリング発生原因:https://jp.yamaha.com/products/contents/proaudio/docs/better_sound/part3_05.html

エコキャン実装例:
https://www.ntt.co.jp/ntt-tec/application/ap003.html
考え方としては単純なのですが、技術的には結構難しいので、どんな場合でもうまく動作するというのは難しいのではないかと。

投稿2019/10/02 07:51

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kamecks

2019/10/02 09:34

貴重なご意見ありがとうございます。自力での実装はとても難しそうですね。別の方法を考えてみます。
guest

0

ハウリングとは、スピーカーから出た音をマイクが拾ってそれがまたスピーカーから出て、と繰り返すために起こるもんです

マイクとスピーカを離す、スピーカの音をマイクが拾わないように工夫する、しか対策はありません

投稿2019/10/02 04:56

y_waiwai

総合スコア88040

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kamecks

2019/10/02 09:33

貴重なご意見ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問