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

C# Discussion :

speech recognition / synthesizer


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Par défaut speech recognition / synthesizer
    Bonjour,

    J'aurais souhaité synthétiser un texte pour ensuite le réutiliser en reconnaissance vocale. Je synthétise le texte dans un memorystream et choisi le memorystream comme input pour le moteur de reconnaissance vocale.
    Je souhaiterai afficher le résultat de la reconnaissance.

    example : le mot czezko est chargé dans la grammaire

    ==> " hello my name is czezko " devrait lancer un évènement contenant "czezko"

    voici mon code, qui évidement ne fonctionne pas :

    Auriez-vous une idée? Un grand merci d'avance.

    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
     
     
            private void button1_Click(object sender, EventArgs e)
            {
     
                SpeechSynthesizer sp = new SpeechSynthesizer();
                Stream audiostream = new MemoryStream();
                sp.SetOutputToAudioStream(audiostream, new SpeechAudioFormatInfo(44100,AudioBitsPerSample.Sixteen,AudioChannel.Stereo));
                SpeechRecognitionEngine spr = new SpeechRecognitionEngine();
                spr.SetInputToAudioStream(audiostream, new SpeechAudioFormatInfo(44100, AudioBitsPerSample.Sixteen, AudioChannel.Stereo));
                Choices firstname = new Choices("czezko", "hello", "goodbye");
                GrammarBuilder f = new GrammarBuilder(firstname);
                Grammar g = new Grammar(f);
                spr.LoadGrammar(g);
                spr.Recognize();
     
                sp.Speak("hello my name is czezko");
     
                spr.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(spr_SpeechRecognized);
            }
     
            static void spr_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
            {
                MessageBox.Show(e.Result.Text);
            }

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Peut etre que ton Speak vide le buffer, j'imagine qu'il le rempli, puis le vide vers la carte son, tu coup le reco n'a pas le temps de le lire.
    de plus tu fais un Speak avant de t'abonner à SpeechRecognized.

    inverse les lignes 17 et 19, et si ca ne marche toujours pas, regarde apres le speak quel est l'état du buffer, la position du curseur.

    qu'as tu installé pour avoir la synthese vocale (je parle de la voix, et non du moteur de synthese vocale déjà installé)?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Par défaut
    Bonjour,

    Merci pour votre réponse. J'ai inversé les lignes 17 et 19 mais toujours rien.
    Je n'ai rien installé en particulier, j'utilise system.speech du .net 4.0.

    La reconnaissance seule fonctionne avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SpeechRecognitionEngine spr = new SpeechRecognitionEngine();
    spr.SetInputToDefaultAudioDevice();
    spr.RecognizeAsync(RecognizeMode.Multiple);
    La synthèse vocale seule fonctionne avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SpeechSynthesizer sp = new SpeechSynthesizer();
    sp.SetOutputToDefaultAudioDevice();
    sp.speak("hello");
    Le buffer n'est pas vidé après le speak.

    si j'écris le stream dans un fichier et ensuite le relis ça semble fonctionner, c'est le "real-time" qui ne fonctionne pas.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Par défaut
    voilà qui fonctionne mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    audiostream.Seek(0, SeekOrigin.Begin);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Bing Speech recognition
    Par yapy00333 dans le forum WinRT
    Réponses: 1
    Dernier message: 06/01/2015, 10h41
  2. Réponses: 0
    Dernier message: 06/05/2011, 14h37
  3. Réponses: 0
    Dernier message: 23/02/2011, 23h22
  4. Expérience du namespace System.Speech.Recognition
    Par PerpetualSnow dans le forum Framework .NET
    Réponses: 0
    Dernier message: 26/08/2009, 12h42
  5. speech recognition exemple
    Par alpidor dans le forum C++
    Réponses: 3
    Dernier message: 25/09/2007, 14h02

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