Est-ce que quelqu'un sait-on utiliser l'annulation d'écho acoustique intégrée de l'appareil Android? Il est situé quelque part en silicium et est utilisé pour les appels GSM / CDMA HautLone. Nous aimerions vraiment l'exploiter pour une application VoIP au lieu de rouler le nôtre. P>
ben p>
4 Réponses :
Je suis allé au même endroit, a porté avec succès SpeeX Aec à Android et l'a utilisé dans 2 clients VoIP Android différents. La majeure partie de l'écho est annulée lorsqu'il est sur le haut-parleur à plein volume - testé sur une variété d'appareils. Les Documents officiels et Googling Speex devraient être suffisants pour le faire fonctionner. P>
salut pouvez-vous me guider comment le faire fonctionner.Je luttez pour annuler l'écho lorsque les deux appareils sont en mode haut-parleur.
J'ai finalement pu obtenir l'annulation d'écho pour travailler sur mon processeur Arm5 (WM8650) (Android 2.2). Vous trouverez ci-dessous les étapes que j'ai prises. P>
i Enveloppé Speex avec JNI et appelé routines de traitement d'écho avant d'envoyer des cadres PCM au codeur. Aucun écho n'a été annulé, peu importe les paramètres speex que j'ai essayés. P> li>
Parce que SpeEx est très sensible au délai entre la lecture et les cadres d'écho J'ai mis en place une file d'attente et une file d'attente Tous les paquets envoyés à AudioTrack. La taille de la file d'attente doit être à peu près égale à la taille du tampon interne audiotrack. De cette façon, le paquet a été envoyé à Echo_playback à peu près à l'époque où l'audiotrack envoie des paquets à la carte son de son tampon interne. Le retard a été supprimé avec cette approche, mais l'écho n'était toujours pas annulé p> li>
J'ai enveloppé une pièce d'annulation de Webrtc Echo avec JNI et appelée ses méthodes avant d'envoyer des paquets au codeur. L'écho était toujours présent mais la bibliothèque essayait évidemment de l'annuler. P> Li>
J'ai appliqué la technique de la mémoire tampon décrite dans P2 et elle a finalement commencé à fonctionner. Le retard doit cependant être ajusté pour chaque appareil. Notez également que WEBRTC a une version mobile et sa version complète de l'annulation d'écho. La version complète ralentit sensiblement le processeur et devrait probablement être exécutée sur Arm7 uniquement. La version mobile fonctionne mais avec une qualité inférieure p> li> ol>
J'espère que cela aidera quelqu'un. P>
La file d'attente doit-elle avoir la même taille que le tampon interne de l'audiotrack et la taille du tampon interne de l'audiorecord?
Depuis l'API Niveau 11, il y a une nouvelle valeur pour mediarecorder.ausiosource, c'est voix_communication. Android Docs Dites : "Microphone Audio Source ajustée pour voix Les communications telles que la VoIP. Il tiendra par exemple profit de l'annulation de l'écho ou du contrôle de gain automatique s'il est disponible. Il se comporte sinon comme défaut si aucun traitement vocal n'est appliqué. " J'ai essayé cela, mais je ne pouvais pas faire fonctionner. Le problème peut être l'appareil que j'utilisé, qui est la tablette Sony S. qui vaut la peine d'essayer, cependant. P>
Ceci est en effet vrai, mais depuis le niveau 11 de l'API 11, cela ne fonctionne pas vraiment sur la plupart des appareils que j'ai utilisés jusqu'à présent. Il ne fait que rien ...
J'ai essayé toutes les méthodes décrites ici et les ont trouvées à l'efficacité.
Enfin, j'ai décidé que le meilleur tanneur d'écho est un contrôleur de gain d'écho. p>
J'ai écrit dans le fil audio de lecture Le code suivant: < / p> et la suivante dans le thread d'enregistrement p> donc ce n'est pas un véritable annuleur d'écho, mais au moins cela fonctionne. p> p>
Toute chance? Je regarde la même chose ...
Rappelez-vous une chose qui est liée à
taux d'échantillonnage code>. Le module WEBRTC AECM par défaut fournit un traitement uniquement sur
8000Hz code>,
16000Hz code>. Si vous travaillez sur
48KHZ CODE>, je préférerais vérifier ce didacticiel pour uniquement le traitement audio WEBRTC sur n'importe quel appareil. Différents matériels ont des tendances différentes vers l'APM (module de traitement audio). S'il vous plaît visitez Android-Audio-traitement-en utilisant-webrtc .