【问题标题】:Audio Comparison using Micorosft speech recognition engine使用 Microsoft 语音识别引擎进行音频比较
【发布时间】:2013-09-11 04:31:48
【问题描述】:

我有一个应用程序,用户可以在其中说话和一个单词,他将获得他所说的单词的准确百分比。即引擎识别单词的清晰程度。

这一切都很好,但我有一个难题,需要将哪些单词添加到字典中,我将作为字典提供给识别引擎。

如果我为 case pen 给出以“p”开头的单词,那么像 pendant 、pent 等所有单词都将被添加到字典中。在这种情况下,我没有得到识别为“pen”的单词。

相反,我总是得到其他词,例如“吊坠”等

但是,如果我只在字典中添加有限的单词,例如“pe”、“pen”,那么对于同一个录制文件,我只能将识别的单词作为“Pen”。

意味着它显然取决于我们提供给字典的单词。

我已经向我的客户传达了同样的信息。但是他们想要的是他们也可以针对给定的输入单词说出错误的单词,所以当时他们不需要获得准确性并获得识别的文本。

我已经为这个问题做了我本可以做的事情。但是我的客户需要一些宇宙之外的东西。

代码:

public OdllSpeechProcessor(string culture, string speechContent , string filePath)
        {
            try
            {
                int counter = 0;
                string line;
                cultureInfo         = new CultureInfo(culture);
                recognitionEngine   = new SpeechRecognitionEngine(cultureInfo);
                words               = new Choices();
                gb                  = new GrammarBuilder();
                gb.Culture          = cultureInfo;
                rndAccuracy         = new Random();

                System.IO.StreamReader file = new System.IO.StreamReader(filePath);
                while ((line = file.ReadLine()) != null)
                {
                    if (line != "")
                    {
                        for (int i = 0; i < srcContent.Length; i++)
                        {
                            if (line.StartsWith(subsetWords, true, cultureInfo))
                            {
                                if (count >= line.Length)
                                {
                                    words.Add(line);
                                    counter++;
                                }
                            }
                        }
                    }
                }


                file.Close(); 

                // Adding words to the grammar builder.              
                gb.Append(words);

                // Create the actual Grammar instance, with the words from the source audio.
                g = new Grammar(gb);

                // Load the created grammar onto the speech recognition engine.
                recognitionEngine.LoadGrammarAsync(g);

这里有没有专家对此有解决方案?任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 看看一些代码会很有帮助。
  • 另外,我怀疑您使用引擎置信度来估计参考词与识别的匹配程度;情况并非总是如此(很容易得到正确的低置信匹配和不正确的高置信匹配)。
  • @Eric:是的,我正在使用引擎信心
  • 您使用的是听写语法还是命令语法?它听起来就像您在使用命令语法,这不是正确的选择。使用命令语法,引擎会尽力找到匹配项,这很容易导致误报识别。
  • @Eric:我已经编辑了我的问题并添加了代码。

标签: c# asp.net speech-recognition microsoft-speech-platform


【解决方案1】:

您正在使用命令语法(即一组选项)。使用命令语法,引擎会尽力找到匹配项,这很容易导致误报(如您所见)。您可能想研究听写语法,尤其是发音语法,正如我在对this question 的回答中所概述的那样。请注意,我概述的解决方案使用了一些 C# 中不可用的接口(或至少通过 System.Speech.Recognition 公开)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多