2009-11-12 6 views
0

Je l'extrait de code de code suivant dans une application ASP.NET (non Silverlight)SpeechSynthesizer - Comment lire/enregistrer le fichier wav?

string sText = "Test text"; 
SpeechSynthesizer ss = new SpeechSynthesizer(); 
MemoryStream ms = new MemoryStream(); 
ss.SetOutputToWaveStream(ms); 
ss.Speak(sText); 
//Need to send the ms Memory stream to the user for listening/downloadin 

Comment:

  1. lire ce fichier sur le navigateur

  2. Demander la utilisateur pour télécharger un fichier wav?

Quelqu'un peut-il aider à compléter le code?

EDIT: Toute aide est appréciée.

Répondre

2

Voici le bit principal d'un IHttpHandler qui fait ce que vous voulez. Branchez l'URL du gestionnaire dans une balise bgsound ou dirigez-la vers tout ce qui doit être lu dans le navigateur, puis ajoutez une vérification de chaîne de requête pour une variable "downloadFile" ou quelque chose pour ajouter conditionnellement une disposition de contenu: Pièce jointe; filename = whatever.wav en-tête si vous voulez télécharger. Aucun fichier intermédiaire n'est nécessaire (bien qu'il y ait de l'étrangeté avec la chose SetOutputToWaveStream qui échoue si elle n'est pas exécutée sur un autre thread).

public void ProcessRequest(HttpContext context) 
    { 
     MemoryStream ms = new MemoryStream(); 

     context.Response.ContentType = "application/wav"; 

     Thread t = new Thread(() => 
      { 
       SpeechSynthesizer ss = new SpeechSynthesizer(); 
       ss.SetOutputToWaveStream(ms); 
       ss.Speak("hi mom"); 
      }); 
     t.Start(); 

     t.Join(); 
     ms.Position = 0; 
     ms.WriteTo(context.Response.OutputStream); 
     context.Response.End(); 
    } 
+0

Pour 1) J'ai essayé ms.WriteTo (Context.Response.OutputStream); ms.Close(); sans chance. Est-ce que j'ai raté quelque chose? 2) Le code ne produit pas de fichier wav autant que je sache. Comment laisser l'utilisateur télécharger un fichier wav/mp3 sans avoir à l'enregistrer dans un emplacement temporaire sur le serveur? – Nick

+0

Ce processus fonctionne pour moi - génère un flux wav du texte parlé. Je ne connais pas le contexte du navigateur que vous êtes en train de faire - vous ne pouvez pas afficher le HTML dans la même réponse ou quoi que ce soit. Vous devez utiliser une balise embed et transmettre des paramètres à un gestionnaire pour générer la sortie wav ou quelque chose ... – nitzmahone

+0

Ce que j'essaie de faire est de synthétiser le texte en parole et donner à l'utilisateur la possibilité de (1) écouter sur le navigateur ou (2) télécharger le fichier. Pour (1), je comprends que j'ai besoin de la balise embed, mais ai-je besoin de sauvegarder un fichier wav temp sur lequel pointe la balise embed? Pour (2), je définis le type de contenu, mais cela ne semble pas fonctionner. Pourriez-vous s'il vous plaît poster un extrait de code? Merci! – Nick

Questions connexes