声音转换成文字

来源:互联网 发布:南宁java招聘亿阳信通 编辑:程序博客网 时间:2024/04/29 16:14

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SpeechLib;

namespace tryreco
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

            SpRecognition cc = new SpRecognition();
           
            cc.MessageBegin();
           
            cc.BeginRec(textBox1);  //Fan:把内容输入textbox1
           
            
        }
        private void button2_Click(object sender, EventArgs e)
        {
            SpRecognition cc = new SpRecognition();
            cc.MessageEnd();
            cc.CloseRec();

        }

        public class SpRecognition
        {
            private static SpRecognition _Instance = null;
            private SpeechLib.ISpeechRecoGrammar isrg;
            private SpeechLib.SpSharedRecoContextClass ssrContex = null;
            private System.Windows.Forms.Control cDisplay;  //fan:用来显示语音转化后的文本
            public System.Windows.Forms.TextBox textbox;   //fan:增加textbox在SpRecognition 类
            public SpRecognition()
            {
                ssrContex = new SpSharedRecoContextClass();
                isrg = ssrContex.CreateGrammar(1);
                SpeechLib._ISpeechRecoContextEvents_RecognitionEventHandler recHandle =
                new _ISpeechRecoContextEvents_RecognitionEventHandler(ContexRecognition);
                ssrContex.Recognition += recHandle;
            }
            public void BeginRec(Control tbResult)
            {
                isrg.DictationSetState(SpeechRuleState.SGDSActive);
                cDisplay = tbResult;
                //cDisplay.Text = "dddddddddd";  测试,可以成功在textbox1那里显示出来
              
            }
            public static SpRecognition instance()
            {
                if (_Instance == null)
                    _Instance = new SpRecognition();
                return _Instance;
            }
            public void CloseRec()
            {
                isrg.DictationSetState(SpeechRuleState.SGDSInactive);
            }
            private void ContexRecognition(int iIndex, object obj, SpeechLib.SpeechRecognitionType type, SpeechLib.ISpeechRecoResult result)
            {
                cDisplay.Text += result.PhraseInfo.GetText(0, -1, true);
            }
            public void MessageBegin()
            {
               textbox =new TextBox() ;
               textbox.Text = "Notice :this time ,it Begin recoginse";
               MessageBox.Show(textbox.Text);
           
            }
            public void MessageEnd()
            {
                textbox = new TextBox();
                textbox.Text = "Notice :this time ,it End recoginse";
                MessageBox.Show(textbox.Text);
            }

        }
       
     }

    }