J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python

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 de faire

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.

Qu'est-ce que NMF?

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).

Comment traitez-vous le son avec NMF?

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.

Quel genre de chose faites-vous?

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.

Code source

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

Résumé

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

J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
Un débutant en apprentissage automatique a essayé de créer un modèle de prédiction de courses de chevaux avec python
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
Je veux faire un jeu avec Python
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
Code source pour la séparation des sources sonores (série de pratiques d'apprentissage automatique) appris avec Python
J'ai essayé de déplacer l'apprentissage automatique (détection d'objet) avec TouchDesigner
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé l'apprentissage automatique avec liblinear
Mayungo's Python Learning Episode 3: J'ai essayé d'imprimer des nombres
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai essayé d'écrire dans un modèle de langage profondément appris
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
[1 hour challenge] J'ai essayé de créer un site de bonne aventure qui soit trop adapté à Python
J'ai essayé de créer un générateur qui génère une classe conteneur C # à partir de CSV avec Python
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
J'ai essayé de rendre le deep learning évolutif avec Spark × Keras × Docker
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
J'ai essayé de faire une étrange citation pour Jojo avec LSTM
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
J'ai essayé un langage fonctionnel avec Python
J'ai créé une API Web
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Introduction ~
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Implémentation ~
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
Mayungo's Python Learning Episode 6: J'ai essayé de convertir une chaîne de caractères en nombre
Mayungo's Python Learning Episode 2: J'ai essayé de mettre des caractères avec des variables
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
[AWS] [GCP] J'ai essayé de rendre les services cloud faciles à utiliser avec Python
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
J'ai essayé de créer un environnement de développement Mac Python avec pythonz + direnv
[Zaif] J'ai essayé de faciliter le commerce de devises virtuelles avec Python
J'ai commencé l'apprentissage automatique avec Python (j'ai également commencé à publier sur Qiita) Préparation des données