5

<audio>テキスト読み上げのwavファイルを出力してHTML5タグで再生しようとしています。テキスト読み上げメソッドはバイトを出力していますが、html5 コントロールはそれを再生していません。

バイトをコントロールに直接ストリーミングする代わりに、最初にファイルとして保存してから、ファイルストリームでファイルをバイトに変換して出力すると、再生が開始されますが、毎回ファイルを保存する必要はありません. MVC4を使用しています。

    // in a class library
    public byte[] GenerateAudio(string randomText)
    {
        MemoryStream wavAudioStream = new MemoryStream();
        SpeechSynthesizer speechEngine = new SpeechSynthesizer();
        speechEngine.SetOutputToWaveStream(wavAudioStream);
        speechEngine.Speak(randomText);
        wavAudioStream.Flush();
        Byte[] wavBytes = wavAudioStream.GetBuffer();
        return wavBytes;
    }

    // in my controller
    public ActionResult Listen()
    {
        return new FileContentResult(c.GenerateAudio(Session["RandomText"].ToString()), "audio/wav");
    }

   // in my view
   <audio controls autoplay>
       <source src="@Url.Content("~/Captcha/Listen")" type="audio/wav" />
            Your browser does not support the <audio> element.
   </audio>
4

1 に答える 1