Heim > Backend-Entwicklung > C++ > Hauptteil

Beste Lösung für AEC durch Portierung des Matlab/Octave-Algorithmus nach C

DDD
Freigeben: 2024-10-17 18:13:24
Original
676 Leute haben es durchsucht

Fertig! Ein bisschen beeindruckt von mir selbst.

Unser Produkt benötigt die Funktion der Echounterdrückung, drei mögliche technische Lösungen wurden identifiziert,
1) Verwenden Sie die MCU, um Audio-Out- und Audio-In-Audiosignale zu erkennen, und schreiben Sie einen Algorithmus, um die Stärke der beiden Seiten des Tonsignals zu berechnen. Erzielen Sie eine optionale Kanalumschaltung entsprechend der Stärke von Audio-Out und Audio-In zwischen den beiden Seiten Der Halbduplex-Anrufeffekt, aber jetzt sind Vollduplex-Anrufeffekte auf dem Markt, Halbduplex wird das Produkt weniger wettbewerbsfähig machen

(2) Verwenden Sie den Echounterdrückungsalgorithmus des CPU-Herstellers. Die tatsächliche Test-Echobeseitigung ist aufgrund der Abstimmung aller einstellbaren Parameter und der vielen Diskussionen mit dem Hersteller nicht sauber genug und weit von der erwarteten Wirkung entfernt. Das Feedback des Anbieters besteht darin, das Gehäuse zu verbessern, um das Mikrofon so weit wie möglich vom Lautsprecher zu isolieren. Aufgrund des ID-Designs, der Klangqualität und der Lautstärkeanforderungen gibt es jedoch keinen Spielraum für eine Änderung des Gehäuses.

(3) Laden Sie die Open-Source-Echokompensationsalgorithmen wie webrtc und speex aus dem Internet herunter und portieren Sie sie nach der Cross-Kompilierung auf das Produkt.

4) Kaufen Sie die Algorithmen von einem Unternehmen, das sich auf Audioalgorithmen spezialisiert hat, aber jedes Produkt würde zusätzliche Kosten erfordern, was die Wettbewerbsfähigkeit des Produkts stark beeinträchtigen würde.

Nachdem ich die Optionen abgewogen hatte, beschloss ich, eine eingehende Untersuchung der Lösung durch die Verwendung von Open-Source-Algorithmen durchzuführen;

Also habe ich eine Reihe von Echounterdrückungscodes von Github, Gitee und anderen Websites heruntergeladen, sowohl in C als auch in Matlab.

Synthesieren Sie die beiden Stimmen mit Oktaven, um einen Abschnitt einer Double-Talk-Szene mit der Mikrofonerfassungsstimme am nahen Ende sowie der Referenzstimme am anderen Ende zu erzeugen.
Führen Sie dann den online heruntergeladenen Code zur Echounterdrückung aus, analysieren Sie die Audioausgabe und wählen Sie den Algorithmus aus, der am besten funktioniert.

Aus den Ergebnissen geht hervor, dass der AEC-Algorithmus der webrtc-Audioverarbeitung nicht gut ist, die Echounterdrückung nicht sauber ist und in der Doppelgesprächsszene offensichtlich Wörter verschluckt werden. Der AEC3-Algorithmus der WebRTC-Audioverarbeitung ist sauber, unterdrückt jedoch den Ton des anderen Endes des Doppelgesprächs stark, und der Ton ist intermittierend und unnatürlich.

Der Speex hat ein leichtes Echo, es ist am besten, eine Matlab-Sprachimplementierung des AEC-Algorithmus zu finden, die Echobeseitigung ist sehr sauber, Doppelsprache hat nur ein leichtes Phänomen des Verschluckens von Wörtern.

Dann verwende ich Visual Studio, um den Open-Source-Code von webrtc audioprocessing aec zu kompilieren und zu debuggen, verweise auf den obigen aec-Algorithmus von matlab, um den Code zu ändern, verwende Online-Debugging zum Festlegen von Haltepunkten, führe Einzelschritte aus und führe andere Analysen durch Der Wert der Anweisung ändert sich schrittweise, und letztendlich werden die Daten und die Ergebnisse des AEC-Algorithmus der Matlab-Sprache identisch. Die erhaltenen Enddaten sind genau die gleichen wie die Ergebnisse des AEC-Algorithmus in Matlab.

Heute wurde das Produkt kompiliert, die MIC- und LAUTSPRECHERverstärkung auf einen angemessenen Wert eingestellt und dann der eigentliche Anruf durchgeführt, um die Wirkung der Echounterdrückung zu testen. Die Ergebnisse sind überraschend gut.

Dadurch besteht die Hoffnung, ein Produkt zu entwickeln, das Umsätze über dem kleinen Ziel erreichen kann.

Best solution to AEC by porting matlab/octave algorithm to C

Best solution to AEC by porting matlab/octave algorithm to C

Best solution to AEC by porting matlab/octave algorithm to C

Das obige ist der detaillierte Inhalt vonBeste Lösung für AEC durch Portierung des Matlab/Octave-Algorithmus nach C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage