2017-08-07 103 views
1

我正在使用AVAudioEngine進行音頻流式傳輸。但是,當我對麥克風說出任何詞語時,它會重複多次,就像回聲效果一樣。我想說話時,聽起來只有一次,而不是多次。我想取消回聲或額外的噪音。如何用AVAudioEngine取消或刪除回聲/重複聲音?

我該如何做到這一點?

var peerAudioEngine: AVAudioEngine = AVAudioEngine() 
var peerAudioPlayer: AVAudioPlayerNode = AVAudioPlayerNode() 
var peerInput: AVAudioInputNode? 
var peerInputFormat: AVAudioFormat? 

func setUpAVPlayer() { 
    self.peerInput = self.peerAudioEngine.inputNode 
    self.peerAudioEngine.attach(self.peerAudioPlayer) 
    self.peerInputFormat = AVAudioFormat.init(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 1, interleaved: false) 
    self.peerAudioEngine.connect(self.peerAudioPlayer, to: self.peerAudioEngine.mainMixerNode, format: self.peerInputFormat) 

    print("\(#file) > \(#function) > peerInputFormat = \(self.peerInputFormat.debugDescription)") 
} 
+0

請給我們介紹一下你有什麼迄今所做的一些代碼。 –

+0

@ParasGorasiya請檢查我的代碼 –

+0

您是否在創建回聲的環境中錄製了某些內容? –

回答

0

我想你應該能夠通過這個代碼

var reverbNode = AVAudioUnitReverb() 
reverbNode.loadFactoryPreset(AVAudioUnitReverbPreset.Cathedral) 
reverbNode.wetDryMix = 60 
// Attach the audio effect node corresponding to the user selected effect 
peerAudioEngine.attachNode(reverbNode) 

你也可能要考慮其他辦法,你說之後就可以聽不到您的麥克風和,你必須解決您的問題當您的peerAudioEngine沒有收到任何您將其靜音的輸入音頻時手動檢測。

這將完全消除您的語音回聲。

欲瞭解更多信息,您可以訪問 http://asciiwwdc.com/2014/sessions/502

+0

不工作,回聲不取消:( –

+0

你有任何其他的解決方案? –