Cette fois, nous utiliserons en fait la factorisation matricielle non négative (NMF) pour le son. Le but est de créer une maquette permettant à tout le monde d'effectuer facilement une démonstration de séparation de source sonore.
Le résultat d'abord ... J'ai écrit un programme de dessin graphique simple et j'ai essayé de le dessiner!
La démo est disponible en Vidéo.
J'espère que vous pourrez jeter un œil à l '[article] que j'ai écrit plus tôt (https://qiita.com/sumita_v09/items/d22850f41257d07c45ea).
La forme de base de NMF est
V \approx WH
Il peut être exprimé par une expression telle que. Lors de la séparation des sources sonores, nous supposons une parcimonie dans la matrice de spectrogramme V et la décomposons afin qu'elle devienne le produit de la matrice de dictionnaire W et de la matrice d'excitation H. La matrice de dictionnaire exprime le spectre de puissance des tons contenus dans V et la matrice d'excitation exprime à quel point les tons représentés par W sont inclus dans l'axe des temps. Il est possible de séparer la source sonore sans professeur, mais cette fois nous allons utiliser NMF avec un professeur car nous voulons séparer n'importe quelle tonalité du son d'entrée. Plus précisément, un spectre de puissance de tonalité arbitraire est enregistré dans la matrice de dictionnaire, et seule la matrice d'excitation est mise à jour lors de la mise à jour. De plus, pour effectuer la séparation de la source sonore en temps réel, l'entrée V n'est pas la matrice du spectrogramme (fréquence x temps) mais la matrice du spectre de puissance (fréquence x 1) de la dernière trame uniquement est V.
La maquette de séparation de source sonore a été créée avec les exigences suivantes. --Travailler sur CUI
Quant à l'implémentation elle-même, l'implémentation NMF décrite dans l'article lié ci-dessus a été modifiée pour le son afin de pouvoir fonctionner sur CUI.
L'implémentation n'est pas publiée dans l'article cette fois, mais elle est publiée sur Github. Les paramètres d'environnement détaillés et les opérations CUI sont décrits dans le README, nous espérons donc que vous le trouverez utile. https://github.com/T-Sumida/RealTimeSoundSeprator
J'ai créé une simulation de séparation de source sonore qui fonctionne en temps réel. Ce n'est pas aussi incroyablement bon que l'apprentissage profond, mais je pense que c'est un avantage de pouvoir ajouter des sons à séparer sans processus d'apprentissage. NMF est également amusant, mais je pense écrire sur des histoires liées à l'apprentissage automatique que je fais au travail à l'avenir.
Recommended Posts