Restricting speech recognition results on Android

前端 未结 3 618
攒了一身酷
攒了一身酷 2020-12-10 20:41

I\'m making an app that allows people to speak and select between a few options (Strings). I\'m having a little problem making the Android Speech Recognizer fit my idea.

3条回答
  •  温柔的废话
    2020-12-10 21:42

    Our solution to this problem is described at http://kaljurand.github.io/Grammars/, e.g. check out the paper linked from this page:

    Kaarel Kaljurand, Tanel Alumäe. Controlled Natural Language in Speech Recognition Based User Interfaces (CNL 2012)

    The basic idea is:

    1. don't use Google's speech recognizer because you cannot (currently) pass the language model (e.g. a grammar) to it (in our case it also didn't support the input language that we wanted to use);
    2. so you need to implement your own speech recognizer (e.g. based on Sphinx) and make it accept grammars as part of the input;
    3. implement the grammar. If it's a simple list of acceptable phrases then JSGF will do as the grammar description language, for more complex grammars I recommend Grammatical Framework (which you can automatically compile to JSGF or finite-state automata);
    4. implement an Android app that extends the RecognizerIntent API by adding a way to pass the grammar to the recognizer. You can base it e.g. on Kõnele.

    All this might be an overkill in your case. Post-processing of Google's results (as @gregm suggests) is certainly easier to implement. But if you want to scale to more complex and/or multilingual language models then our approach certainly provides the required modularity and expressive power.

提交回复
热议问题