IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Compiler un code source


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut Compiler un code source
    Salut à tous le monde,

    J'ai récupéré sur Internet un code source qui permet, en théorie, de fournir les coefficients LPC qui caractérisent un locuteur. Seulement je n'arrive pas à le faire fonctionner. Donc je vous mets le code, et dites moi s'il faut des imports particuliers (autres que ceux présents), installer des bibliothèques pour l'audio, ou autre chose. Je sais que je dois importer cette classe dans une autre classe (audio) qui lit les fichiers .wav pour faire la reconnaissance du locuteur, le problème c'est comment fait appeler cette classe (LPC) ?

    Voici le lien où j'ai trouvé ce code:

    http://svn.assembla.com/svn/roots/js...speex/Lpc.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    package org.xiph.speex;
     
    /**
     * LPC- and Reflection Coefficients
     *
     * The next two functions calculate linear prediction coefficients
     * and/or the related reflection coefficients from the first P_MAX+1
     * values of the autocorrelation function.
     * 
     * Invented by N. Levinson in 1947, modified by J. Durbin in 1959.
     */
    public class Lpc
    {
      /**
       * Returns minimum mean square error
       * @param lpc - float[0...p-1] LPC coefficients
       * @param ac -  in: float[0...p] autocorrelation values
       * @param ref - out: float[0...p-1] reflection coef's
       * @param p
       */
      public static float wld(float[] lpc, float[] ac, float[] ref, int p)
      {
        int i, j;
        float r, error = ac[0];
     
        if (ac[0] == 0) 
        {
          for (i=0; i<p; i++)
            ref[i] = 0;
          return 0;
        }
     
        for (i = 0; i < p; i++) 
        {
          /* Sum up this iteration's reflection coefficient. */
          r = -ac[i + 1];
          for (j = 0; j < i; j++) r -= lpc[j] * ac[i - j];
          ref[i] = r /= error;
          /*  Update LPC coefficients and total error. */
          lpc[i] = r;
          for (j = 0; j < i/2; j++) 
          {
            float tmp  = lpc[j];
            lpc[j]     += r * lpc[i-1-j];
            lpc[i-1-j] += r * tmp;
          }
          if ((i % 2) != 0)
            lpc[j] += lpc[j] * r;
          error *= 1.0 - r * r;
        }
        return error;
      }
     
      /**
       * Compute the autocorrelation
       *         ,--,
       * ac(i) = >  x(n) * x(n-i)  for all n
       *         `--'
       * for lags between 0 and lag-1, and x == 0 outside 0...n-1
       * @param x - in: float[0...n-1] samples x
       * @param ac - out: float[0...lag-1] ac values
       * @param lag
       * @param n
       */
      public static void autocorr(float[] x, float[] ac, int lag, int n)
      {
        float d;
        int i;
        while (lag-- > 0) 
        {
          for (i=lag, d=0; i<n; i++)
            d += x[i] * x[i-lag];
          ac[lag] = d;
        }
      }
    }
    Dans la méthode: public static float wld(float[] lpc, float[] ac, float[] ref, int p) comment je peux entrer les données du tableau lpc puisque le résultat final c'est de les trouver ?

    Merci pour toute aide et suggestions.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par Sendmi Voir le message
    dites moi s'il faut des imports particuliers (autres que ceux présents), installer des bibliothèques pour l'audio, ou autre chose
    Dans le code que tu donnes, il n'y a que quelques calculs basiques sur des tableaux de float... Pourquoi voudrais-tu importer quoi que ce soit ?

    Citation Envoyé par Sendmi Voir le message
    comment fait appeler cette classe (LPC) ?
    Vu que ce ne sont que deux méthodes statiques, tu les appelles tout simplement avec Lpc.wld(arguments) ou Lpc.autocorr(arguments).

    Citation Envoyé par Sendmi Voir le message
    Dans la méthode: public static float wld(float[] lpc, float[] ac, float[] ref, int p) comment je peux entrer les données du tableau lpc puisque le résultat final c'est de les trouver ?
    Je n'ai aucune idée du calcul que sont censées effectuer ces fonctions donc je peux difficilement t'aider sur ce point...

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Citation Envoyé par Astartee Voir le message
    Dans le code que tu donnes, il n'y a que quelques calculs basiques sur des tableaux de float... Pourquoi voudrais-tu importer quoi que ce soit ?

    Pour récupérer ces coefficients il faut lire un fichier audio pour extraire ces caractéristiques de l'individu.

    Vu que ce ne sont que deux méthodes statiques, tu les appelles tout simplement avec Lpc.wld(arguments) ou Lpc.autocorr(arguments).
    Le problème c'est comment récuprérer les données audio et les faire entrer dans la deuxième méthode qui est public static void autocorr(float[] x, float[] ac, int lag, int n) ?

    Voici le code qui lit un un fichier .wav:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import java.io.File;
    import javax.sound.sampled.DataLine;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.AudioSystem;
    //import java.io.FileInputStream;
     
     
    class Audio
    {
    	public static void main(String[]a)
    	{
    		try
    		{
    			File fichier = new File("C:\\Documents and Settings\\Zolekha\\Bureau\\lazer.wav" ) ;
    			AudioInputStream AudioInput = AudioSystem.getAudioInputStream(fichier);
     
     
    			int bytesPerFrame = AudioInput.getFormat().getFrameSize();
    			int numBytes = 1024 * bytesPerFrame;
    			byte[] tableau = new byte[numBytes];
     
     
    			AudioFormat audioFormat = AudioInput.getFormat();
    			DataLine.Info Info = new DataLine.Info(SourceDataLine.class,audioFormat);
     
    			SourceDataLine line=(SourceDataLine)AudioSystem.getLine(Info);
    			line.open(audioFormat);
    			line.start();
     
    			int nb;
    			while ( (nb = AudioInput.read(tableau,0,numBytes )) != -1 )
    			{
    				line.write(tableau,0,nb);
    			}
    			for(int i=0;i<29;i++)
    			{
    				System.out.print( tableau[i]+" ");	
    			}
    		}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
    }
    Merci de m'avoir répondu.

Discussions similaires

  1. Compiler du code source java en java
    Par djmad dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 14/04/2009, 11h53
  2. Compiler le code source de weka
    Par Mchupakabra dans le forum Langage
    Réponses: 7
    Dernier message: 18/12/2008, 14h01
  3. compiler un code source
    Par kespy13 dans le forum Langage
    Réponses: 3
    Dernier message: 30/04/2008, 15h29
  4. Compilation du code source
    Par rfufu dans le forum Zend
    Réponses: 6
    Dernier message: 07/04/2006, 11h27
  5. compilation de code source
    Par lejum dans le forum Général Java
    Réponses: 11
    Dernier message: 20/03/2006, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo