TIPE Coefficients cepstraux

Une petite question sur votre TIPE...

Modérateurs : Marc Ménétrier, Th. Zabulon

Répondre
InfinityShark
Messages : 11
Enregistré le : mer. août 17, 2016 11:26 am
Classe : MPSI

TIPE Coefficients cepstraux

Message par InfinityShark » sam. janv. 13, 2018 10:02 pm

Bonsoir,
Dans le cadre de mon TIPE sur la reconnaissance vocale, j'ai cru comprendre que l'échelle mel était plus adaptée à l'audition humaine, et donc que son utilisation pouvait être très utile. Je souhaite alors obtenir des coefficients de cepstraux de certains signaux sonores (des mots d'une base de données), et à partir de ceux-ci reconnaître un mot prononcé de notre base de donnée. Cependant, je ne suis pas vraiment sur que la comparaison de ces coefficients soit assez discriminante et donc pertinente.
Avez-vous une idée ?
Merci d'avance pour vos réponses.

Avatar du membre
bullquies
Messages : 6346
Enregistré le : mar. avr. 17, 2012 9:19 pm
Classe : Thé à la

Re: TIPE Coefficients cepstraux

Message par bullquies » sam. janv. 13, 2018 10:39 pm

Bonjour,

Si j'ai bien compris tu essayes de construire un classificateur, c'est le cas ?
Cependant, je ne suis pas vraiment sur que la comparaison de ces coefficients soit assez discriminante et donc pertinente.
Ce n'est pas une méthode. C'est comme dire "Je mesure une valeur de 1.3 et j'essaye de la comparer à 1 mais j'ai peur que ce ne soit pas assez discriminant".

Tu discrimines quand tu as une méthode pour dire si un objet appartient à une catégorie, peu importe le résultat obtenu. C'est pertinent quand ça peut donner assez souvent le résultat voulu.

Je te donne une règle de décision simple qui peut discriminer tous les cas de nombres réels :

un nombre réel x correspond toujours à son arrondi à l'unité supérieure. Ca ne veut pas dire que c'est une très bonne règle selon ce que j'essaye de faire (par exemple mesurer une longueur avec ma règle à l'école primaire).

je peux dire qu'un réel x correspond à l'entier le plus proche.


En pratique chaque mot prononcé avec une voix synthétique que tu as dans ta BDD aura un vecteur associé de coefficients cepstraux (je dis de la merde par exemple tu as deux mots "pomme" et "poire", avec les vecteurs de coefficients [0 0 7.8 3.1 0] et [6 1 0 0 0] respectivement).

Tu prends ton micro tu dis "pomme", et tu calcules un vecteur [1 0 1 0.5 0]. Il n'est égal ni à l'un, ni à l'autre. Comment fais-tu pour dire que c'est pomme et pas poire ? Sur 100 fois que tu dis "pomme", combien de fois au moins dois-tu obtenir le bon résultat ?
Tu prends à nouveau ton micro, tu dis "poire" et tu obtiens [2.9 3.1 3 0 1]. Même concept.

Bref tout ça c'est de la classificiation. https://fr.wikipedia.org/wiki/Classific ... utomatique

Je t'invite à voir un peu de quoi il s'agit si ce n'est pas déjà fait et à poser plus de questions si besoin après avoir cherché :)

Hazherty
Messages : 238
Enregistré le : lun. août 01, 2011 9:09 pm
Classe : Doctorat

Re: TIPE Coefficients cepstraux

Message par Hazherty » sam. janv. 13, 2018 10:54 pm

