C# 从wav文件c到文本的语音转换#

C# 从wav文件c到文本的语音转换#,c#,audio,C#,Audio,我有一些用整数表示的wav文件。我需要检测这些单独的整数并转换成字符串。您可以从以下位置下载mp3文件: 使用Microsoft SpeechRecognitionEngine,我几乎无法从任何wav文件中检测到整数 这是SRE设置: sre.SetInputToWaveFile("D:\\Speeches\\Best3.wav"); sre.BabbleTimeout = new TimeSpan(Int32.MaxValue); sre.InitialSilenceTimeout = ne

我有一些用整数表示的wav文件。我需要检测这些单独的整数并转换成字符串。您可以从以下位置下载mp3文件:

使用Microsoft SpeechRecognitionEngine,我几乎无法从任何wav文件中检测到整数

这是SRE设置:

sre.SetInputToWaveFile("D:\\Speeches\\Best3.wav");
sre.BabbleTimeout = new TimeSpan(Int32.MaxValue);
sre.InitialSilenceTimeout = new TimeSpan(Int32.MaxValue);
sre.EndSilenceTimeout = new TimeSpan(100000000);
sre.EndSilenceTimeoutAmbiguous = new TimeSpan(100000000);

我认为您的一些超时值是极端的,但我能够获得各种
wav
文件,用如下代码进行解析:

using System;
using System.Speech.Recognition;

namespace SR
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var sre = new SpeechRecognitionEngine())
            {
                sre.SetInputToWaveFile(@"D:\test.wav");
                sre.LoadGrammar(new DictationGrammar());

                sre.BabbleTimeout = new TimeSpan(Int32.MaxValue);
                sre.InitialSilenceTimeout = new TimeSpan(Int32.MaxValue);
                sre.EndSilenceTimeout = new TimeSpan(100000000);
                sre.EndSilenceTimeoutAmbiguous = new TimeSpan(100000000);

                var result = sre.Recognize();
                Console.WriteLine(result.Text);
            }

            Console.ReadLine();

        }
    }
}
您需要调用
LoadGrammar()
。可能有比听写语法更好的选择,但它对我的示例有效


您还需要检查
result
中是否存在
null
,如果识别失败,情况就是这样。

您可以加载一个自定义语法,该语法只包含整数0-9或任何将包含的范围。然后,只有这些数字才会被识别,如果它们存在,则不会识别任何非整数。语法可能相当棘手,但我这样做是为了让自定义语法基于说出行号来打开列表中的项目,所以它可以是done@pinkfloydx33你能提供你提到的语法吗,只针对数字?