我想输出一个文字转语音的wav文件,并使用HTML5的
如果不直接将字节流式传输到控件,而是先将其保存为文件,然后使用文件流将文件转换为字节并输出,则开始播放,但我不想每次都保存文件。我正在使用MVC 4。
<audio>
标签播放。文字转语音方法输出了字节,但是HTML5控件却无法播放。如果不直接将字节流式传输到控件,而是先将其保存为文件,然后使用文件流将文件转换为字节并输出,则开始播放,但我不想每次都保存文件。我正在使用MVC 4。
// 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>