J'essaie de comparer 2 échantillons de parole et de les évaluer sur des similitudes. Pensez à quelqu'un qui essaie de répéter une phrase, puis compare ces 2 fichiers audio.
J'ai commencé par implémenter l'algorithme MFCC (http://en.wikipedia.org/wiki/Mel-frequency_cepstrum). Je calcule les MFCC des deux échantillons audio, ce qui me donne environ 500 images audio (à 10 ms chacune, avec un chevauchement de 30% comme le précédent) ayant environ 14 coefficients MFCC. Donc une matrice 500x14 pour chaque signal audio.
Ensuite, je fais l'approche naïve de simplement différencier les matrices. Cela ne donne pas de résultats très prometteurs. La moitié du temps lorsque je compare des échantillons audio complètement différents (où différentes phrases sont parlées), j'obtiens moins de différence que de comparer l'audio où j'essaie de répéter la même phrase! C'est clairement à l'envers et ne peut pas me donner un bon algorithme de notation.
Comment puis-je améliorer cela? Je pensais que les MFCC étaient une partie très importante du traitement de la parole, mais je dois clairement en faire plus.
Réponses:
Tout d'abord, vous devrez corriger les différences de timing. Par exemple, si un énoncé est "--heeelloooo ---" et l'autre "hellooooooo ----" (- représentant le silence), une comparaison directe par paire de trames MFCC montrera des différences simplement parce que les deux échantillons ne sont pas alignés. Vous pouvez utiliser Dynamic Time Warping pour trouver le meilleur alignement entre les deux séquences de vecteurs de caractéristiques - et calculer la distance correspondante.
Le deuxième problème est que si les deux enregistrements ne proviennent pas du même haut-parleur, vous devrez compenser les différences de timbre. Le MFCC d'une femme disant "aaa" n'est pas le même que le MFCC d'un locuteur masculin disant le même phonème! Un modèle relativement simple pour tenir compte des variations du timbre vocal consiste à supposer qu'il existe une transformation linéaire qui "mappe" les MFCC d'un locuteur sur les MFCC d'un autre locuteur (pour être juste, un seul petit sous-ensemble de ces transformés se transforme avec précision modéliser la façon dont des paramètres tels que l'âge, le sexe, etc. «modifient» le MFCC). Une fois que deux enregistrements ont été alignés, même grossièrement, vous pouvez utiliser une procédure des moindres carrés pour estimer . Cette procédure est connue sous le nom de normalisation du locuteur ou d'adaptation du locuteur.Γ Γ
Votre procédure de comparaison comprendra donc les étapes suivantes. et sont vos séquences MFCC d'origine.A B
Une dernière chose qui me vient à l'esprit est que vous devez éliminer le premier coefficient MFCC (qui exprime grossièrement l'intensité du signal) pour améliorer la capacité de votre système à correspondre aux énoncés prononcés à un volume / niveau d'enregistrement différent.
la source