C# 可以通过引用.net framework 框架下的语音播放来实现自己的语音播放。
先来看看简单的效果示例:
上图的主要控件是: TextBox,button .
当我们点击语音朗读按钮,程序将自动朗读(女生朗读)文本框内的内容。
笔者开发平台:Vs2013. 开发语言:C#
下面附上关键源码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis; ///------一定要加上这个命名空间
namespace Volum
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
///---声明 语音朗读对象
SpeechSynthesizer sps = new SpeechSynthesizer();
///---关闭对话框事件,即 退出按钮事件
private void exitBtn_Click(object sender, EventArgs e)
{
///---释放 SpeechSynthesizer 对象占有的资源
sps.Dispose();
///----退出,关闭对话框
Application.Exit();
}
///---语音朗读按钮事件
private void voiceBtn_Click(object sender, EventArgs e)
{
if (text_Box.Text != "")
{
///---设置语音播放的音量
sps.Volume = 20;
///--设置语音播放速率
sps.Rate = 4;
///---SpeechSynthesizer 获取 text_Box内的文字并进行朗读。
sps.SpeakAsync(text_Box.Text);
}
}
}
}
1, 在解决方案资源管理器面板上找到 引用 , 并 右键点击 “引用”, 选中 “添加引用(R)..”
2, 在弹出的对话框中 ,按照下步骤图操作:
3, 在完成上面的步骤后,记得 添加 命名 空间。
using System.Speech.Synthesis;
添加引用告一段落。
再对上面代码的注释做补充。
SpeechSynthesizer将提供对 本地计算机上已经安装的语音合成引擎的访问。
///---SpeechSynthesizer 获取 text_Box内的文字并进行朗读。
sps.SpeakAsync(text_Box.Text);
上面的这行代码,该对象将会创建子线程进行对文本框内的内容进行朗读,以至于界面不会被锁死。
SpeechSynthesizer 的对象的 朗读还可 以 写成这样:
sps.Speak(text_Box.Text);
但是, Speak 会使得当前界面处于锁死状态,不利于人机交互。
///--设置语音播放速率
sps.Rate = 4;
这里是设置语音播放的速率,这里,Rate的取值范围是: -10 ~ + 10
///---设置语音播放的音量
sps.Volume = 20;
设置语音播放的音量。这里的取值范围为: 0 ~100
///---释放 SpeechSynthesizer 对象占有的资源
sps.Dispose();
当然, 在退出的时候,别忘了释放线程所占有的资源。
控件的属性设置, 这里就不做介绍了。
这里是源码的下载地址:
http://url.cn/awovu7
// ============ 更新 ===================== //
已经好久没有接触过C# 了
针对 下面这位博友的疑问。我重新下关于朗读文件,特别是保存前后。
平台:VS2013(旗舰版)
语言:C#
更新内容:保存前后的语音朗读
效果图:
/ ============= 注意 ============ /
记得添加引用(和上面的添加方式是一样的)
在该网页上,查找关键词语的快捷方法是:Ctrl+F,输入查找内容。 即可快速找到你想要查找的内容。
源码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;
using System.IO;
namespace testVolum
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private SpeechSynthesizer sps = new SpeechSynthesizer();
private string m_Str = "IOS安全攻防系列丛书,看完本书,你可以对IOS安全不及格的分数提升到80分";
private void Form1_Load(object sender, EventArgs e)
{
/// 设置要保存和朗读的信息
m_textBox.Text = m_Str;
}
///
/// 保存按钮被单机事件
///
///
///
private void saveBtn_Click(object sender, EventArgs e)
{
/// 检查文本框中的内容是否为空,不为空,就保存
if (string.Empty != m_textBox.Text)
{
/// 保存文件
saveFileFunc();
/// 禁用
saveBtn.Enabled = false;
}
else
{
MessageBox.Show("注意:保存的数据不能为空");
}
}
private void saveFileFunc()
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "(*.txt)|*.txt|(*.*)|*.*";
sfd.AddExtension = true;
sfd.RestoreDirectory = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
/// textBox2.Text = sfd.FileName;
FileStream fs = new FileStream(sfd.FileName, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
try
{
sw.Write(m_textBox.Text);
sw.Flush();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
sw.Close();
fs.Close();
}
}
}
private void m_textBox_TextChanged(object sender, EventArgs e)
{
if (m_Str != m_textBox.Text)
{
m_Str = m_textBox.Text;
/// 保存按钮启用
saveBtn.Enabled = true;
}
}
///
/// 语音朗读
///
///
///
private void readBtn_Click(object sender, EventArgs e)
{
if (string.Empty == m_textBox.Text)
{
MessageBox.Show("朗读内容不能为空");
return;
}
readTextBoxContent();
}
private void readTextBoxContent()
{
sps.Volume = 20;
sps.Rate = 4;
sps.SpeakAsync(m_textBox.Text);
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
/// 释放加载的资源
sps.Dispose();
}
///
/// 打开按钮的被单击事件
///
///
///
private void openBtn_Click(object sender, EventArgs e)
{
/// 清空
m_textBox.Text = "";
/// 打开文件
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "(*.txt)|*.txt|(*.*)|*.*";
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == DialogResult.OK)
{
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
try
{
ofd.OpenFile(); //打开文件
string line = sr.ReadLine(); //读取文本行
while (line != null)
{
m_textBox.Text += line + "\n"; //换行后继续读取直至line==null
line = sr.ReadLine();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
sr.Close();
fs.Close();
}
}
}
}
}
http://pan.baidu.com/s/1geqnOZ5
====== 若无法下载,请及时留言。 =========