Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何查看Pocketsphinx字典中是否存在该词?_Java_Android_Database_Voice Recognition_Cmusphinx - Fatal编程技术网

Java 如何查看Pocketsphinx字典中是否存在该词?

Java 如何查看Pocketsphinx字典中是否存在该词?,java,android,database,voice-recognition,cmusphinx,Java,Android,Database,Voice Recognition,Cmusphinx,我只是想看看字典文件中是否存在字符串。(问题底部的词典文件) 我想检查语音识别器是否能识别单词。例如,识别器将无法识别ahdfojakdlfafiop字符串,因为字典中未定义该字符串。那么,我能检查一下pocktsphinx字典里有没有单词吗? 比如: if(myString.existsInDictionary){ startListeningBecauseExists(); }else( //Doesn't exist in dictionary!!! } 我

我只是想看看字典文件中是否存在字符串。(问题底部的词典文件)

我想检查语音识别器是否能识别单词。例如,识别器将无法识别
ahdfojakdlfafiop
字符串,因为字典中未定义该字符串。那么,我能检查一下pocktsphinx字典里有没有单词吗?

比如:

    if(myString.existsInDictionary){
startListeningBecauseExists();
    }else(
//Doesn't exist in dictionary!!!
       }
我只是想知道识别器是否能听到我想听到的内容

这是字典文件:

谢谢


Ruchir

使用
BufferedReader
读取文件,并将所有单词存储在
ArrayList

ArrayList<String> 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);
}

希望对你有所帮助。

你可以通过逐行阅读字典,将其加载到arraylist中,只得到单词do

arraylist.add(line.split(\\s+)[0])

然后检查它是否存在

if(arraylist.contains(word))
在C中,有一个函数允许您查找单词:

if (ps_lookup_word(ps, "abc") == NULL) {
    // do something
}
在Java包装器中,它是一种方法
解码器。lookupford

if(decoder.lookupWord("abc") == null) {
    // do something
}
在Android中,您可以从
识别器
访问解码器:

if(recognizer.getDecoder().lookupWord("abc") == null) {
    // do something
}

查看一下将字典文件中的所有单词读入
ArrayList
,并始终检查
if(list.contains(myString))
@BalwinderSingh我知道如何读取文件,但如果您查看我问题中的链接,就不是那么简单了。每一行旁边都有一个我不在乎的发音。我所关心的是每一行上的单词。我怎么能读这些词呢?@ELITE我知道如何读文件,但如果你看看我问题中的链接,就不是那么直截了当了。每一行旁边都有一个我不在乎的发音。我所关心的是每一行上的单词。我怎么能只读单词呢?我刚刚回复了我的答案,包括阅读从你的字典文件中抽取的一个字典文件。您可以在下面查看,希望有帮助。@Ruchir Baronia Ohh抱歉\s+是一个空白,在字典中有一个单词(您想要的)然后是一个空格,然后是你不想要的东西,所以如果你用空格分割它,得到数组中的第一个字符串,你只会得到单词,所以它会在空格后分割所有内容?@RuchirBaronia它会在字符串数组中将行分割成多个单词,你想要的单词是第一个,因此你会得到第一个字符串并将其添加到列表中。无需浪费内存并再次读取文件,解码器已经对其进行了解析。此外,在文件中的单词旁边,还可以向解码器添加其他单词。不需要浪费内存,也不需要再次读取文件,因为它已经被解码器解析了。另外,可能会在文件中的单词旁边向解码器添加其他单词。在初始化系统之前只读取一次文件,而不是每次都检查工作。我同意它浪费了大量内存,因为它在ArrayList中保存了所有单词…您的代码在性能方面也非常低效,最好使用
哈希集
,不
ArrayList
。在十万条条目的列表中搜索一个元素不是一个好主意。你不需要制作两个识别器,你需要使用单个识别器并在活动中共享它。你请求识别器服务获取一个单词并返回结果,只需添加另一个请求代码。嘿,Nikolay,我想知道我们是否可以在IOS上使用Pocketsphinx进行连续语音识别。可能吗?谢谢@NikolayShmyrev,你能告诉我,在安卓系统中,这个代码应该放在哪里吗
if(recognizer.getDecoder().lookupWord("abc") == null) {
    // do something
}