从wav文件c#中的语音到文本

Posted

技术标签:

【中文标题】从wav文件c#中的语音到文本【英文标题】:speech to text from wav file c# 【发布时间】:2014-09-18 16:33:07 【问题描述】:

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

使用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);

【问题讨论】:

【参考方案1】:

我认为你的一些超时值是极端的,但我能够得到各种 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()。可能有比DictationGrammar 更好的选择,但它适用于我的示例。

您还需要在result 中检查null,因为如果识别失败了。

【讨论】:

您可以加载仅包含整数 0-9 或将包含的任何范围的自定义语法。那么只有那些数字将被识别,而不是任何非整数(如果它们存在)。语法可能非常棘手,但我这样做是为了自定义语法,以根据说出行号打开列表中的项目,因此可以完成 @pinkfloydx33 你能提供你提到的语法吗,只适用于数字?

以上是关于从wav文件c#中的语音到文本的主要内容,如果未能解决你的问题,请参考以下文章

C# 中的 Google 语音转文本 API

C#:更改文本框中的数字

从音频字节创建 wav 文件

无法将语音转换为文本

将 wav 文件从 GSM 转换为 PCM

如何使用 SpeechSynthesizer C# 将音频流写入响应