设为首页收藏本站

 找回密码
 注册

QQ登录

只需一步,快速开始

BC Morning V1806 门户 IT世界 应用开发 查看内容

wav file to text conversion in visual studio 3.5 version

2014-1-27 20:16| 发布者: Test| 查看: 170| 评论: 0

摘要: I am developing an application in c# 3.5 version for speech recognition to recognize the wav file and convert the conversation into text. But I have a problem that it recognize only a few words. I nee ...
I am developing an application in c# 3.5 version for speech recognition to recognize the wav file and convert the conversation into text. But I have a problem that it recognize only a few words. I need to improve the accuracy of my application.

using System;
using System.IO;
using System.Collections.Generic;
using System.Speech;
using System.Speech.Synthesis;
using System.Speech.AudioFormat;
using System.Speech.Recognition;
using System.Speech.Recognition.SrgsGrammar;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO.IsolatedStorage;
using System.IO.Compression;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;


namespace SRtest
{
    public partial class Form1 : Form
    {
        private SpeechRecognitionEngine MySpeechRecognitionEngine = null;
     //   private SpeechSynthesizer synthesizer = null;


  //  private const string VOICE_FILE = @"C:\Comdyn\AccTestSoundFiles\Darrells audio_25595 Voice Mail from Charlotte Bobcats.wav";
  //    private const string VOICE_FILE = @"C:\Comdyn\AccTestSoundFiles\Darrells audio_141554 Voice Mail from School Principal.wav";
        public Form1()
        {
            InitializeComponent();
            MySpeechRecognitionEngine = new SpeechRecognitionEngine();
            try
            {
                //  MyForm.Invoke(Form, new Object[] {  });
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.InnerException.Message);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
          
        }

        private void InitializeSpeechRecognitionEngine(String filePath)
        {
            //MySpeechRecognitionEngine.SetInputToDefaultAudioDevice();

            MySpeechRecognitionEngine.UnloadAllGrammars();
            try
            {
                MySpeechRecognitionEngine.SetInputToWaveFile(filePath);

                
                Process.Start("C:\\Program Files\\Windows Media Player\\wmplayer.exe", ("\"" + filePath + "\""));

                MySpeechRecognitionEngine.LoadGrammar(new DictationGrammar());

                MySpeechRecognitionEngine.RecognizeAsync(RecognizeMode.Single); 

                MySpeechRecognitionEngine.AudioLevelUpdated += 
                   new EventHandler<AudioLevelUpdatedEventArgs>(MySpeechRecognitionEngine_AudioLevelUpdated);

                MySpeechRecognitionEngine.SpeechRecognized +=
                    new EventHandler<SpeechRecognizedEventArgs>(MySpeechRecognitionEnginee_SpeechRecognized);
               
                MySpeechRecognitionEngine.AudioStateChanged +=
                     new EventHandler<AudioStateChangedEventArgs>(MySpeechRecognitionEnginee_AudioStateChanged);

                MySpeechRecognitionEngine.RecognizeCompleted +=
                    new EventHandler<RecognizeCompletedEventArgs>(MySpeechRecognitionEngine_RecognizeCompleted);

               
            }
            catch (Exception ex)
            {
                label1.Text = ex.Message.ToString();
            }


        }
        
        private void MySpeechRecognitionEnginee_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            if (e.Result != null)
            {
                SpeechRecognizer recognizer = new SpeechRecognizer();
                DisplayBasicPhraseInfo(label2, e.Result, recognizer);
              
                  label1.Text = label1.Text  + e.Result.Text + " \n ";
              //  Thread.Sleep(3000);

               
            }

        }

       private void MySpeechRecognitionEngine_AudioLevelUpdated(object sender, AudioLevelUpdatedEventArgs e)
        {

            label2.Text = e.AudioLevel.ToString();
        }

        private void MySpeechRecognitionEnginee_AudioStateChanged(object sender, AudioStateChangedEventArgs e)
        {
            audioLevelValue.Text = e.AudioState.ToString();
         
        }

       private void MySpeechRecognitionEngine_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
        {
       
        }

    
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog fdlg = new OpenFileDialog();
            fdlg.Title = "C# Corner Open File Dialog";
            fdlg.InitialDirectory = @"C:\Comdyn\AccTestSoundFiles\";
            fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
            fdlg.FilterIndex = 2;
            fdlg.RestoreDirectory = true;
            if (fdlg.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = fdlg.FileName;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != string.Empty)
            {
                InitializeSpeechRecognitionEngine(textBox1.Text.ToString());
            }
            else
            {
                label1.Text = "Please select a file first";
            }
        }


        internal static void DisplayBasicPhraseInfo(Label label, RecognizedPhrase result, SpeechRecognizer recognizer)
        {
            if (result != null && label != null)
            {// Blank
                if (recognizer != null)
                { //Clear
                    label.Text += String.Format(
                            "  Recognizer currently at:   {0} mSec\n" +
                            "  Audio Device currently at: {1} mSec\n",
                            recognizer.RecognizerAudioPosition.TotalMilliseconds,
                            recognizer.AudioPosition.TotalMilliseconds);
                }

                if (result != null)
                { //Clear
                    RecognitionResult recResult = result as RecognitionResult;
                    if (recResult != null)
                    {
                        RecognizedAudio resultRecognizedAudio = recResult.Audio;
                        if (resultRecognizedAudio == null)
                        {
                            label.Text += String.Format(
                                "  Emulated input\n");
                        }
                        else
                        {
                            label.Text += String.Format(
                            "  Candidate Phrase at:       {0} mSec\n" +
                            "  Phrase Length:             {1} mSec\n" +
                            "  Input State Time:          {2}\n" +
                            "  Input Format:              {3}\n",
                            resultRecognizedAudio.AudioPosition.TotalMilliseconds,
                            resultRecognizedAudio.Duration.TotalMilliseconds,
                            resultRecognizedAudio.StartTime.ToShortTimeString(),
                            resultRecognizedAudio.Format.EncodingFormat.ToString());
                        }
                    }

                    label.Text += String.Format("  Confidence Level:          {0}\n", result.Confidence);
                    if (result.Grammar != null)
                    {
                        label.Text += String.Format(
                                          "  Recognizing Grammar:       {0}\n" +
                                          "  Recognizing Rule:          {1}\n",
                                           ((result.Grammar.Name != null) ? (result.Grammar.Name) : "None"),
                                            ((result.Grammar.RuleName != null) ? (result.Grammar.RuleName) : "None"));
                    }

                    if (result.ReplacementWordUnits.Count != 0)
                    {
                        label.Text += String.Format("  Replacement text:\n");
                        foreach (ReplacementText rep in result.ReplacementWordUnits)
                        {
                            label.Text += String.Format("      At index {0} for {1} words. Text: {2}\n",
                                rep.FirstWordIndex, rep.CountOfWords, rep.Text);
                        }
                        label.Text += String.Format("\n\n");

                    }
                }

            }
        }

       
    }
}



路过

雷人

握手

鲜花

鸡蛋

相关阅读

最新评论

手机版|BC Morning Website ( Best Deal Inc. 001 )  

GMT-8, 2025-7-8 11:17 , Processed in 0.015536 second(s), 19 queries .

Supported by Best Deal Online X3.5

© 2001-2025 Discuz! Team.

返回顶部