1、关于本文html
Antonia下载地址:http://pan.baidu.com/s/1yCoEEbash
这个程序能够将字符串读出,或是将朗读后的声音保存到WAV格式的文件中函数
测试电脑会不会说话,能够新创建一个文本文件,输入代码:测试
CreateObject("SAPI.SpVoice").Speak "你好"
命名为“你好.vbs”,双击运行,会说话的电脑会读出最后面两个引号中的字符串。spa
个人Win7里有Lili和Anna两个声音,都是女声,Lili能够朗读汉语和英语,Anna只会读英语。code
2、程序控件orm
3、程序代码htm
与朗读有关的函数被封装在类Narrator中字符串
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; //须要手动添加引用 System.Speech using System.Speech.Synthesis; namespace Antonia { public partial class FormMain : Form { public FormMain() { InitializeComponent(); } //初始化程序控件 private void FormMain_Load(object sender, EventArgs e) { //朗读文本类 Narrator nrr = new Narrator(); //初始化音量下拉框 cmbVolumn.Items.AddRange( new string[] { "50", "100", "150", "200", "250", "300" }); cmbVolumn.Text = nrr.Volumn.ToString(); //初始化音质下拉框 cmbVoice.Items.Add("#Default#"); cmbVoice.Items.AddRange(nrr.GetVoice()); cmbVoice.Text = "#Default#"; } //是否朗读后保存到文件 private void chkExportToFile_CheckedChanged(object sender, EventArgs e) { txtFilePath.ReadOnly = !chkExportToFile.Checked; } //朗读声音,或将声音保存到文件 private void btnBoom_Click(object sender, EventArgs e) { Narrator nrr = new Narrator(); //声音音量 nrr.Volumn = int.Parse(cmbVolumn.Text); //声音类型 if (cmbVoice.Text != "#Default#") { nrr.SelectVoice(cmbVoice.Text); } //声音生成 if (chkExportToFile.Checked) //将声音保存到文件 { //有同名文件先删除 if (System.IO.File.Exists(txtFilePath.Text + ".wav")) { System.IO.File.Delete(txtFilePath.Text + ".wav"); } //保存到文件 nrr.ExportToWave(txtFilePath.Text + ".wav", txtText.Text); MessageBox.Show("已被保存到" + txtFilePath.Text + ".wav"); } else //仅朗读文本 { nrr.Narrate(txtText.Text); } } } /// <summary> /// 朗读者类 /// </summary> public class Narrator { /// <summary> /// 提供对语音合成引擎访问 /// </summary> private SpeechSynthesizer syn; /// <summary> /// 音量设置 /// </summary> public int Volumn { get { return syn.Volume; } set { syn.Volume = value; } } /// <summary> /// 建立一个朗读者实例 /// </summary> public Narrator() { syn = new SpeechSynthesizer(); } /// <summary> /// 朗读一段文本 /// </summary> /// <param name="text">被朗读文本</param> public void Narrate(string text) { syn.SpeakAsync(text); } /// <summary> /// 选择配音 /// </summary> /// <param name="role"></param> public void SelectVoice(string role) { syn.SelectVoice(role); } /// <summary> /// 获取配音声音列表 /// </summary> /// <returns></returns> public string[] GetVoice() { string[] voice = new string[syn.GetInstalledVoices().Count]; for (int i = 0; i < voice.Length; i++) { voice[i] = syn.GetInstalledVoices()[i].VoiceInfo.Name; } return voice; } /// <summary> /// 生成声音并导出到文件 /// </summary> /// <param name="path">文件名地址</param> /// <param name="text">被朗读文本</param> public void ExportToWave(string path, string text) { syn.SetOutputToWaveFile(path); syn.Speak(text); syn.SetOutputToNull(); } } }
4、参考get
本程序的编写借鉴了文章《用C#实现文本朗读和语音识别功能》
END