如何查看Pocketsphinx字典中是否存在单词?
我只想查看字典文件中是否存在字符串。 (问题底部的字典文件)
我想检查语音识别器是否能识别一个单词。 例如,识别器将无法识别ahdfojakdlfafiop
的字符串,因为它未在字典中定义。 那么, 我可以检查一个单词是否在pocktsphinx的字典中?
就像是:
if(myString.existsInDictionary){ startListeningBecauseExists(); }else( //Doesn't exist in dictionary!!! }
我只是想要一种方法来判断识别器是否可以监听我想要它听的内容。
这是字典文件:
https://raw.githubusercontent.com/cmusphinx/pocketsphinx-android-demo/master/app/src/main/assets/sync/cmudict-en-us.dict
谢谢,
Ruchir
在C中有ps_lookup_word函数,它允许您查找单词:
if (ps_lookup_word(ps, "abc") == NULL) { // do something }
在Java包装器中,它是一个方法Decoder.lookupWord
:
if(decoder.lookupWord("abc") == null) { // do something }
在Android中,您可以从Recognizer
器访问解码器:
if(recognizer.getDecoder().lookupWord("abc") == null) { // do something }
使用BufferedReader
读取文件并将所有单词存储在ArrayList
ArrayList dictionary = new ArrayList<>(); String line; BufferedReader reader = new BufferedReader(new FileReader(dictionaryFile)); while((line = reader.readLine()) != null) { if(line.trim().length() <= 0 ) { continue; } String word = line.split(" ")[0].trim(); word = word.replaceAll("[^a-zA-Z]", ""); dictionary.add(word); }
然后检查dictionary
是否存在dictionary
dictionary.contains(yourString);
希望它会有所帮助。
您可以通过逐行读取字典将字典加载到arraylist并仅获取单词
arraylist.add(line.split("\\s+")[0]);
然后检查它是否存在
if(arraylist.contains(word))