Quand commence la piste de rire?


14

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:

  1. Est-ce que tout cela a du sens?

  2. 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? Spectrogramme de puissance logarithmique (Vous pouvez voir le rire dans l'image ci-dessus comme un mur d'orange frappant à 45% du chemin.)

  3. 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? Spectrogramme

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


1
Je suis d'accord sur le fait que "je n'aurai pas besoin d'un réseau de neurones pour obtenir un détecteur solide pour les pistes de rire". Je suis d' accord aussi vous lancer Kolmogorov au signal, étant donné que si vous avez raison, et la piste de rire est la somme (pondérée) des rires iid, vous devriez obtenir des caractéristiques normales de certains types. Peut-être que vous souhaitez toujours augmenter la résolution de fréquence. Soit dit en passant, pour quelqu'un qui n'est pas "DSP", votre jargon est assez bien :) malheureusement, je ne suis pas un mec audio, donc je ne suis probablement pas très utile.
Marcus Müller

Je suis heureux d'aider. Avez-vous des données pour la formation? L'une des choses les plus importantes est l'étiquetage des données. Déchets entrants - détritus sortis. L'une des approches les plus simples et les plus efficaces serait de former un GMM à base de sacs de cadres et d'évaluer la probabilité.
jojek

Vous voudrez peut-être d'abord vérifier si vous pouvez séparer le rire du silence en vérifiant la puissance / l'amplitude de votre signal à des moments donnés. Vous donnant la possibilité de seuiller les moments où "quelque chose" se passe. Ensuite, vous pouvez essayer de regarder la distribution de la fréquence. Par exemple, la parole peut avoir des pics nets distincts (peu importe où se trouvent exactement ces pics, juste qu'ils existent), tandis que le rire est uniforme comme vous l'avez dit. Le suivi de cela pourrait donner une valeur pour décider s'il s'agit de rire. (Vous avez besoin des informations de volume, pour vous assurer que vous n'avez pas juste un silence uniforme)
user6522399

Réponses:


0

Sur la base de votre observation, ce spectre du signal est suffisamment reconnaissable, vous pouvez l'utiliser comme une caractéristique pour classer le rire de la parole.

Il y a plusieurs façons de voir le problème.

Approche n ° 1

Dans un cas, vous pouvez simplement regarder le vecteur du MFCC. et l'appliquer à n'importe quel classificateur. Étant donné que vous disposez de nombreux coefficients dans le domaine des fréquences, vous pouvez examiner la structure des classificateurs en cascade avec des algorithmes de renforcement tels que Adaboost sur la base de cela, vous pouvez comparer la classe de la parole à la classe du rire.

Approche n ° 2

Vous vous rendez compte que votre discours est essentiellement un signal variant dans le temps. Ainsi, l'un des moyens efficaces de le faire est d'examiner la variation temporelle du signal lui-même. Pour cela, vous pouvez diviser les signaux en lots d'échantillons et regarder le spectre pendant ce temps. Maintenant, vous pouvez vous rendre compte que le rire pourrait avoir un schéma plus répétitif pendant une durée stipulée où la parole possède intrinsèquement plus d'informations et donc la variation du spectre serait plutôt plus grande. Vous pouvez l'appliquer au type de modèle HMM pour voir si vous restez constamment dans le même état pour un spectre de fréquence ou si vous continuez à changer. Ici, même si parfois le spectre de la parole ressemble à celui du rire, il changera plus de temps.

Approche n ° 3

Forcer à appliquer un codage de type LPC / CELP sur le signal et observer le résidu. Le codage CELP constitue un modèle très précis de production de la parole.

De la référence ici: THÉORIE DU CODAGE CELP

Les redondances dans le signal de parole sont presque supprimées après la prédiction à court terme et la prévision à long terme du signal de parole et le résidu a très peu de corrélation en lui. Ensuite, une excitation est recherchée qui synthétise la parole et l'index et le gain du livre de codes sont recherchés à partir du livre de codes fixe. Le critère de sélection d'index de livre de codes optimal est basé sur MMSE entre la parole synthétisée localement et le signal vocal d'origine.

Pour le dire simplement, après tout le discours qui est prédit de l'analyseur est supprimé - ce qui reste est le résidu qui est transmis pour recréer la forme d'onde exacte.

Comment cela résout-il votre problème? Fondamentalement, si vous appliquez le codage CELP, la parole dans le signal est principalement supprimée, ce qui reste est un résidu. En cas de rire, une majorité du signal pourrait être conservée car le CELP ne parviendra pas à prédire un tel signal avec la modélisation des voies vocales, où la parole individuelle aura très peu de résidus. Vous pouvez également analyser ce résidu dans le domaine fréquentiel, pour voir s'il s'agit de rire ou de discours.


0

La plupart des dispositifs de reconnaissance vocale utilisent non seulement les coefficients MFCC mais également les dérivées première et deuxième des niveaux MFCC. Je suppose que les débuts seraient très utiles dans ce cas et vous aideraient à distinguer un rire des autres sons.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.