C# 在C语言中将文本转换为mp3或.wav转换为mp3(用于验证码音频)
我希望从验证码生成的数字,并有一个控制/链接,允许用户播放,如果他们需要听到它。我目前使用System.Speech将其生成wav文件。当试图找到一种允许用户播放的方法时,这是使用一个常规的a href链接打开一个运行.aspx页面的新页面并播放文件,我们在不同浏览器中遇到了各种问题 IE8和10似乎重置了会话,清除了我从验证码中获取字符串的方式,Chrome工作正常,Firefox在超时之前尝试无限加载页面 我的老板想避免使用谷歌验证码,所以我继续搜索 然后我们遇到了音频html标记。但是,由于某些原因,IE无法在音频标签中播放.wav文件,这是它的缺点 因此,我所寻求的是一种方法: 将此.wav文件转换为MP3,可在所有浏览器上播放。 一种强制IE在标签中播放.wav文件的方法。 任何关于让所有浏览器对我的.wav文件一视同仁并在触发后播放的建议。 谢谢 这是我创建.wav文件的代码C# 在C语言中将文本转换为mp3或.wav转换为mp3(用于验证码音频),c#,html,asp.net,webforms,text-to-speech,C#,Html,Asp.net,Webforms,Text To Speech,我希望从验证码生成的数字,并有一个控制/链接,允许用户播放,如果他们需要听到它。我目前使用System.Speech将其生成wav文件。当试图找到一种允许用户播放的方法时,这是使用一个常规的a href链接打开一个运行.aspx页面的新页面并播放文件,我们在不同浏览器中遇到了各种问题 IE8和10似乎重置了会话,清除了我从验证码中获取字符串的方式,Chrome工作正常,Firefox在超时之前尝试无限加载页面 我的老板想避免使用谷歌验证码,所以我继续搜索 然后我们遇到了音频html标记。但是,由
protected override void OnPreRender(EventArgs e)
{
Response.ContentType = "audio/wav";
string captchacode = Session["HologramID"].ToString();
string[] num = captchacode.Select(c => c.ToString()).ToArray();
captchacode = string.Join(" ", num);
MemoryStream mstream = GetAudio(captchacode);
mstream.Position = 0;
mstream.CopyTo(Response.OutputStream);
Response.End();
}
public static MemoryStream GetAudio(string input)
{
MemoryStream mem = new MemoryStream();
var t = new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Rate = -5;
synth.SetOutputToWaveStream(mem);
synth.Speak(input);
}));
t.Start();
t.Join();
return mem;
}
您可以使用html5音频播放器播放mp3,使用httphandler ashx播放mp3。然而,旧的浏览器不支持html5播放器。相反,您可以使用flash player解决方案
Craeta ashx处理程序,用于获取验证码文本和流式mp3数据。这不是一个解决方案,但仔细研究,它可能会让您了解为什么滚动自己的验证码是一个坏主意。