Mycroft-core: Kopfgeld: Implementieren Sie die Rauschunterdrückung auf RPi-3-basierten Hardwaregeräten (Mark 1 und Picroft).

Erstellt am 14. März 2018  ·  20Kommentare  ·  Quelle: MycroftAI/mycroft-core

_HINWEIS: Dieses Problem ersetzt das Problem Nr. 57_

Problemstellung

Der aktuelle Audiobus auf den Mark 1- und Picroft-Bildern entfernt das Lautsprecheraudio nicht vom Mikrofon. Dies führt zu unerwünschtem Geräteverhalten, am deutlichsten, wenn ein Audiostream abgespielt wird und der Benutzer nicht in der Lage ist, mit einem Hey Mycroft einfach „einzudringen“.

Das Gerät erkennt, welche Audiodaten vom Lautsprecher ausgegeben werden. Die wesentliche gewünschte Idee besteht darin, den Audioausgang des Lautsprechers mit einem geeigneten Ansatz vom Audioeingang des Mikrofons zu subtrahieren - beispielsweise das zeitversetzte Verschieben des ausgehenden Audios und das Anpassen an den Audioeingang vom Mikrofon.

Akzeptanzkriterium

  • Die Lösung muss auf einem Mark 1-Referenzhardwaregerät funktionieren. Picroft ist zum Testen oder Proof-of-Concept in Ordnung, die Lösung muss jedoch in einer akustischen Umgebung des Mark 1-Gehäuses funktionieren
  • Die Lösung muss mit einem Audio-Stream funktionieren, der mit 3/4 Lautstärke abgespielt wird, z. B. Pandora, Spotify, Mopidy oder anderes Audio-Streaming
  • Die Lösung muss mit der Standard-Erkennungssoftware Precise Wake Word funktionieren.
  • Ein Benutzer muss in der Lage sein, den Audio-Ein- / Ausgabestream zu unterbrechen, indem er das Wake-Wort spricht - dh 'Hey Mycroft' mit normaler Lautstärke (dh nicht schreien).
  • Die Lösung muss innerhalb der CPU-Einschränkungen der RPi 3-Hardware (der für Mark 1 und Picroft verwendeten Hardware) funktionieren. Beim Ausführen des Befehls top darf ein Lastdurchschnitt von 3,0 nicht überschritten werden.

Nützliche Informationen

Wichtiger technischer Ansprechpartner - Steve Penrod (@penrods) (@ steve-mycroft unter https://chat.mycroft.ai)

Kopfgeld

Die Prämie für diese Feature-Anfrage beträgt USD 1000 sowie eine kostenlose Mark 1 und eine Gold Mycroft Challenge Coin.

medium Enhancement - proposed help wanted

Hilfreichster Kommentar

Ich habe an Projekten mit einem Broadcom-Chipsatz gearbeitet, der dem des BCM2837 (der in RPi3 verwendet wird) ähnelt, und wir hatten gute Erfolge mit dem Opus-Echokompensator gesehen. Es braucht zwar CPU, aber es war nicht besonders schlimm. Leider habe ich nicht die notwendige Freizeit, um zur Kopfgeldjagd beizutragen, aber ich dachte, vielleicht würde dies jemand anderem helfen.

Alle 20 Kommentare

Ich werde mir das in Kürze ansehen

Weitere hilfreiche Informationen:
PulseAudio unterstützt die Modul-Echo-Unterdrückung .
Weitere Informationen hier ... https://arunraghavan.net/2016/05/improvements-to-pulseaudios-echo-cancellation/

@KathyReid @penrods
Hat jemand diese Option (Puls-Audio-Echo-Unterdrückung) bereits untersucht? Ich bin bereit, es zu versuchen, obwohl ich nur einen Picroft habe, mit dem ich arbeiten kann.

Ich glaube, es wurde vor ein paar Jahren versucht, aber die CPU-Belastung war ziemlich hoch. (Dies ist, was ich so keine persönliche Erfahrung auf dem Pi gehört habe). Die Puls-Audio-Echo-Unterdrückung funktioniert auf meiner Workstation hervorragend, daher wäre es cool, wenn sie auch auf dem Pi funktionieren könnte. Wenn die Hardware zu intensiv ist, können möglicherweise Optimierungen vorgenommen werden.

Probieren Sie es aus und sehen Sie, was das Ergebnis ist!

Ich habe an Projekten mit einem Broadcom-Chipsatz gearbeitet, der dem des BCM2837 (der in RPi3 verwendet wird) ähnelt, und wir hatten gute Erfolge mit dem Opus-Echokompensator gesehen. Es braucht zwar CPU, aber es war nicht besonders schlimm. Leider habe ich nicht die notwendige Freizeit, um zur Kopfgeldjagd beizutragen, aber ich dachte, vielleicht würde dies jemand anderem helfen.

Vielen Dank für Ihr Feedback, @roadriverrail - toller Vorschlag!

Potenziell interessant:
https://github.com/xiph/rnnoise
und basierend darauf:
https://github.com/werman/noise-suppression-for-voice
(Die oben genannten sind deutlich langsamer als realisierbar, leider: ~ 8: 1 Zunahme der Verarbeitung)

@forslund , Wird bei der Arbeit an einer Workstation mit der mycroft-Quelle die Impulsechokompensation automatisch geladen oder müssen wir das selbst tun?

Führen USB-Freisprechgeräte wie das in den Foren beliebte Jabra 410 eine Echokompensation durch? Ich benutze eine mit einem RPi 3B + und "Hey Mycroft, stop" scheint zu funktionieren. Ich bin mir allerdings nicht sicher, ob es bei "normaler Lautstärke" "gut" funktioniert.

Derzeit laden keine Distributionen die Impulsechokompensation (die ich kenne).
Per https://www.jabra.com/business/speakerphones/jabra-speak-series/jabra-speak-410 "DSP-Technologie (Digital Signal Processing)
Kristallklarer Klang ohne Echos oder verzerrte Klänge, selbst bei maximaler Lautstärke ", was sehr nach einer Art Echokompensation klingt.

@tlc as @ el-tocino gibt an, dass die Echokompensation nicht standardmäßig geladen ist. Beim Laden wird ein virtuelles Mikrofon erstellt, das Sie für die Verwendung mit mycroft als Standard festlegen müssen. (Grundsätzlich im Puls-Audio-Lautstärkeregler auswählen)

Wie geht es uns allen mit diesem - irgendwelche Fragen? Gibt es Informationen, die wir zur Verfügung stellen könnten?

Nicht meine Arbeit, sondern nur darauf gestoßen;

https://github.com/voice-engine/ec

Sieht interessant aus und kreuzt die Kästchen an.

Ich habe mit Voice-Engine / Ec (was im Grunde ein Wrapper für Speex ist) und PulseAudios Echo-Cancel-Modul (dafür muss man PA 7.1 von den Debian-Jessie-Backports installieren) mit den Algorithmen "webrtc" und "speex" experimentiert. (adrian ist überhaupt nicht verwendbar) hatte aber bisher kein glück. Ich sehe hauptsächlich zwei Gründe:
1) Wenn Musik über den Mark-I-Lautsprecher abgespielt wird, nimmt das Mikrofon des Mark-I fast nur die Musik auf (dies ist auf die physische Konstruktion zurückzuführen), außerdem nimmt das Mikrofon / der Vorverstärker viel elektrisches / Radio-Rauschen auf . Dies macht es für jeden Rausch- / Echokompensationsalgorithmus wirklich schwierig.
2) Das RPI3-Timing der internen Uhr ist für diese Art der Echtzeitverarbeitung nicht stabil genug - die permanente Zeitverschiebung verwirrt auch die Echokompensationsalgorithmen.
Ich werde "rnnoise" in Kürze ausprobieren (habe es bereits für RPI kompiliert, aber einige Probleme beim Konfigurieren für PA), muss aber aus den oben genannten Gründen nicht zu viel Rücksicht nehmen

