文本转语音






4.76/5 (30投票s)
如何在我们的项目中实现语音技术。
引言
在 C# 中实现文本转语音变得非常容易。我们知道语音技术对盲人非常有用。现在,我们将学习如何在我们的项目中实现语音技术。

步骤
- 从“**开始 | 所有程序 | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010**”打开 Microsoft Visual Studio 2010。
- 在 Microsoft Visual Studio 启动页上,单击“**新建项目**”图标。
- 在 Microsoft Visual Studio 启动页上,单击“新建项目”图标。
- 在 C# 项目模板列表中,选择“**Windows | Windows 应用程序**”。
- 在“名称”字段中,输入名称“**text to speak**”(文本转语音)。
- 在右上角,**确保已选择 .NET Framework 的 4.0 版本**。
- 接受默认位置和解决方案名称。单击“确定”按钮。解决方案将被创建。
- 右键单击“文本转语音”项目节点,然后选择“**添加引用**”。
- 在“添加引用”对话框的“.NET”选项卡下,选择“**System.Speech**”。
- 单击“确定”按钮。
选择文本文件
选择一个文本文件以转换为音频,选定的文本文件将显示在富文本框中。
private void Browse_Click(object sender, EventArgs e)
{
OpenFileDialog Ofg = new OpenFileDialog();
try
{
Ofg.CheckFileExists = true;
Ofg.CheckPathExists = true;
Ofg.DefaultExt = "txt";
Ofg.DereferenceLinks = true;
Ofg.Filter = "Text files (*.txt)|*.txt|" +
"RTF files (*.rtf)|*.rtf|" +
" +
Works 6 and 7 (*.wps)|*.wps|" +
"Windows Write (*.wri)|*.wri|" +
"WordPerfect document (*.wpd)|*.wpd";
Ofg.Multiselect = false;
Ofg.RestoreDirectory = true;
Ofg.ShowHelp = true;
Ofg.ShowReadOnly = false;
Ofg.Title = "Select a file ";
OpenFile.ValidateNames = true;
if (OpenFile.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(ofg.OpenFile());
richTextBox1.Text = sr.ReadToEnd();
}
}
catch
{
MessageBox.Show("can not open the file", "Text two speech");
}
}
这里,首先为 OpenFileDialog
创建对象实例,使用 stream
读取器读取文本文件。
文本转语音
SpeakAsync
方法用于朗读一个词。这里使用了两个属性:一个是 volume
(音量),另一个是 Rate
(语速)。voice
(声音)性别也是一个属性。它用于选择 voice
性别(enum NotSet
(未设置),Male
(男),Female
(女),Neutral
(中性))。如果发生任何错误,消息框将显示错误消息。
private void speak_Click(object sender, EventArgs e)
{
SpeechSynthesizer speak = new SpeechSynthesizer();
try
{
switch (comboBox1.SelectedItem.ToString())
{
case "NotSet":
voice.SelectVoiceByHints(VoiceGender.NotSet);
break;
case "Male":
voice.SelectVoiceByHints(VoiceGender.Male);
break;
case "Female":
voice.SelectVoiceByHints(VoiceGender.Female);
break;
case "Neturl":
voice.SelectVoiceByHints(VoiceGender.Neutral);
break;
}
上面的代码可以更改 voice
性别。speakAsyn
是一个异步方法。这意味着它会立即返回,并将语音作为后台进程进行处理。如果发生任何错误,它将在消息框中显示。
voice.Volume = trackBar1.Value;
voice.Rate = trackBar2.Value;
voice.SpeakAsync(richTextBox1.Text);
保存音频文件
将文本转换为音频流 .audio
流可以保存为 wav 文件格式。以下步骤用于保存 wav 文件。
- 为“保存文件”对话框创建对象实例。
- 将音频流设置为选择文件。
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = ""wav files (*.wav)|*.wav";
sfd.Title = "Save to a wave file";
sfd.FilterIndex = 2;
sfd.RestoreDirectory = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
FileStream fs = new FileStream(sfd.FileName,FileMode.Create,FileAccess.Write);
voice.SetOutputToWaveStream(fs);
voice.Speak(richTextBox1.Text);
fs.Close();
}
关注点
如果您想了解更多关于语音技术的信息,请单击 Microsoft 网站上的 此链接。
历史
- 2011 年 4 月 14 日:初始版本