Bonjour,
Je tente de développer un petit programme qui "découpe" une trame audio en fonction du nombre de silences détectés. Pour cela je détermine l'énergie du signal,puis si cette énergie est inférieure à un certain seuil, je fait passer à '1' un signal "silence" (fonction silencerecognition).
Ensuite, j'ai crée une fonction (streamcutter) qui divise ma trame audio en sous trames, de la manière suivante:
Dès qu'un silence est détecté, on arrête d'enregistrer la sous trame, on la stocke dans une cellule d'un "cell array", puis on commence l'enregistrement de la trame suivante.
Mon problème est le suivant:
Pour calculer l'énergie du signal, je fais intervenir une fonction toute faite appelée enframe, disponible dans une toolbox appelée voicebox, que j'ai trouvée sur internet. Or cette fonction fait apparaître un facteur d'échelle 10 entre l'énergie (et par conséquent la détection de signal) et le signal lui-même. Du coup, lorsque je découpe une trame, je ne parcours que 10% du signal, donc j'effectue un mauvais découpage. Or ce facteur d'échelle 10 peut être annulé (je pense) en faisant passer le paramètre inc (appelé FrameInc dans ma fonction silencerecognition) de la valeur 10 à la valeur 1. Cependant, cette opération fait passer le temps de calcul de quelques secondes à plus de 10 minutes (je n'ai même pas osé attendre)
Quelqu'un peut-il m'aider, soit en me guidant pour calculer l'énergie d'une autre façon soit en faisant une pirouette avec des index ou je ne sais quoi d'autre (je suis ouvert à toutes les solutions!!!)
Par ailleurs, afin de mieux exposer mon problème (ou pour filer des sources à ceux qui cherchent des programmes de calcul d'énergie) mes scripts matlab sont téléchargeables à l'adresse suivante:
http://www.mediafire.com/?dxb9n5u2pmt
Un grand grand merci à tous ceux qui auront le temps de se pencher sur le sujet!!
Partager