如何将语音(.wav文件)转换为文本文件? [英] How to convert speech (.wav file) to text file?
本文介绍了如何将语音(.wav文件)转换为文本文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何将语音(录制的.wav文件)转换为文本文件。我编写了C#代码,如下所示。请检查并告诉我一切是否正确。我运行了这段代码而且收到了错误。
使用System;
使用System.IO;
使用System.Collections.Generic;使用System.ComponentModel
;
使用System.Data;使用System.Drawing
;
使用System.Linq;
使用System.Text;
使用System.Windows.Forms;使用System.Speech.Recognition
;
使用System.Speech.AudioFormat;
namespace reco
{
公共部分类Form1:表格
{
private SpeechRecognitionEngine recognitionEngine;
public Form1()
{
InitializeComponent();
try
{
recognitionEngine = new SpeechRecognitionEngine();
DictationGrammar dg = new DictationGrammar();
recognitionEngine.LoadGrammar(dg);
recognitionEngine.SetInputToDefaultAudioDevice();
recognitionEngine.SetInputToWaveFile(@C:\ Users \ Deep\Music \New folder \mp3.wav);
recognitionEngine.EndSilenceTimeout = new TimeSpan(0,0,2);
recognitionEngine.Recognize();
recognitionEngine.RecognizeAsync();
recognitionEngine.SpeechHypothesized + = new EventHandler< speechhypothesizedeventargs>(reco_SpeechHypothesized);
recognitionEngine.SpeechRecognized + = new EventHandler< speechrecognizedeventargs>(reco_SpeechRecognized);
recognitionEngine.RecognizeCompleted + = new EventHandler< recognitioncompletedeventargs>(reco_RecognizeCompleted);
recognitionEngine.AudioSignalProblemOccurred + = new EventHandler< audiosignalproblemoccurredeventargs>(reco_AudioSignalProblemOccurred);
recognitionEngine.SpeechDetected + = new EventHandler< speechdetectedeventargs>(reco_SpeechDetected);
recognitionEngine.SpeechRecognitionRejected + = new EventHandler< speechrecognitionrejectedeventargs>(reco_SpeechRecognitionRejected);
recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
}
catch(例外e)
{
MessageBox.Show(错误+ e);
}
}
private void Form1_Load(object sender,EventArgs e)
{
}
void reco_AudioSignalProblemOccurred(object sender,AudioSignalProblemOccurredEventArgs e )
{
richTextBox1.AppendText(e.AudioSignalProblem.ToString());
}
void reco_SpeechHypothesized(object sender,SpeechHypothesizedEventArgs e)
{
richTextBox1.AppendText(e.Result.Text);
}
void reco_SpeechRecognitionRejected(object sender,SpeechRecognitionRejectedEventArgs e)
{
richTextBox1.AppendText(Rejected!);
}
void reco_RecognizeCompleted(object sender,RecognizeCompletedEventArgs e)
{
richTextBox1.AppendText(Recognition Complete!);
}
void reco_SpeechRecognized(object sender,SpeechRecognizedEventArgs e)
{
richTextBox1.AppendText(e.Result.Text);
}
void reco_SpeechDetected(object sender,SpeechDetectedEventArgs e)
{
richTextBox1.AppendText(Speech Detected!);
}
}
}< / speechrecognitionrejectedeventargs>< / speechdetectedeventargs>< / audiosignalproblemoccurredeventargs>< / recognitioncompletedeventargs> ;< / speechrecognizedeventargs>< / speechhypothesizedeventargs>
解决方案
此版本编译。您不清楚是否是编译错误或运行时错误。如果您的问题是编译错误,则此版本解决了该错误。因为它是C#代码,大小写必须匹配。我纠正了< event args =>使用大写和小写的条款如下:< SpeechRecognizedEventArgs>
。
使用系统;
使用System.IO;
使用System.Collections.Generic;使用System.ComponentModel
;
使用System.Data;使用System.Drawing
;
使用System.Linq;
使用System.Text;
使用System.Windows.Forms;使用System.Speech.Recognition
;
使用System.Speech.AudioFormat;
namespace reco
{
公共部分类Form1:表格
{
private SpeechRecognitionEngine recognitionEngine;
public Form1()
{
InitializeComponent();
try
{
recognitionEngine = new SpeechRecognitionEngine();
DictationGrammar dg = new DictationGrammar();
dg.Name =听写语法;
recognitionEngine.LoadGrammar(dg);
recognitionEngine.SetInputToDefaultAudioDevice();
//recognitionEngine.SetInputToWaveFile(@\"C:\Users\Deep\Music\New folder\mp3.wav);
recognitionEngine.SetInputToDefaultAudioDevice(); //从麦克风获取声音
recognitionEngine.EndSilenceTimeout = new TimeSpan(0,0,2);
//不需要以下两行。他们造成错误!
//recognitionEngine.Recognize();
//recognitionEngine.RecognizeAsync();
recognitionEngine.SpeechHypothesized + = new EventHandler< SpeechHypothesizedEventArgs>(reco_SpeechHypothesized);
recognitionEngine.SpeechRecognized + = new EventHandler< SpeechRecognizedEventArgs>(reco_SpeechRecognized);
recognitionEngine.RecognizeCompleted + = new EventHandler< RecognizeCompletedEventArgs>(reco_RecognizeCompleted);
recognitionEngine.AudioSignalProblemOccurred + = new EventHandler< AudioSignalProblemOccurredEventArgs>(reco_AudioSignalProblemOccurred);
recognitionEngine.SpeechDetected + = new EventHandler< SpeechDetectedEventArgs>(reco_SpeechDetected);
recognitionEngine.SpeechRecognitionRejected + = new EventHandler< SpeechRecognitionRejectedEventArgs>(reco_SpeechRecognitionRejected);
recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
}
catch(例外e)
{
MessageBox.Show(Error+ e);
}
}
private void Form1_Load(object sender,EventArgs e)
{
}
void reco_AudioSignalProblemOccurred(object sender,AudioSignalProblemOccurredEventArgs e )
{
richTextBox1.AppendText(e.AudioSignalProblem.ToString());
}
void reco_SpeechHypothesized(object sender,SpeechHypothesizedEventArgs e)
{
richTextBox1.AppendText(e.Result.Text);
}
void reco_SpeechRecognitionRejected(object sender,SpeechRecognitionRejectedEventArgs e)
{
richTextBox1.AppendText(Rejected!);
}
void reco_RecognizeCompleted(object sender,RecognizeCompletedEventArgs e)
{
richTextBox1.AppendText(Recognition Complete!);
}
void reco_SpeechRecognized(object sender,SpeechRecognizedEventArgs e)
{
richTextBox1.AppendText(e.Result.Text);
}
void reco_SpeechDetected(object sender,SpeechDetectedEventArgs e)
{
richTextBox1.AppendText(Speech Detected!);
}
}
}
修订后的解决方案 - 27 2013年3月2:44 EDT:
static void speech1(object sender,SpeechRecognizedEventArgs e)
{
if(e.Result.Text ==记录)
{
showRecord();
}
else if(e.Result.Text ==exit)
{
Application.Exit();
}
}
private void button1_Click(object sender,EventArgs e)
{
showRecord();
}
static void showRecord()
{
record r = new record();
r.show();
}
}
公共类记录
{
public void show(){}
}
How can I convert speech (recorded .wav file) to a text file. I have written C# code as shown below. Please check and tell me is everything is proper or not. I have run this code and I am getting an error.
using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Speech.Recognition; using System.Speech.AudioFormat; namespace reco { public partial class Form1 : Form { private SpeechRecognitionEngine recognitionEngine; public Form1() { InitializeComponent(); try { recognitionEngine = new SpeechRecognitionEngine(); DictationGrammar dg = new DictationGrammar(); recognitionEngine.LoadGrammar(dg); recognitionEngine.SetInputToDefaultAudioDevice(); recognitionEngine.SetInputToWaveFile(@"C:\Users\Deep\Music\New folder\mp3.wav"); recognitionEngine.EndSilenceTimeout = new TimeSpan(0, 0, 2); recognitionEngine.Recognize(); recognitionEngine.RecognizeAsync(); recognitionEngine.SpeechHypothesized += new EventHandler<speechhypothesizedeventargs>(reco_SpeechHypothesized); recognitionEngine.SpeechRecognized += new EventHandler<speechrecognizedeventargs>(reco_SpeechRecognized); recognitionEngine.RecognizeCompleted += new EventHandler<recognizecompletedeventargs>(reco_RecognizeCompleted); recognitionEngine.AudioSignalProblemOccurred += new EventHandler<audiosignalproblemoccurredeventargs>(reco_AudioSignalProblemOccurred); recognitionEngine.SpeechDetected += new EventHandler<speechdetectedeventargs>(reco_SpeechDetected); recognitionEngine.SpeechRecognitionRejected += new EventHandler<speechrecognitionrejectedeventargs>(reco_SpeechRecognitionRejected); recognitionEngine.RecognizeAsync(RecognizeMode.Multiple); } catch (Exception e) { MessageBox.Show("the Error"+e); } } private void Form1_Load(object sender, EventArgs e) { } void reco_AudioSignalProblemOccurred(object sender, AudioSignalProblemOccurredEventArgs e) { richTextBox1.AppendText(e.AudioSignalProblem.ToString()); } void reco_SpeechHypothesized(object sender, SpeechHypothesizedEventArgs e) { richTextBox1.AppendText(e.Result.Text); } void reco_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e) { richTextBox1.AppendText("Rejected!"); } void reco_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e) { richTextBox1.AppendText("Recognition Complete!"); } void reco_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { richTextBox1.AppendText(e.Result.Text); } void reco_SpeechDetected(object sender, SpeechDetectedEventArgs e) { richTextBox1.AppendText("Speech Detected!"); } } }</speechrecognitionrejectedeventargs></speechdetectedeventargs></audiosignalproblemoccurredeventargs></recognizecompletedeventargs></speechrecognizedeventargs></speechhypothesizedeventargs>
解决方案
This version compiles. You weren''t clear enough to say whether it was a compile error or a run-time error. If your problem was a compile error, this version resolves that. Because it is C# code, the upper and lower case must match. I corrected the <event args=""> clauses to use upper and lower case like this:<SpeechRecognizedEventArgs>
.
using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Speech.Recognition; using System.Speech.AudioFormat; namespace reco { public partial class Form1 : Form { private SpeechRecognitionEngine recognitionEngine; public Form1() { InitializeComponent(); try { recognitionEngine = new SpeechRecognitionEngine(); DictationGrammar dg = new DictationGrammar(); dg.Name = "Dictation Grammar"; recognitionEngine.LoadGrammar(dg); recognitionEngine.SetInputToDefaultAudioDevice(); //recognitionEngine.SetInputToWaveFile(@"C:\Users\Deep\Music\New folder\mp3.wav"); recognitionEngine.SetInputToDefaultAudioDevice(); // Gets sound from microphone recognitionEngine.EndSilenceTimeout = new TimeSpan(0, 0, 2); // Following two lines are not needed. They cause error! //recognitionEngine.Recognize(); //recognitionEngine.RecognizeAsync(); recognitionEngine.SpeechHypothesized += new EventHandler<SpeechHypothesizedEventArgs>(reco_SpeechHypothesized); recognitionEngine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(reco_SpeechRecognized); recognitionEngine.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(reco_RecognizeCompleted); recognitionEngine.AudioSignalProblemOccurred += new EventHandler<AudioSignalProblemOccurredEventArgs>(reco_AudioSignalProblemOccurred); recognitionEngine.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(reco_SpeechDetected); recognitionEngine.SpeechRecognitionRejected += new EventHandler<SpeechRecognitionRejectedEventArgs>(reco_SpeechRecognitionRejected); recognitionEngine.RecognizeAsync(RecognizeMode.Multiple); } catch (Exception e) { MessageBox.Show("Error "+e); } } private void Form1_Load(object sender, EventArgs e) { } void reco_AudioSignalProblemOccurred(object sender, AudioSignalProblemOccurredEventArgs e) { richTextBox1.AppendText(e.AudioSignalProblem.ToString()); } void reco_SpeechHypothesized(object sender, SpeechHypothesizedEventArgs e) { richTextBox1.AppendText(e.Result.Text); } void reco_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e) { richTextBox1.AppendText("Rejected!"); } void reco_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e) { richTextBox1.AppendText("Recognition Complete!"); } void reco_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { richTextBox1.AppendText(e.Result.Text); } void reco_SpeechDetected(object sender, SpeechDetectedEventArgs e) { richTextBox1.AppendText("Speech Detected!"); } } }
Revised Solution - 27 March 2013 2:44PM EDT:
static void speech1(object sender, SpeechRecognizedEventArgs e) { if (e.Result.Text == "record") { showRecord(); } else if (e.Result.Text == "exit") { Application.Exit(); } } private void button1_Click(object sender, EventArgs e) { showRecord(); } static void showRecord() { record r=new record(); r.show(); } } public class record { public void show() { } }
这篇关于如何将语音(.wav文件)转换为文本文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文