InfinityShark a écrit :j'ai cru comprendre que l'échelle mel était plus adaptée à l'audition humaine
Si tu utilises une échelle différente des Hertz pour des "on dit", ça ne plaira pas au jury. Tu dois sûrement avoir une raison valable, il faut la donner.
InfintyShark a écrit :Je souhaite alors obtenir des coefficients de cepstraux
Je ne connaissais pas, c'est très drôle :D Encore une fois, tu dois pouvoir justifier l'intérêt des cepstres dans ton TIPE (du peu que j'ai lu, il y a une énorme propriété lié au cepstres et au filtrage).
InfintyShark a écrit :certains signaux sonores (des mots d'une base de données), et à partir de ceux-ci reconnaître un mot prononcé de notre base de donnée. Cependant, je ne suis pas vraiment sur que la comparaison de ces coefficients soit assez discriminante et donc pertinente.
Suis le conseil de bullquies et renseigne toi sur les différentes techniques de classification. Il existe pas mal d'outils libres (ou au moins gratuits) qui te permettront de faire des choses assez sympa.

InfinityShark
Messages : 11
Enregistré le : mer. août 17, 2016 11:26 am
Classe : MPSI

Re: TIPE Coefficients cepstraux

Message par InfinityShark » dim. janv. 14, 2018 10:16 am

Merci de vos réponses.
bullquies a écrit :
sam. janv. 13, 2018 10:39 pm

En pratique chaque mot prononcé avec une voix synthétique que tu as dans ta BDD aura un vecteur associé de coefficients cepstraux (je dis de la merde par exemple tu as deux mots "pomme" et "poire", avec les vecteurs de coefficients [0 0 7.8 3.1 0] et [6 1 0 0 0] respectivement).

Tu prends ton micro tu dis "pomme", et tu calcules un vecteur [1 0 1 0.5 0]. Il n'est égal ni à l'un, ni à l'autre. Comment fais-tu pour dire que c'est pomme et pas poire ? Sur 100 fois que tu dis "pomme", combien de fois au moins dois-tu obtenir le bon résultat ?
Tu prends à nouveau ton micro, tu dis "poire" et tu obtiens [2.9 3.1 3 0 1]. Même concept.

Bref tout ça c'est de la classificiation. https://fr.wikipedia.org/wiki/Classific ... utomatique

Je t'invite à voir un peu de quoi il s'agit si ce n'est pas déjà fait et à poser plus de questions si besoin après avoir cherché :)
Oui d'accord, je comprends mieux, la comparaison des coefficients cepstraux en soit ne veut rien dire.
Sn on calcule la distance entre ces deux vecteurs:
Par exemple pour le vecteur pomme avec la voix synthétique [0 0 7.8 3.1 0] et le vecteur pomme obtenu en prononçant ce mot avec mon micro:
[1 0 1 0.5 0], on pourrait calculer \( d^{2} = (0 - 1)^{2} + (0 - 0)^{2} + (7.8 - 1)^2 + (3.1 - 0.5)^{2} + (0 - 0)^{2} = 48,79 \).
En faisant de même entre le vecteur poire initial et le vecteur pomme prononcé on aurait \( d^{2} = 27,25 \)
et donc par comparaison des distances on pourrait donc dire que le mot prononcé est donc "poire" alors que c'était "pomme" et donc qu'ici notre algorithme n'a pas marché.
Ceci serait-il plus approprié comme méthode?

Hazherty
Messages : 238
Enregistré le : lun. août 01, 2011 9:09 pm
Classe : Doctorat

Re: TIPE Coefficients cepstraux

Message par Hazherty » dim. janv. 14, 2018 11:25 am

InfinityShark a écrit :Ceci serait-il plus approprié comme méthode?
Tu ne prends en compte qu'un "point" de l'ensemble qui décrit un mot. Tu supposes que la voix synthétique qui dit "pomme" donne un vecteur représentant au mieux le mot "pomme", de même pour le mot "poire".
Puis tu récupères le vecteur d'un mot "pomme", que tu compares à ces deux valeurs.

Tu négliges l'aspect probabiliste. Tu mesures ton vecteur avec ton micro, et tu veux le classer parmi plusieurs choix. Il faut que tu considères toute la distribution de probabilités des coeff des vecteurs de chaque mot, et non un seul point donné par une voix synthétique.

D'où l'intérêt de construire des classifieurs.

mechiche
Messages : 17
Enregistré le : mar. mars 27, 2018 8:59 pm
Classe : MP

Re: TIPE Coefficients cepstraux

Message par mechiche » mer. juin 06, 2018 12:21 pm

Hazherty a écrit :
dim. janv. 14, 2018 11:25 am
InfinityShark a écrit :Ceci serait-il plus approprié comme méthode?
Tu ne prends en compte qu'un "point" de l'ensemble qui décrit un mot. Tu supposes que la voix synthétique qui dit "pomme" donne un vecteur représentant au mieux le mot "pomme", de même pour le mot "poire".
Puis tu récupères le vecteur d'un mot "pomme", que tu compares à ces deux valeurs.

Tu négliges l'aspect probabiliste. Tu mesures ton vecteur avec ton micro, et tu veux le classer parmi plusieurs choix. Il faut que tu considères toute la distribution de probabilités des coeff des vecteurs de chaque mot, et non un seul point donné par une voix synthétique.

D'où l'intérêt de construire des classifieurs.
C'est difficile à concevoir quand on y a jamais été confronté, le lien wikipedia donné plus haut ne donne pas vraiment de solutions... Pourquoi ne pas faire une moyenne de plusieurs vecteurs associés au mot "pomme" ?

jeanlyon69
Messages : 22
Enregistré le : sam. nov. 21, 2015 12:06 am
Classe : MPSI

Re: TIPE Coefficients cepstraux

Message par jeanlyon69 » jeu. juin 07, 2018 11:23 pm

Dis toi que tous les coefficients n'ont peut-être pas la même importance. Le calcul d'une distance euclidienne comme proposé plus haut n'est donc pas idéal.

mechiche
Messages : 17
Enregistré le : mar. mars 27, 2018 8:59 pm
Classe : MP

Re: TIPE Coefficients cepstraux

Message par mechiche » lun. juin 11, 2018 1:19 am

Comment faire pour pondérer les coefficients alors ? Je peux le faire empiriquement, mais pas sûr que ça marche : tester pour une dizaine de poids différents sur chaque coefficients et voir quand est-ce qu'on obtient les meilleurs résultats (10 poids * 13 coefficients * bcp de tests ... y a pas mieux comme solution ?)

mechiche
Messages : 17
Enregistré le : mar. mars 27, 2018 8:59 pm
Classe : MP

Re: TIPE Coefficients cepstraux

Message par mechiche » mar. juin 12, 2018 12:42 pm

Excusez moi de relancer, mais est-ce que quelqu'un à une idée ?

Sans parler de physique et de coefficients cepstraux, le problème est de classifier un vecteur de dimension 13. J'ai une dizaine de groupes qui a priori sont caractérisés par un vecteur que je leur donne. Lorsque je me retrouve avec un vecteur dont le groupe est inconnu, comment faire ?

Avatar du membre
bullquies
Messages : 6346
Enregistré le : mar. avr. 17, 2012 9:19 pm
Classe : Thé à la

Re: TIPE Coefficients cepstraux

Message par bullquies » mar. juin 12, 2018 1:41 pm

Bonjour,

la méthode qui me paraît la plus simple serait une SVM 1 against 1.

Je te donne un exemple de points en 2D, il suffit de remplacer "droite" par "hyperplan".

Disons que tu aies 4 classes (donc 4 mots différents), tu vas déterminer une des droites qui séparent le mieux deux classes différentes (je te laisse lire comment faire). L'équation de droite que tu obtiens te donne un ensemble de coefficients. Chacun de ses ensemble sera un classifieur.
https://fr.wikipedia.org/wiki/Machine_% ... de_support

Et tu vas faire ça pour chaque couple de deux classes distinctes. J'aurai donc 2 parmi 4 = 6 classifieurs.

ça c'est l'entraînement.

Ensuite quand tu devras classifier un mot "inconnu" qui appartient à l'une de ces classes, il suffit de demander à chacun de ces classifieurs leur avis sur ce nouveau mot (ou ce nouveau vecteur). Et ensuite bah c'est comme un vote. Par exemple le premier classifieur qui répond à la question "plutôt classe 1 ou plutôt classe 2" dira "plutôt classe 1". et ainsi de suite. Tu auras à la fin 6 votes, tu vois quelle classe obtient le plus grand score.

Après tout ça ça se teste, c'est pas une vérité absolue. Je ne garantis pas que la SVM sera la meilleure solution mais j'ai vu que c'était utilisé donc il y a de l'espoir.


Tu peux au préalable réduire la dimension du problème avec une PCA ( https://fr.wikipedia.org/wiki/Analyse_e ... rincipales ) et ne garder qu'une ou deux dimensions si le jeu de données s'y prête bien. Pour visualiser ça tu peux essayer MLdemos, c'est un peu sale comme outil mais il fonctionne à peu près http://mldemos.b4silio.com/screenshots.html

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : APotter, Laut et 1 invité