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 zuerst ... Ich habe ein einfaches Grafikprogramm geschrieben und versucht, es zu zeichnen!
Die Demo ist als [Video] verfügbar (https://youtu.be/L_uVB2sU16M).
Ich hoffe, Sie können sich den [Artikel] ansehen, den ich zuvor geschrieben habe (https://qiita.com/sumita_v09/items/d22850f41257d07c45ea).
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.
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.
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
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.