不依赖于第三方程序,使用.net自带的System.Speech实现,添加引用至项目即可
实现功能:
将文字转为语音,实现播放、暂停、继续、停止;以及音量和语速调整等功能,并且支持将音频保存到本地
开发环境:
开发工具: Visual Studio 2013
.NET Framework版本:4.5
实现代码:
SpeechSynthesizer speech;
private void btnPlay_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text))
{
MessageBox.Show("内容不可为空");
return;
}
if (btnPlay.Text == "播放")
{
speech = new SpeechSynthesizer();
speech.Rate = trackSpeed.Value;
speech.Volume = trackVolume.Value;
speech.SpeakCompleted += (s, e1) =>
{
btnPlay.Text = "播放";
btnPause.Enabled = false;
};
speech.SpeakAsync(textBox1.Text);
btnPause.Enabled = true;
btnPlay.Text = "停止";
}
else
{
speech.SpeakAsyncCancelAll();
btnPlay.Text = "播放";
btnPause.Enabled = false;
}
}
private void btnPause_Click(object sender, EventArgs e)
{
if (btnPause.Text == "暂停")
{
speech.Pause();
btnPause.Text = "继续";
}
else
{
speech.Resume();
btnPause.Text = "暂停";
}
}
private void btnSave_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text))
{
MessageBox.Show("内容不可为空");
return;
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "mp3文件|*.mp3|wav文件|*.wav";
if (sfd.ShowDialog() == DialogResult.OK)
{
speech = new SpeechSynthesizer();
speech.Rate = trackSpeed.Value;
speech.Volume = trackVolume.Value;
speech.SetOutputToWaveFile(sfd.FileName);
speech.Speak(textBox1.Text);
speech.SetOutputToNull();
MessageBox.Show("保存成功");
}
}
实现效果:
由简入繁,拿来即用
更多精彩,请关注微信公众号: