“電腦朗讀”(英文)一個(gè)很好的觸發(fā)點(diǎn),通過(guò)它可以實(shí)現(xiàn)電子小說(shuō)閱讀、英文聽(tīng)力測(cè)試、英文單詞學(xué)習(xí)...
下面的Speech已對(duì)MSTTS作了簡(jiǎn)單封裝。
1.安裝好MSTTS(如果你有裝金山詞霸,系統(tǒng)就已經(jīng)安裝了),可以在winnt/speech中打到vtxtauto.tlb文件;
2.用.Net SDK自帶的tlbimp工具把vtxtauto.tlb轉(zhuǎn)換成.dll格式:
tlbimp vtxtauto.tlb /silent /namespace:mstts /out:mstts.dll
這時(shí)的mstts.dll已成為.net framework運(yùn)行庫(kù)的一個(gè)類(lèi)。
3.編寫(xiě)一個(gè)封裝vtxtauto的簡(jiǎn)單類(lèi):Speech .
//========================Speech.cs======================
using System;
using mstts; //MSTTS名稱(chēng)空間
namespace Bedlang{ //定義名稱(chēng)空間
public class Speech{
private VTxtAuto VTxtAutoEx;
public Speech(){
VTxtAutoEx = new VTxtAuto();
VTxtAutoEx.Register(" "," "); //注冊(cè)COM組件
}
public void Speak(String text){
VTxtAutoEx.Speak(text, 0); //發(fā)音
}
}
}
//========================Speech.cs======================
4.編譯Bedlang.Speech
csc /target:library /out:Bedlang.dll speech.cs /r:mstts.dll
如果用vs.net開(kāi)發(fā),可直接生成項(xiàng)目就可以了。
5.發(fā)音實(shí)現(xiàn)
//========================demo.cs======================
分別加入Label,TextBox,Button控件各一個(gè)到windows Form中,修改它們的屬性,源代碼如下:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Bedlang
{
///
/// Form1 的摘要說(shuō)明。
///
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;
///
/// 必需的設(shè)計(jì)器變量。
///
private System.ComponentModel.Container components = null;
public demo()
{
//
// Windows 窗體設(shè)計(jì)器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 調(diào)用后添加任何構(gòu)造函數(shù)代碼
//
}
///
/// 清理所有正在使用的資源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內(nèi)容。
///
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
///
/// 應(yīng)用程序的主入口點(diǎn)。
///
[STAThread]
static void Main()
{
Application.Run(new demo());
}
private void button1_Click(object sender, System.EventArgs e)
{
Speech s=new Speech(); //創(chuàng)建一個(gè)Speech對(duì)象
if(textBox1.Text.Length==0)
s.Speak("Please input letter."); //發(fā)音
else
s.Speak(textBox1.Text);
}
}
}
//========================demo.cs======================
6.編譯demo.cs
csc demo.cs /r:bedlang.dll
Vs.net環(huán)境下可直接編譯成exe文件。
7.運(yùn)行demo.exe
輸入要要朗讀的文字,程序就可朗讀了啦.
——本文并非原創(chuàng),如有侵權(quán)請(qǐng)聯(lián)系管理員刪除。