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