2011-12-05 17 views
0

から音声を聞くことができません。私のページのC#ファイルに 。asp.netプロジェクトのASP.NET "Text to Speech"アプリケーション

byte[] SpeakText(string text) 
     { 
      using (SpeechSynthesizer s = new SpeechSynthesizer()) 
      { 
       using (MemoryStream ms = new MemoryStream()) 
       { 
        s.SetOutputToWaveStream(ms); 
        s.Speak(text); 
        return ms.GetBuffer(); 
       } 
      } 
     } 
protected void Button1_Click(object sender, EventArgs e) 
     { 


      if (TextBox1.Text != "") 
      { 
       Response.Write(SpeakText(TextBox1.Text)); 

      } 

     } 

ただし、実行中に音声が聞こえません。

この問題を解決するにはどうすればよいですか?

+0

デバッガを実行しながら、どうなりますか? 'SpeakText()'メソッドにブレークポイントを設定しましたか? –

+2

あなたのコードでは、指定されたテキストのConverted Waveフォーマットを返すだけですが、テキストを再生する場所はどこですか? –

+1

あなたはResponse.Write(SpeakText(TextBox1.Text))を行っています。 - あなたの波出力は(HTTP)クライアントに送られます。このデータはクライアント側でどのように処理されますか? –

答えて

2

レスポンスコンテンツタイプを設定してみてください:それはエンコードされた文字を期待して

Response.ContentType = "audio/wav"; 

Response.Writeを使用しないでください。あなたは、破損したデータを避けるために、バイナリを記述する必要があります。

Response.Clear(); 
Response.ContentType = "audio/wav"; 
Response.BinaryWrite(SpeakText(TextBox1.Text)); 
Response.End(); 
+1

そして 'Response.End()'を追加して、そのサウンドにhtmlを追加するのをスキップします。 –

+0

@HansKesting、良い点。私は私の答えを更新しました。ありがとう。 –

+0

私は試しましたが、そのページの音が聞こえました。 は今私のコードは、以下である: 'バイト[] SpeakText(文字列テキスト)を用い { (SpeechSynthesizer S =新しいSpeechSynthesizer()) { 使用(のMemoryStreamのミリ秒=新規のMemoryStream()) { s.SetOutputToWaveStream(ミズ); s.Speak(テキスト); return ms.GetBuffer(); }} }」 –

0

あなたのコードではなく、クライアントマシン上で、サーバー上で実行されています。

あなたが(例えばwavファイルなど)を使用すると、クライアントにそれをダウンストリームすべき音声出力を生成したら、完全な例については、この答えを確認してください。

https://stackoverflow.com/a/1719867/559144

+0

私はasp.netのボタンのクリック機能でコンテキストに値を設定する方法のprocessRequest(のHttpContextコンテキスト) を呼び出す方法http://stackoverflow.com/a/1719867/559144 を表示しています。 –

関連する問題