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 , SHoUTLa 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?
la source
Réponses:
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.
la source