TTS(Text To Speech)可以实现把文本转换成语音并朗读出来。Windows Xp可以使用Com组件——Microsoft Speech Object Library实现TTS,Windows 7及之后的系统可以使用.Net组件——System.Speech,使用更加方便。

最简单的实现TTS功能的办法是:

新建一个记事本文档,然后在文档里输入这样一句话——

CreateObject("SAPI.SpVoice").Speak "先定一个能达到的小目标,比方说,我先挣它一个亿!你看看能不能用几年,能挣到一个亿,你是规划五年还是三年呢?!"

然后把记事本文件的后缀格式改为.VBS,之后双击打开这个文件,就可以把文本朗读出来了。

下边这个小的demo实现把文字转换成声音并读出来,可以设置朗读速度、音量、暂停、继续播放、保存到本地音频文件的功能。运行界面:

“开始读”按钮触发事件:

 private void BeginRead(object sender, EventArgs e)
{
speechSyn.SpeakAsync(richTextBox1.Text);
}

speechSyn是之前声明的SpeechSynthesizer对象:

private  SpeechSynthesizer speechSyn;

“暂停”按钮触发事件:

private void PauseRead(object sender, EventArgs e)
{
if (button2.Text == "暂停")
{
speechSyn.Pause();
button2.Text = "继续";
}
else
{
speechSyn.Resume();
button2.Text = "暂停";
}
}

“保存为录音文件”按钮触发事件:

private void SaveToWav(object sender, MouseEventArgs e)
{
SpeechSynthesizer speechSyn = new SpeechSynthesizer();
speechSyn.Volume = trackBar2.TabIndex;
speechSyn.Rate = trackBar1.TabIndex;
speechSyn.SetOutputToWaveFile("D:\\Record.wav");
speechSyn.Speak(richTextBox1.Text);
speechSyn.SetOutputToDefaultAudioDevice();
MessageBox.Show("保存录音文件成功,保存路径:D:\\Record.wav!");
speechSyn.Dispose();
}

点击“保存为录音文件”按钮后,如果成功,会弹出提示对话框:

“语速”和“音量”两个控制条可以控制保存录音文件时音频文件的语速和音量大小。完整程序如下:

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 MS_TTS
{
public partial class Form1 : Form
{
private SpeechSynthesizer speechSyn;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) //界面初始化
{
label1.Text = "请输入你要转换为语音的文字:\n——(中英文均可):";
String str = "记者:您的成绩是58秒85!\n傅园慧:哎呀,我这么快啊!我都不知道! \n记者:您这个还是有所保留吗?\n傅园慧:那必须没有啊!我已经用了洪荒之力了!!";
richTextBox1.Text = str;
speechSyn = new SpeechSynthesizer();
}
private void BeginRead(object sender, EventArgs e) //开始朗读按钮
{
speechSyn.SpeakAsync(richTextBox1.Text);
}
private void PauseRead(object sender, EventArgs e) //暂停和继续按钮
{
if (button2.Text == "暂停")
{
speechSyn.Pause();
button2.Text = "继续";
}
else
{
speechSyn.Resume();
button2.Text = "暂停";
}
}
private void SaveToWav(object sender, MouseEventArgs e) //保存为音频文件
{
SpeechSynthesizer speechSyn = new SpeechSynthesizer();
speechSyn.Volume = trackBar2.TabIndex;
speechSyn.Rate = trackBar1.TabIndex;
speechSyn.SetOutputToWaveFile("D:\\Record.wav");
speechSyn.Speak(richTextBox1.Text);
speechSyn.SetOutputToDefaultAudioDevice();
MessageBox.Show("保存录音文件成功,保存路径:D:\\Record.wav!");
speechSyn.Dispose();
}
private void Exit(object sender, EventArgs e) //退出程序
{
speechSyn.Dispose();
Application.Exit();
}
}
}

当然别忘了在编码之前添加上“System.Speech”de引用:

