国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

用C#實現語音朗讀技術

2023-05-14 16:26:30
字體:
來源:轉載
供稿:網友

本文使用MSTTS實現了語音朗讀功能,非常實用,你編寫完就可以用它來幫助你朗讀引文資料啦。只要進行下面的幾個步驟就可以了。

1.安裝MSTTS   如果你有裝金山詞霸,系統就已經安裝了,可以在winnt/speech中打到vtxtauto.tlb文件;

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.發音實現 

分別加入Label,TextBox,Button控件各一個到windows Form中,修改它們的屬性,源代碼如下:

//========================demo.cs======================

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

也可以在在Visual Studio.net集成開發環境中直接編譯。

7.運行demo.exe

輸入要要朗讀的文字,看看是否能正確讀出來。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉川市| 鲁山县| 邵阳市| 会泽县| 且末县| 海原县| 蒙自县| 禄丰县| 淮北市| 河西区| 酉阳| 政和县| 寿阳县| 当阳市| 定日县| 高淳县| 尚志市| 榆树市| 婺源县| 分宜县| 兰坪| 集安市| 黄骅市| 儋州市| 项城市| 苏州市| 江达县| 镇雄县| 青河县| 新闻| 通海县| 八宿县| 苗栗市| 辽阳市| 锡林浩特市| 高青县| 昌吉市| 玛纳斯县| 广南县| 贵州省| 德江县|