Ich wäre bereit, eine Lösung in Betracht zu ziehen, die eine geringfügige und kostengünstige Erweiterung oder Modifikation des Mark 1 erfordert, z. B. Akustikschaum, der das Mikrofon und den Lautsprecher trennt, oder eine Kabelumleitung. Aber keine Änderungen auf Board-Ebene.

Eine Beamforming basierend auf der Mikrofonposition und einem billigen USB-Mikrofon kann eine Option sein. Ein oder zwei dieser Mini-Mikrofone (Suche "Overfly Portable USB 2.0 Mic") in den Anschlüssen, kombiniert mit dem Audio des vorhandenen Mikrofons, das über einen Beamformer läuft, sollten in der Lage sein, AEC zu machen und das Hören zu verbessern. Ich habe es leider noch nicht selbst versucht.

Nach einigen weiteren Experimenten habe ich eine Konfiguration mit dem PulseAudio-Echokompensationsmodul, die vernünftig * mit Lautstärkepegeln von bis zu 5 (Mark-1 maximal 11) in einem Abstand von ca. 4 Fuß. Es gibt etwas mehr Raum für die Optimierung von Parametern, die die Zuverlässigkeit erhöhen könnten.
Ich habe die Hardware-Optimierung (Akustikschaum) noch nicht ausprobiert. Darüber hinaus erwäge ich Änderungen in Mycroft Audioservices, z. B. Enten- / Stummschaltungsmusik, sobald ein Weckwort erkannt wird, um eine saubere Äußerung zu erhalten ...

* hängt vom Musikmaterial ab, je komprimierter (siehe " Loudness War "), desto weniger zuverlässig funktioniert es.

Ich glaube, @forslund hat bereits einige Arbeiten am Ducking-Teil durchgeführt. Glauben Sie, dass es sich bereits irgendwo im PR / Issue-Bereich befindet.

Bei Ihnen muss AEC mit Audio-Ducking kombiniert werden.

Ich habe Tür- / Fensterisolierschaum verwendet (ähnlich: https://www.homedepot.com/p/Frost-King-3-4-in-x-5-16-in-x-10-ft-Black-Rubber) -Foam-Weatherseal-Tape-R534H / 202262324), um eine Barriere um die Vorderseite des Mikrofons zwischen der Frontplatine und der Frontplatte zu bilden. Zweitens habe ich auch die Rückseite des Lautsprechers mit Schaum bedeckt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

damorosodaragona picture damorosodaragona  ·  5Kommentare

el-tocino picture el-tocino  ·  4Kommentare

fxdgear picture fxdgear  ·  6Kommentare

fermulator picture fermulator  ·  6Kommentare

beemorris picture beemorris  ·  6Kommentare