C#語音朗讀

來源:互聯網
上載者:User
電腦朗讀”(英文)一個很好的觸發點,通過它可以實現電子小說閱讀、英文聽力測試、英文單詞學習...
    下面的Speech已對MSTTS作了簡單封裝。 
1.安裝好MSTTS(如果你有裝金山詞霸,系統就已經安裝了,在C:\windows\speech\下),可以在winntspeech中打到vtxtauto.tlb檔案; 沒有的話,就要裝TTS和SAPI在金山的碟上有這兩個檔案!  
   
  TTS:Microsoft   Text-To-Speech   Engine     (全文朗讀引擎)  
  SAPI:Microsoft   Speech   API                             (語音API)
2.用.Net SDK內建的tlbimp工具把vtxtauto.tlb轉換成.dll格式:
  tlbimp vtxtauto.tlb /silent /namespace:mstts /out:mstts.dll
  這時的mstts.dll已成為.net framework運行庫的一個類。
3.編寫一個封裝vtxtauto的簡單類:Speech .
//========================Speech.cs======================
using System;
using mstts;  //MSTTS名稱空間
namespace Bedlang{      //定義名稱空間
public class Speech{
  private VTxtAuto VTxtAutoEx;
  public Speech(){
   VTxtAutoEx = new VTxtAuto();  
   VTxtAutoEx.Register(" "," "); //註冊COM組件   
  }
  public void Speak(String text){
   VTxtAutoEx.Speak(text, 0);   //發音
  }
}
}
//========================Speech.cs======================
4.編譯Bedlang.Speech
  csc /target:library /out:Bedlang.dll  speech.cs /r:mstts.dll
 如果用vs.net開發,可直接產生項目就可以了。
5.發音實現
//========================demo.cs======================
分別加入Label,TextBox,Button控制項各一個到windows Form中,修改它們的屬性,原始碼如下:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Bedlang
{
 /// 
 /// Form1 的摘要說明。
 /// 
 public class demo : System.Windows.Forms.Form
 {
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.TextBox textBox1;
  private System.Windows.Forms.Button button1;
  /// 
  /// 必需的設計器變數。
  /// 
  private System.ComponentModel.Container components = null;
  public demo()
  {
   //
   // Windows 表單設計器支援所必需的
   //
   InitializeComponent();
   //
   // TODO: 在 InitializeComponent 調用後添加任何建構函式代碼
   //
  }
  /// 
  /// 清理所有正在使用的資源。
  /// 
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null) 
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }
  #region Windows Form Designer generated code
  /// 
  /// 設計器支援所需的方法 - 不要使用代碼編輯器修改
  /// 此方法的內容。
  /// 
  private void InitializeComponent()
  {
   this.label1 = new System.Windows.Forms.Label();
   this.textBox1 = new System.Windows.Forms.TextBox();
   this.button1 = new System.Windows.Forms.Button();
   this.SuspendLayout();
   // 
   // label1
   // 
   this.label1.Location = new System.Drawing.Point(24, 16);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(120, 23);
   this.label1.TabIndex = 0;
   this.label1.Text = "輸入要朗讀的文字:";
   // 
   // textBox1
   // 
   this.textBox1.Location = new System.Drawing.Point(24, 48);
   this.textBox1.Name = "textBox1";
   this.textBox1.Size = new System.Drawing.Size(248, 21);
   this.textBox1.TabIndex = 1;
   this.textBox1.Text = "";
   // 
   // button1
   // 
   this.button1.Location = new System.Drawing.Point(112, 112);
   this.button1.Name = "button1";
   this.button1.TabIndex = 2;
   this.button1.Text = "朗讀";
   this.button1.Click += new System.EventHandler(this.button1_Click);
   // 
   // demo
   // 
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(292, 197);
   this.Controls.AddRange(new System.Windows.Forms.Control[] {
                    this.button1,
                    this.textBox1,
                    this.label1});
   this.Name = "demo";
   this.Text = "demo";
   this.ResumeLayout(false);
  }
  #endregion
  /// 
  /// 應用程式的主進入點。
  /// 
  [STAThread]
  static void Main() 
  {
   Application.Run(new demo());
  }
  private void button1_Click(object sender, System.EventArgs e)
  {
   Speech s=new Speech();  //建立一個Speech對象
   if(textBox1.Text.Length==0)
    s.Speak("Please input letter."); //發音
   else
    s.Speak(textBox1.Text);
  }
 }
}
//========================demo.cs======================
6.編譯demo.cs
  csc demo.cs /r:bedlang.dll
 Vs.net環境下可直接編譯成exe檔案。
7.運行demo.exe
  輸入要要朗讀的文字,程式就可朗讀了啦.
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.