2017-08-07 7 views
1

J'utilise AVAudioEngine pour le streaming audio. Mais quand je parle un mot dans le micro, il répète plusieurs fois, tout comme l'effet d'écho. Je veux quand je parle, ça sonne seulement une fois, pas plusieurs fois. Je veux annuler l'écho ou le bruit supplémentaire.Comment annuler ou supprimer le son écho/répété avec AVAudioEngine?

Comment puis-je y parvenir?

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

S'il vous plaît nous montrer un code de ce que vous avez fait jusqu'à présent. –

+0

@ParasGorasiya Veuillez vérifier mon code –

+0

Enregistrez-vous quelque chose dans un environnement qui crée un écho? –

Répondre

0

Je pense que vous devriez être en mesure de résoudre votre problème par ce code

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

vous pouvez également envisager d'autres approche dans laquelle vous pouvez couper votre micro après que vous parlez et que vous devez détecter manuellement lorsque votre peerAudioEngine ne reçoit aucun son d'entrée que vous le mettez en sourdine.

Ceci éliminera complètement l'écho de votre discours.

Pour plus d'informations, vous pouvez visiter http://asciiwwdc.com/2014/sessions/502

+0

Ne fonctionne pas, ne pas annuler :( –

+0

Avez-vous une autre solution? –