Déterminer à quel point l'audio est similaire à la parole humaine

12

En cherchant une réponse à ce problème, j'ai trouvé ce forum alors j'ai décidé de croiser cette question à moi de Stack Overflow.


Je cherche une méthode pour déterminer la similitude entre un segment audio et une voix humaine, qui s'exprime numériquement.

J'ai beaucoup cherché, mais ce que j'ai trouvé jusqu'à présent (détaillé ci-dessous) ne correspond pas vraiment à ce dont j'ai besoin:

  • Une méthode consiste à utiliser un logiciel de reconnaissance vocale pour obtenir des mots à partir d'un segment audio. Cependant, cette méthode n'est pas en mesure de déterminer à quel point l'audio est "similaire" à la parole humaine; il peut souvent dire s'il y a ou non des mots dans l'audio, mais s'il n'y a pas de mots définis, il ne peut pas dire que fermer l'audio est d'avoir de tels mots.
    Exemples: CMU Sphinx , Dragonfly , SHoUT

  • La méthode la plus prometteuse est appelée détection d'activité vocale (VAD). Cependant, cela a tendance à avoir les mêmes problèmes: les algorithmes / programmes utilisant VAD ont tendance à renvoyer simplement si le seuil d'activité a été atteint ou non, et aucune valeur de «similitude» avant ou après ce seuil. Alternativement, beaucoup recherchent juste le volume, pas la similitude avec la parole humaine.
    Exemples: Speex , Listener , FreeSWITCH


Des idées?

Jeff Gortmaker
la source
1
D'après votre question, il n'est pas clair si votre problème est A / prenez un enregistrement audio et dites s'il contient de la parole humaine ou non (exemple d'application: détecter et supprimer la conversation DJ d'un enregistrement d'une émission de radio); ou B / prendre une entrée vocale et indique à quel point cela ressemble à un segment audio de référence. Dans le cas où c'est B, sur quels critères voulez-vous mesurer la similitude. Sur le contour de la mélodie? (par exemple: faire correspondre une voix chantée à une chanson). Sur les classes de rythme et de cluster? (par exemple: faire correspondre le beatboxing / onomatopée à une boucle de batterie). Sur le timbre? (faire correspondre une voix à un effet sonore). Veuillez nous indiquer votre candidature.
pichenettes
Désolé, mon problème est ce que vous avez détaillé dans A. Je souhaite déterminer si un segment audio est ou non de la parole humaine.
Jeff Gortmaker
1
J'ai travaillé sur un problème connexe - essayant de déterminer quand les sons de ronflement / respiration ont été "pollués" par la parole ou la musique. Il est extrêmement difficile de le faire avec toute fiabilité, et sans recourir à des algorithmes de reconnaissance vocale "avancés" (s'ils fonctionnent, en fait, même). Ma seule observation serait que la parole a tendance à avoir un rythme irrégulier, alors que la musique est (généralement) régulière. Cela et peut-être la «planéité spectrale» méritent d'être vérifiés (j'évalue toujours ses mérites à mes fins).
Daniel R Hicks
(Un cheveu plus en détail: je trouve que l'écart-type normalisé de planéité spectrale calculé à partir de la FFT de l'audio semble refléter quelque chose de qualité audio.)
Daniel R Hicks

Réponses:

6

Ce type de problème est généralement résolu en utilisant des techniques d'apprentissage automatique.

Décomposez le signal en une séquence de 20 ms ou 50 ms. Extraire des fonctionnalités sur chaque image. Les MFCC sont généralement bons pour ce type d'application, bien qu'il existe des fonctionnalités plus spécifiques à la détection de la voix (énergie de modulation de 4 Hz - qui est à peu près la vitesse à laquelle les gens parlent; taux de passage par zéro).

Ensuite, en utilisant un ensemble audio de formation que vous avez manuellement étiqueté comme étant de la parole / non de la parole, entraînez un classificateur (modèles de mélange gaussiens, SVM ...) sur les caractéristiques des trames.

Cela vous permettra de classer les trames non étiquetées en classes vocales / non vocales. La dernière étape consiste à lisser les décisions (une trame classée comme non vocale entourée de centaines de trames vocales est susceptible d'être une erreur de classification), par exemple à l'aide de HMM, ou simplement d'un filtre médian.

Quelques références:

Classification robuste de la parole et de la musique dans les documents audio (Pinquier et al) Discrimination de la parole et de la musique pour les applications multimédias (El-Maleh et al) Comparaison des fonctionnalités de discrimination de la parole et de la musique (Carey et al)

Notez que les caractéristiques et les techniques de classification qu'ils décrivent sont également pertinentes pour le problème de classe 1 de détection de la parole (au lieu de discriminer la parole par rapport à autre chose). Dans ce cas, vous pouvez utiliser des techniques de modélisation à 1 classe telles que le SVM à 1 classe, ou simplement prendre le score de vraisemblance d'un GMM formé sur des données vocales comme mesure de "capacité de parole".

Si, d'un autre côté, votre problème est vraiment la discrimination de la parole par rapport à autre chose (par exemple la musique), vous pourriez également très bien utiliser des approches non supervisées qui visent à détecter les frontières entre des contenus audio similaires - plutôt que d'identifier ce contenu lui-même.

pichenettes
la source
Merci, cela aide une tonne! Quel est l'avantage de décomposer le signal en petites fenêtres? Parce que la sortie que je recherche est une valeur numérique qui décrit l'ensemble du segment audio, serait-il préférable d'extraire des fonctionnalités pour l'ensemble du signal et pas seulement des fenêtres spécifiques?
Jeff Gortmaker
Le calcul des caractéristiques (en particulier celles spectrales ou cepstrales) sur de très longues fenêtres aurait pour effet de faire la moyenne ou d'annuler certaines des propriétés qui font ressortir la parole. Vous pouvez le vérifier vous-même en mélangeant de nombreux courts fragments de discours - il sera difficile de reconnaître le résultat comme un discours. Il est donc préférable d'effectuer la classification sur de petits segments; et, dans votre cas, agréger les scores (par exemple calculer la moyenne du score de vraisemblance donné par un GMM; ou calculer le% de trames classées comme parole par un classificateur binaire).
pichenettes
Pour être plus précis, gardez à l'esprit que la dimension temporelle est "réduite" lorsque vous regardez un spectre. Par exemple, le spectre de puissance d'une tonalité de 500 Hz suivie dans le temps d'une tonalité de 1 kHz est similaire au spectre de puissance de ces deux tonalités jouées simultanément; ainsi le spectre de puissance, sur une longue fenêtre, d'un signal qui change beaucoup peut ne pas sembler très représentatif du contenu du signal.
pichenettes