Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen

Dieses Mal werden wir tatsächlich die nicht negative Matrixfaktorisierung (NMF) für den Klang verwenden. Das Ziel ist es, ein Modell zu erstellen, mit dem jeder problemlos eine Demo zur Trennung von Tonquellen durchführen kann.

Das Ergebnis der Herstellung

Das Ergebnis zuerst ... Ich habe ein einfaches Grafikprogramm geschrieben und versucht, es zu zeichnen! 代替テキスト

Die Demo ist als [Video] verfügbar (https://youtu.be/L_uVB2sU16M).

Was ist NMF?

Ich hoffe, Sie können sich den [Artikel] ansehen, den ich zuvor geschrieben habe (https://qiita.com/sumita_v09/items/d22850f41257d07c45ea).

Wie verarbeitet man Sound mit NMF?

Die Grundform von NMF ist


V \approx WH

Es kann durch einen Ausdruck wie ausgedrückt werden. Bei der Trennung von Schallquellen nehmen wir eine Spärlichkeit in der Spektrogrammmatrix V an und zerlegen sie so, dass sie zum Produkt der Wörterbuchmatrix W und der Anregungsmatrix H wird. Die Wörterbuchmatrix drückt das Leistungsspektrum der in V enthaltenen Töne aus, und die Anregungsmatrix drückt aus, wie stark die durch W dargestellten Töne in der Zeitachse enthalten sind. Es ist möglich, die Tonquelle ohne Lehrer zu trennen, aber dieses Mal verwenden wir NMF mit einem Lehrer, weil wir jeden Ton vom Eingangston trennen möchten. Insbesondere wird ein beliebiges Tonleistungsspektrum in der Wörterbuchmatrix registriert, und nur die Anregungsmatrix wird beim Aktualisieren aktualisiert. Um eine Schallquellentrennung in Echtzeit durchzuführen, ist der Eingang V nicht die Spektrogrammmatrix (Frequenz x Zeit), sondern die Leistungsspektrummatrix (Frequenz x 1) nur des neuesten Rahmens ist V.

Was machst du?

Das Schallquellentrennungsmodell wurde mit den folgenden Anforderungen erstellt.

Was die Implementierung selbst betrifft, so wurde die im oben verlinkten Artikel beschriebene NMF-Implementierung so geändert, dass sie auf CUI ausgeführt werden kann.

Quellcode

Die Implementierung wird dieses Mal nicht im Artikel veröffentlicht, sondern auf Github veröffentlicht. Detaillierte Umgebungseinstellungen und CUI-Vorgänge sind in der README-Datei beschrieben. Wir hoffen, dass Sie sie hilfreich finden. https://github.com/T-Sumida/RealTimeSoundSeprator

Zusammenfassung

Ich habe einen Soundquellentrennungs-Mock erstellt, der in Echtzeit arbeitet. Es ist nicht so wahnsinnig gut wie tiefes Lernen, aber ich denke, es ist ein Vorteil, Klänge hinzufügen zu können, die ohne Lernprozess getrennt werden sollen. NMF macht auch Spaß, aber ich denke darüber nach, über Geschichten im Zusammenhang mit maschinellem Lernen zu schreiben, die ich in Zukunft bei der Arbeit mache.

Recommended Posts

Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
Ein Anfänger des maschinellen Lernens versuchte, mit Python ein Vorhersagemodell für Pferderennen zu erstellen
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte ein Spiel mit Python machen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Quellcode für die Trennung von Tonquellen (Übungsreihe zum maschinellen Lernen), der mit Python gelernt wurde
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich habe maschinelles Lernen mit liblinear versucht
Mayungos Python Learning Episode 3: Ich habe versucht, Zahlen zu drucken
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
[1 Stunde Herausforderung] Ich habe versucht, eine Wahrsagerseite zu erstellen, die für Python zu geeignet ist
Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
Ich habe versucht, Deep Learning mit Spark × Keras × Docker skalierbar zu machen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe eine Web-API erstellt
Ich habe versucht, Othello AI mit Tensorflow zu machen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Einführung ~
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Implementierung ~
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Mayungos Python Learning Episode 6: Ich habe versucht, eine Zeichenkette in eine Zahl umzuwandeln
Mayungos Python Learning Episode 2: Ich habe versucht, Zeichen mit Variablen zu löschen
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
[AWS] [GCP] Ich habe versucht, die Verwendung von Cloud-Diensten mit Python zu vereinfachen
(Maschinelles Lernen) Ich habe versucht, die Bayes'sche lineare Regression bei der Implementierung sorgfältig zu verstehen
[Outlook] Ich habe versucht, mit Python automatisch eine tägliche Berichtsmail zu erstellen
Ich habe versucht, das Modell mit der Low-Code-Bibliothek für maschinelles Lernen "PyCaret" zu visualisieren.
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
[Zaif] Ich habe versucht, den Handel mit virtuellen Währungen mit Python zu vereinfachen
Ich habe mit Python mit dem maschinellen Lernen begonnen (ich habe auch angefangen, in Qiita zu posten). Datenvorbereitung