如何将语音(.wav文件)转换为文本文件? [英] How to convert speech (.wav file) to text file?

查看:102
本文介绍了如何将语音(.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