c#实现语音阅读以及文本转语音文件是基于c#的一个类库(SpeechSynthesizer )实现的,使用该类必须要添加引用using System.Speech.Synthesis;直接是无法添加引用的,先对项目进行添加应用

示例图

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Speech.Synthesis;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace 文本转语音Demo
{
public partial class Form1 : Form
{
private SpeechSynthesizer speech;

/// <summary>
/// 音量
/// </summary>
private int value=100;
/// <summary>
/// 语速
/// </summary>
private int rate;
public Form1()
{
InitializeComponent();

comboBox1.SelectedIndex = 10;
}

private void button1_Click(object sender, EventArgs e)
{

string text=textBox1.Text;

if (text.Trim().Length == 0) {
MessageBox.Show("不能阅读空内容!","错误提示");
return;
}

if (button1.Text == "语音试听") {

speech = new SpeechSynthesizer();

new Thread(Speak).Start();

button1.Text = "停止试听";

}else if(button1.Text=="停止试听"){

speech.SpeakAsyncCancelAll();//停止阅读

button1.Text = "语音试听";
}
}

private void Speak() {

speech.Rate =rate;
speech.SelectVoice("Microsoft Lili");//设置播音员(中文)
//speech.SelectVoice("Microsoft Anna"); //英文
speech.Volume = value;
speech.SpeakAsync(textBox1.Text);//语音阅读方法
speech.SpeakCompleted += speech_SpeakCompleted;//绑定事件
}

/// <summary>
/// 语音阅读完成触发此事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void speech_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
{
button1.Text = "语音试听";
}

/// <summary>
/// 拖动进度条事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void trackBar1_Scroll(object sender, EventArgs e)
{
//因为trackBar1的值为(0-10)之间而音量值为(0-100)所以要乘10;
value = trackBar1.Value * 10;
}

private void button2_Click(object sender, EventArgs e)
{

string text = textBox1.Text;

if (text.Trim().Length == 0)
{
MessageBox.Show("空内容无法生成!", "错误提示");
return;
}

this.SaveFile(text);

}

/// <summary>
/// 生成语音文件的方法
/// </summary>
/// <param name="text"></param>
private void SaveFile(string text) {
speech = new SpeechSynthesizer();
var dialog = new SaveFileDialog();
dialog.Filter = "*.wav|*.wav|*.mp3|*.mp3";
dialog.ShowDialog();

string path = dialog.FileName;
if (path.Trim().Length == 0)
{
return;
}
speech.SetOutputToWaveFile(path);
speech.Volume = value;
speech.Rate = rate;
speech.Speak(text);
speech.SetOutputToNull();
MessageBox.Show("生成成功!在" + path + "路径中!", "提示");

}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
rate = Int32.Parse(comboBox1.Text);
}

private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.ReadlocalFile();

}

/// <summary>
/// 读取本地文本文件的方法
/// </summary>
private void ReadlocalFile() {
var open = new OpenFileDialog();

open.ShowDialog();

//得到文件路径
string path = open.FileName;

if (path.Trim().Length == 0)
{

return;
}

var os = new StreamReader(path, Encoding.UTF8);
string str = os.ReadToEnd();
textBox1.Text = str;
}
private void 清空内容ToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Text = "";
}

}
}

程序运行效果截图

c#文本转语音以及语音阅读小实例的更多相关文章

  1. 用Python教你微信防撤回(文本、图片、语音、视频、名片等...)

    大家在使用微信过程中,有时候消息还没看到,就被撤回了.毕竟好奇心大家都有,明知到消息被撤回了,就更想去看一下是什么内容心里想着万一是女神给我表白了呢.. 今天就用Python来做个微信防撤回的小功能. ...

  2. web 语音播报 & 网页阅读器

    web 语音播报 & 网页阅读器 Chrome auto speech & voice speaking http://3.141592653589793238462643383279 ...

  3. UI进阶 科大讯飞(1) 语音听写(语音转换成文字)

    一.科大讯飞开放平台: http://www.xfyun.cn/ 注册.登录之后创建新应用. 因为本项目只实现了语音听写,所以在SDK下载中心勾选语音听写单项SDK就可以了 开发平台选择iOS,应用选 ...

  4. Android讯飞语音云语音听写学习

    讯飞语音云语音听写学习         这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google" ...

  5. Django 小实例S1 简易学生选课管理系统 4 实现登录页面

    Django 小实例S1 简易学生选课管理系统 第4节--实现登录页面 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...

  6. winform 异步读取数据 小实例

    这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...

  7. --@angularJS--综合小实例1

    <!DOCTYPE HTML><html ng-app="myapp"><head> <title>综合小实例</title& ...

  8. JavaScript小实例:拖拽应用(二)

    经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...

  9. 从一个简单的小实例分析JSP+Servelt与JSP+Struts2框架的区别

    最近在学struts2,struts2相比以前的JSP+Servlet,在处理流程上的更简单,我们就一个小实例来具体分析一下. 实例内容如下: 实现一个简单的注册页面包括:用户名.密码.重复密码.年龄 ...

随机推荐

  1. 基于log4net的帮助类Log

    using log4net; using System; using System.Collections.Generic; using System.Diagnostics; using Syste ...

  2. PEAR安装

    看到PEAR章节,提到安装PEAR需要go-pear.bat,我机器上的PHP(v7.0.8)目录下,并没有go-pear.bat这个文件,网上查了一遍,怎么说的都有,最后还是在官网上找到解决方案. ...

  3. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  4. Linux 搭建Java web服务器

    未经允许,不得转载 1.jdk的下载与配置 1.1下载 sudo wget http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45- ...

  5. 创建cocos项目并打包

  6. .net学习笔记----HttpRequest,WebRequest,HttpWebRequest区别

    WebRequest是一个虚类/基类,HttpWebRequest是WebRequest的具体实现 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所 ...

  7. 阿里云服务器上开启linux远程桌面连接

    一.说明: 本文的目的是实现在windows机器上利用远程桌面连接来访问远程的linux桌面. 这里使用的是阿里云服务器,操作系统为Centos6.5. 二.基本步骤: 1.首先保证服务器已经安装完毕 ...

  8. Denormalization 2

    In a relational database, denormalization is an approach to speeding up read performance (data retri ...

  9. 使用简介<EntityFramework6.0>

    序言 在这一篇中,我们将演示EnitityFramework基本的建模[建模也是EntityFramework最核心的特性]范例,例如实体的分离和继承等.我们开始了演示如何创建一个简单的概念模型的例子 ...

  10. Oracle的tnsnames.ora配置(PLSQL Developer)

    首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...