【问题标题】:What Grammar to use when recognizing letters识别字母时使用什么语法
【发布时间】:2014-10-16 03:41:01
【问题描述】:

使用语音识别我想创建一个用户说出字母的拼写游戏。例如,用户说“S”“T”“A”“C”“K”。

我正在使用 PocketSphinx 来完成此任务。这是我的代码:

File modelsDir = new File(assetsDir, "models");
        recognizer = defaultSetup()
                .setAcousticModel(new File(modelsDir, "hmm/en-us-semi"))
                .setDictionary(new File(modelsDir, "dict/cmu07a.dic"))
                .setRawLogDir(assetsDir).setKeywordThreshold(1e-20f)
                .getRecognizer();
        recognizer.addListener(this);

        // Create keyword-activation search.
        recognizer.addKeyphraseSearch(KWS_SEARCH, KEYPHRASE);
        // Create grammar-based searches.
        File menuGrammar = new File(modelsDir, "grammar/menu.gram");
        recognizer.addGrammarSearch(MENU_SEARCH, menuGrammar);
        File digitsGrammar = new File(modelsDir, "grammar/digits.gram");
        recognizer.addGrammarSearch(DIGITS_SEARCH, digitsGrammar);
        // Create language model search.
        File languageModel = new File(modelsDir, "lm/weather.dmp");
        recognizer.addNgramSearch(FORECAST_SEARCH, languageModel);

我如何识别用户说的字母?

或者有什么库可以用来完成这个吗?

【问题讨论】:

标签: java cmusphinx pocketsphinx-android


【解决方案1】:

您当前正在将两个语法加载到您的识别器中。我相信digits.gram 包含数字。

File menuGrammar = new File(modelsDir, "grammar/menu.gram");
recognizer.addGrammarSearch(MENU_SEARCH, menuGrammar);
File digitsGrammar = new File(modelsDir, "grammar/digits.gram");

所以我认为你可以做一个文件 letter.gram 并将其加载到你的程序中

#JSGF V1.0;
grammar speech;
public <speech> = A |
                  B | 
                  C; 

代码:

File letterGrammar = new File(PUT CORRECT PATH WITH FILE NAME);
recognizer.addGrammarSearch("speech", letterGrammar);

【讨论】:

    【解决方案2】:

    由于您使用的是 JAVA,因此您应该在项目中导入一个名为 SCANNER 的库。

    import java.util.Scanner;
    
    
    public static void main(String[]arguments){
    
    char x, y, z;
    
     Scanner input = new Scanner (System.in);
    
     System.out.print("Enter a letter");
     x = input.nextChar();
     y = input.nextChar();
     z = input.nextChar();
    
    }
    

    您还应该根据用户应该写多少个字母来使用循环。

    【讨论】:

    • 基于用户使用 Sphinx 标记问题,这是一个语音识别库,我不认为 Scanner 是他们正在寻找的。​​span>
    • 使用 Scanner 会更方便。 @特拉维斯
    • 需要语音识别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2020-06-30
    • 1970-01-01
    • 2017-03-15
    相关资源
    最近更新 更多