关于文字转语音的操作大家已经屡见不鲜,这里我们使用C#做一下简单的实现;不依赖于任何第三方程序或者API接口,
右键项目->添加引用->程序集,找到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("保存成功");
}
}