C# 从wav文件c到文本的语音转换#
我有一些用整数表示的wav文件。我需要检测这些单独的整数并转换成字符串。您可以从以下位置下载mp3文件: 使用Microsoft SpeechRecognitionEngine,我几乎无法从任何wav文件中检测到整数 这是SRE设置: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
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你能提供你提到的语法吗,只针对数字?