0

J'essaye de créer une page Web avec la reconnaissance de la parole en utilisant C# comme mon code derrière. S'il vous plaît aidez-moi parce que je veux savoir comment puis-je arrêter un SpeakAsync de livrer le message complet quand un autre message a commencé à parler.Comment arrêter SpeakAsync si un autre message était sur le point de s'exprimer?

pseudocode comme celui-ci

protected void Button1_Click(object sender, EventArgs e) 
    { 
     ss.SpeakAsync(CurrentStop); // it means if there is a current message it should stop before delivering the next line 
     ss.SpeakAsync("Phrase and Sentence"); 
    } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 
     ss.SpeakAsync(CurrentStop); 
     ss.SpeakAsync("Phrase is a group of words without a complete thought."); 
    } 

s'il vous plaît aidez-moi. Il est ma première fois d'utiliser C#, ainsi que System.Speech

Répondre

0

Utilisez les GetCurrentlySpokenPrompt et SpeakAsyncCancel méthodes pour annuler l'invite actuelle:

var current = ss.GetCurrentlySpokenPrompt(); 

if (current != null) 
    ss.SpeakAsyncCancel(current); 

Exemple complet

var ss = new SpeechSynthesizer(); 

ss.SpeakAsync("This is a test."); 

Thread.Sleep(300); 

var current = ss.GetCurrentlySpokenPrompt(); 

if (current != null) 
    ss.SpeakAsyncCancel(current); 

ss.SpeakAsync("Goodbye."); 
+0

bonjour ,, merci pour votre réponse, mais est-il un moyen pour moi d'utiliser 'var current = ss.GetCurrentlySpokenPrompt();' pour global? –

+0

Je ne suis pas sûr de ce que vous entendez par "pour global". –

+0

J'ai essayé de déclarer 'Courant actuel;' comme variable globale puis sur mes méthodes j'ai utilisé 'current = ss.GetCurrentlySpokenPrompt();' mais cela ne fonctionne pas. peut-être que je me trompe, que devrais-je remplacer par 'var' pour le rendre global. Je vous remercie ! –