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. PHP基础

    $a=10; //$b="hello";//$a=(string)$a; 强制转换A的类型为字符串 //settype($a,"string");//var_d ...

  2. jQuery插件开发代码

    方法和原理在这篇博文中非常详细易懂 http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 下面整理下基本知识点和基本的代码段: jQue ...

  3. 人工智能 启发式算法(A,A*)

    启发式算法区别于盲目搜索算法,是搜索策略的一种.主要特点是 可以利用问题自身的一些特征信息(启发式信息)来指导搜索的过程,从而可以缩小搜索范围,提高搜索效率. 实际上,启发式算法也代表了"大 ...

  4. Java注解基础概念总结

    注解的概念 注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations.注解与类.接口.枚举在同一个层次 ...

  5. 使用getParts()上传多个文件

    <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv=&quo ...

  6. MFC序列化与反序列化

    #pragma once #include "afx.h" #include <vector> using std::vector; class HzyData : p ...

  7. JavaScript 操作 Cookie

    转自作者:聂微东出处:http://www.cnblogs.com/Darren_code/      什么是 Cookie “cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器 ...

  8. django一些操作命令

    1.数据库与class类同步命令 syncdb command is deprecated in django 1.7. Use the python manage.py migrate instea ...

  9. 创建Hello World程序(part-2)

    空有洪荒之力,却没用在聊妹上,今晚接着写博客... 如下图,点击左侧导航栏中的Program.cs 文件,隔一会儿会弹出一个窗口,提示是否需要添加用于编译和调试相关的东西,点Yes就行了 如下图,左侧 ...

  10. SQLServer

    # 将检索到的数据插入到一张新表 SELECT * INTO <NEW_TABLE_NAME> FROM <OLD_TABLE_NAME>