_REMARQUE: ce problème remplace le numéro 57_
Le bus audio actuel sur les images Mark 1 et Picroft n'élimine pas le son du haut-parleur du microphone. Cela conduit à un comportement indésirable de l'appareil, surtout lorsqu'un flux audio est en cours de lecture et que l'utilisateur ne peut pas «intervenir» facilement avec un Hey Mycroft
.
L'appareil sait quel son est émis par le haut-parleur. L'idée essentielle souhaitée est de soustraire la sortie audio du haut-parleur de l'entrée audio du microphone en utilisant une approche appropriée - telle que le décalage temporel de l'audio sortant et l'adapter à l'entrée audio du microphone.
Contact technique clé - Steve Penrod (@penrods) (@ steve-mycroft à https://chat.mycroft.ai)
La prime pour cette demande de fonctionnalité est de 1000 USD, ainsi qu'un Mark 1 gratuit et une pièce de défi Gold Mycroft.
Je vais jeter un oeil à ceci sous peu
Informations qui peuvent être utiles sur: OSS DSP:
http://www.audioxpress.com/news/the-linux-foundation-adopts-sound-open-firmware-project-enabling-developers-to-adapt-operating-systems-for-audio-devices
Informations plus utiles:
PulseAudio prend en charge l' annulation d'écho de module .
Plus d'informations ici ... https://arunraghavan.net/2016/05/improvements-to-pulseaudios-echo-cancellation/
Quelques liens, espérons-le, utiles sur le module d'impulsion:
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index45h3
https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting#Enable_Echo.2FNoise -Annulation
Le module d'annulation d'écho peut également faire du beamforming ...
@KathyReid @penrods
Quelqu'un a-t-il déjà exploré cette option (annulation d'écho audio d'impulsion)? Je suis prêt à essayer, même si je n'ai qu'un picroft avec lequel travailler.
Je crois que cela a été essayé il y a quelques années, mais la tension du processeur était assez élevée. (C'est ce que j'ai entendu donc pas d'expérience personnelle sur le Pi). L'annulation de l'écho audio d'impulsion fonctionne très bien sur ma station de travail, ce serait donc cool si cela pouvait également fonctionner sur le Pi. Si le matériel est trop intensif, il y a peut-être des ajustements à apporter.
Essayez-le et voyez quel est le résultat!
J'ai travaillé sur des projets utilisant un chipset Broadcom pas sans rappeler celui du BCM2837 (qui est utilisé dans RPi3) et nous avions connu un bon succès en utilisant l'annuleur d'écho Opus. Il faut du CPU pour le faire, mais ce n'était pas particulièrement mauvais. Malheureusement, je n'ai pas le temps libre nécessaire pour contribuer à la chasse aux primes, mais j'ai pensé que peut-être suggérer que cela aiderait quelqu'un d'autre.
Merci pour vos commentaires, @roadriverrail - excellente suggestion!
Potentiellement intéressant:
https://github.com/xiph/rnnoise
et sur cette base:
https://github.com/werman/noise-suppression-for-voice
(les éléments ci-dessus sont nettement plus lents que viables, hélas: augmentation d'environ 8: 1 du traitement)
@forslund , Lorsque vous travaillez sur un poste de travail avec la source mycroft, l'annulation d'écho d'impulsion est-elle chargée automatiquement ou devons-nous le faire nous-mêmes?
Les haut-parleurs USB tels que le Jabra 410 (populaire dans les forums) effectuent-ils une annulation d'écho? J'en utilise un avec un RPi 3B + et "Hey Mycroft, stop" semble fonctionner. Cependant, je ne suis pas sûr que cela fonctionne "bien" à "volume normal".
Actuellement, aucune distribution ne charge l'annulation d'écho d'impulsion (à ma connaissance).
Selon https://www.jabra.com/business/speakerphones/jabra-speak-series/jabra-speak-410 "Technologie de traitement numérique du signal (DSP)
Un son cristallin sans échos ou sons déformés même au niveau de volume maximum "qui ressemble beaucoup à une sorte d'annulation d'écho.
@tlc as @ el-tocino indique que l'annulation d'écho n'est pas chargée par défaut. Le charger crée un microphone virtuel que vous devez définir par défaut pour l'utiliser avec mycroft. (essentiellement en le sélectionnant dans le contrôle du volume audio d'impulsion)
Comment allons-nous tous avec celui-ci - des questions? Des informations que nous pourrions fournir pour vous aider?
Pas mon travail, mais je suis tombé dessus;
https://github.com/voice-engine/ec
Ça a l'air intéressant et en cochant les cases.
J'ai expérimenté le moteur vocal / ec (qui est essentiellement un wrapper pour speex) et le module d'annulation d'écho de PulseAudio (vous devez installer PA 7.1 à partir de Debian-Jessie-Backports pour cela) en utilisant les algorithmes "webrtc" et "speex" (Adrian n'est pas du tout utilisable) mais n'a pas eu de chance jusqu'à présent. Je vois principalement deux raisons:
1) lorsque la musique est lue sur le haut-parleur Mark-I, le micro du Mark-I ne capte presque que la musique (cela est dû à la construction physique), en plus le micro / préampli capte beaucoup de bruit électrique / radio . Cela rend très difficile tout algorithme d'annulation de bruit / d'écho.
2) La synchronisation RPI3 de l'horloge interne n'est pas suffisamment stable pour ce type de traitement en temps réel - la dérive temporelle permanente confond également les algorithmes d'annulation d'écho.
Je vais essayer "rnnoise" sous peu (je l'ai déjà compilé pour RPI mais quelques problèmes de configuration pour PA) mais je n'ai pas trop d'attentes pour les raisons ci-dessus
Je serais prêt à envisager une solution qui nécessite un ajout ou une modification mineure et bon marché du Mark 1, par exemple une mousse acoustique séparant le micro et le haut-parleur ou un réacheminement des câbles. Mais pas les changements au niveau du conseil.
La formation de faisceaux basée sur la position du micro plus un micro USB bon marché pourrait être une option. Un ou deux de ces mini-micros (recherche "overfly portable usb 2.0 mic") placés dans les ports combinés avec l'audio du micro existant passant par un beamformer devraient être capables de faire AEC et d'améliorer l'écoute. Je n'ai pas encore essayé moi-même, hélas.
Après quelques expériences supplémentaires, j'ai une configuration avec le module d'annulation d'écho PulseAudio qui fonctionne raisonnablement * avec des niveaux de volume jusqu'à 5 (le maximum de Mark-1 est de 11) à une distance d'env. 4 pieds. Il y a encore de la place pour peaufiner les paramètres qui pourraient augmenter la fiabilité.
Je n'ai pas encore essayé le réglage du matériel (mousse acoustique). De plus, j'envisage des changements dans Mycroft Audioservices, par exemple la musique de canard / muet dès qu'un mot de réveil est détecté afin d'obtenir un énoncé clair ...
* dépend du matériel musical, plus il est compressé (voir « guerre du volume »), moins il fonctionne.
Je crois que @forslund a déjà travaillé sur la partie esquive. Croyez que c'est déjà quelque part dans la section PR / Issue.
Avec vous, l'AEC doit être combiné avec le ducking audio.
J'ai utilisé de la mousse isolante pour porte / fenêtre (similaire: https://www.homedepot.com/p/Frost-King-3-4-in-x-5-16-in-x-10-ft-Black-Rubber -Foam-Weatherseal-Tape-R534H / 202262324) pour faire une barrière autour de l'avant du micro entre le circuit imprimé frontal et la façade. En second lieu, j'ai également recouvert l'arrière de l'enceinte de mousse.
Commentaire le plus utile
J'ai travaillé sur des projets utilisant un chipset Broadcom pas sans rappeler celui du BCM2837 (qui est utilisé dans RPi3) et nous avions connu un bon succès en utilisant l'annuleur d'écho Opus. Il faut du CPU pour le faire, mais ce n'était pas particulièrement mauvais. Malheureusement, je n'ai pas le temps libre nécessaire pour contribuer à la chasse aux primes, mais j'ai pensé que peut-être suggérer que cela aiderait quelqu'un d'autre.