Un de mes projets de week-end m'a amené dans les eaux profondes du traitement du signal. Comme pour tous mes projets de code qui nécessitent des calculs intensifs, je suis plus qu'heureux de bricoler mon chemin vers une solution malgré un manque de connaissances théoriques, mais dans ce cas, je n'en ai pas et j'aimerais avoir des conseils sur mon problème , à savoir: j'essaie de savoir exactement quand le public en direct rit pendant une émission de télévision.
J'ai passé pas mal de temps à lire sur les approches d'apprentissage automatique pour détecter le rire, mais j'ai réalisé que c'était plus à voir avec la détection du rire individuel. Deux cents personnes qui rient à la fois auront des propriétés acoustiques très différentes, et mon intuition est qu'elles devraient être distinguées par des techniques beaucoup plus grossières qu'un réseau neuronal. Je me trompe peut-être complètement! J'aimerais avoir des réflexions sur la question.
Voici ce que j'ai essayé jusqu'à présent: j'ai découpé un extrait de cinq minutes d'un épisode récent de Saturday Night Live en deux clips. J'ai ensuite étiqueté ces «rires» ou «sans rire». À l'aide de l'extracteur de fonctionnalités MFCC de Librosa, j'ai ensuite exécuté un clustering K-Means sur les données, et j'ai obtenu de bons résultats - les deux clusters ont été très bien mappés à mes étiquettes. Mais quand j'ai essayé de parcourir le fichier plus long, les prédictions n'ont pas tenu le coup.
Ce que je vais essayer maintenant: je vais être plus précis sur la création de ces clips de rire. Plutôt que de faire une séparation et un tri aveugles, je vais les extraire manuellement, afin qu'aucun dialogue ne pollue le signal. Ensuite, je vais les diviser en clips d'un quart de seconde, calculer les MFCC de ceux-ci et les utiliser pour former un SVM.
Mes questions à ce stade:
Est-ce que tout cela a du sens?
Les statistiques peuvent-elles aider ici? J'ai défilé dans le mode d'affichage du spectrogramme d'Audacity et je peux voir assez clairement où les rires se produisent. Dans un spectrogramme de puissance logarithmique, la parole a un aspect "sillonné" très distinctif. En revanche, le rire couvre un large spectre de fréquences assez uniformément, presque comme une distribution normale. Il est même possible de distinguer visuellement les applaudissements du rire par l'ensemble de fréquences plus limité représenté par les applaudissements. Cela me fait penser aux écarts-types. Je vois qu'il y a quelque chose qui s'appelle le test de Kolmogorov – Smirnov, cela pourrait-il être utile ici? (Vous pouvez voir le rire dans l'image ci-dessus comme un mur d'orange frappant à 45% du chemin.)
Le spectrogramme linéaire semble montrer que le rire est plus énergique dans les basses fréquences et s'estompe vers les hautes fréquences - cela signifie-t-il qu'il peut être qualifié de bruit rose? Si tel est le cas, cela pourrait-il être une solution au problème?
Je m'excuse si j'ai abusé du jargon, j'ai été un peu sur Wikipédia pour celui-ci et je ne serais pas surpris si j'en avais un peu brouillé.