C#制作文本转换为声音的demo,保存音频文件到本地的更多相关文章

  1. C#读取资源文件的两种方法及保存资源文件到本地

    方法1 GetManifestResourceStream   VB.NET中资源的名称为:项目默认命名空间.资源文件名 C#中则是:项目命名空间.资源文件所在文件夹名.资源文件名 例如:istr = ...

  2. text2pcap: 将hex转储文本转换为Wireshark可打开的pcap文件

    简介 Text2pcap是一个读取ASCII hex转储的程序,它将描述的数据写入pcap或pcapng文件.text2pcap可以读取包含多个数据包的hexdumps,并构建多个数据包的捕获文件.t ...

  3. php保存远程文件到本地的方法

    用到了ob_start();<?php header("Content-type:text/html charset=utf-8"); if(!empty($_POST['p ...

  4. docker保存日志文件到本地

    其实很简单 docker logs +你需要添加的额外参数 + 容器id >文件名称 然后查看这个文件就可以了,也可以通过ftp协议下载到本地

  5. 将txt文本转换为excel格式

    将txt文本转换为excel格式,中间使用的列分割为 tab 键 一.使用xlwt模块 注:Excel 2003 一个工作表行数限制65536,列数限制256 需要模块:xlwt 模块安装:xlwt ...

  6. ios学习-制作一个浏览图片的Demo

    一.项目要求:制作一个浏览图片的Demo,要求包含夜间模式,以及改变图片大小,能够显示不同的图片描述 二.开发步骤: 1.在storyboard上添加一个空白的View,然后添加”设置“按钮,添加im ...

  7. JSON文本转换为JSONArray 转换为 List<Object>

    package com.beijxing.TestMain; import java.io.File; import java.io.IOException; import java.util.Arr ...

  8. 利用Code128字体将文本转换为code128条形码

    利用Code128字体将文本转换为code128条形码[转]   最近在做仓储的项目,许多的打印文件都包含条形码,之前一直使用C39P24DhTt字体直接转换为39码,但是最近要求使用code128编 ...

  9. JavaScript在浏览器中把文本保存为文件的方法

    JavaScript在浏览器中把文本保存为文件的方法 经过测试第二种方法可以保存更多的文本不至于卡死 var saveTextAsFile1 = function (text, fileName, s ...

随机推荐

  1. android之软件键盘

    不弹出软件键盘 <activity android:name="PresCompleteActivity"              android:windowSoftIn ...

  2. 提高realm存储速率

    我的数据量大约有2.5M,但是完全存储到数据库差不多用了11秒,有没有比较好的方法提高存储效率 提高realm存储速率 >> android这个答案描述的挺清楚的:http://www.g ...

  3. grvphviz && dot脚本语言

    安装graphviz 可去官网下载http://www.graphviz.org/download/下载之后按步骤安装 打开编辑器,创建*.dot文件,编辑dot脚本代码,保存. D:\>dot ...

  4. 归档备份被删,GoldenGate无法抽取数据

    发生错误如下,源端EXTRACT进程异常中止,查看日志,发现如下错误. 2014-07-23 01:32:13  ERROR   OGG-00446  Oracle GoldenGate Captur ...

  5. 维生素C主要生理功能

    维C是:维生素C又叫抗坏血酸,是一种水溶性维生素. 维生素C主要生理功能 1. 促进骨胶原的生物合成.利于组织创伤口的更快愈合: 维生素C在体内参与多种反应,如参与氧化还原过程,在生物氧化和还原作用以 ...

  6. bzoj5085: 最大 暴力 二分

    Code: #include<cstdio> #include<algorithm> #include<cstring> #include<iostream& ...

  7. Win 7中开启Telnet功能

    参看以下文章: http://winsystem.ctocio.com.cn/Longhorn/472/8756972.shtml

  8. 配置TL-WVR45G企业路由动态地址

    1.打开浏览器,在地址栏输入http://192.168.1.1. 2.输入默认用户名密码:admin,登录. 3.[基本设置]->[lan设置]->[lan设置]  ip地址改成:192 ...

  9. POJ——T 2449 Remmarguts' Date

    http://poj.org/problem?id=2449 Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 30754   ...

  10. 国庆 day 6 下午

    1.数组异或 (xorarray.pas/c/cpp) (xorarray.in/out) 时间限制:2s/空间限制:256M [题目描述] xor——异或,和 and 与or 一样,是一种重要的逻辑 ...