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.