我正在尝试CMUSphinx,但我很难过。我已将core
和data
个jar包含在Eclipse中的项目中,我从here下载了
我试着像in the tutorial那样进行实时语音识别,但是当我尝试运行它时,控制台中充满了某些错误,例如The dictionary is missing a phonetic transcription for the word '....'
和许多错误。
代码:
import edu.cmu.sphinx.api.Configuration;
import edu.cmu.sphinx.api.LiveSpeechRecognizer;
import edu.cmu.sphinx.api.SpeechResult;
public class Hello {
public static void main(String[] args) throws Exception {
Configuration configuration = new Configuration();
configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");
LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration);
while(true)
{
System.out.println("Start speaking...");
recognizer.startRecognition(true);
SpeechResult result = recognizer.getResult();
System.out.println("result: "+result.getHypothesis());
recognizer.stopRecognition();
}
}
}
控制台:
23:15:07.552 INFO unitManager CI Unit: *+NSN+
23:15:07.556 INFO unitManager CI Unit: *+SPN+
23:15:07.556 INFO unitManager CI Unit: AA
23:15:07.556 INFO unitManager CI Unit: AE
23:15:07.556 INFO unitManager CI Unit: AH
23:15:07.556 INFO unitManager CI Unit: AO
...
... /* Similar to above messages */
...
...
23:15:08.447 INFO autoCepstrum Cepstrum component auto-configured as follows: autoCepstrum {MelFrequencyFilterBank, Denoise, DiscreteCosineTransform2, Lifter}
2016-02-22 23:15:08.649 java[68475:2340128] 23:15:08.649 WARNING: 140: This application, or a library it uses, is using the deprecated Carbon Component Manager for hosting Audio Units. Support for this will be removed in a future release. Also, this makes the host incompatible with version 3 audio units. Please transition to the API's in AudioComponent.h.
Start speaking... /* My Output */
23:15:08.653 INFO dictionary Loading dictionary from: jar:file:/Users/sriharish/Java/sphinx4-data-5prealpha-20151218.160017-5.jar!/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict
23:15:08.786 INFO dictionary Loading filler dictionary from: jar:file:/Users/sriharish/Java/sphinx4-data-5prealpha-20151218.160017-5.jar!/edu/cmu/sphinx/models/en-us/en-us/noisedict
23:15:08.786 INFO acousticModelLoader Loading tied-state acoustic model from: jar:file:/Users/sriharish/Java/sphinx4-data-5prealpha-20151218.160017-5.jar!/edu/cmu/sphinx/models/en-us/en-us
23:15:08.787 INFO acousticModelLoader Pool means Entries: 16128
23:15:08.787 INFO acousticModelLoader Pool variances Entries: 16128
23:15:08.787 INFO acousticModelLoader Pool transition_matrices Entries: 42
23:15:08.787 INFO acousticModelLoader Pool senones Entries: 5126
23:15:08.787 INFO acousticModelLoader Gaussian weights: mixture_weights. Entries: 15378
23:15:08.787 INFO acousticModelLoader Pool senones Entries: 5126
23:15:08.787 INFO acousticModelLoader Context Independent Unit Entries: 42
23:15:08.788 INFO acousticModelLoader HMM Manager: 137095 hmms
23:15:08.788 INFO acousticModel CompositeSenoneSequences: 0
23:15:08.789 INFO trieNgramModel Loading n-gram language model from: jar:file:/Users/sriharish/Java/sphinx4-data-5prealpha-20151218.160017-5.jar!/edu/cmu/sphinx/models/en-us/en-us.lm.bin
23:15:09.821 INFO dictionary The dictionary is missing a phonetic transcription for the word '3-d'
23:15:09.821 WARNING trieNgramModel The dictionary is missing a phonetic transcription for the word '3-d'
23:15:09.830 INFO dictionary The dictionary is missing a phonetic transcription for the word 'adjustors'
23:15:09.830 WARNING trieNgramModel The dictionary is missing a phonetic transcription for the word 'adjustors'
...
... /* Similar to above messages */
...
23:15:11.231 INFO lexTreeLinguist Max CI Units 43
23:15:11.232 INFO lexTreeLinguist Unit table size 79507
23:15:11.234 INFO speedTracker # ----------------------------- Timers----------------------------------------
23:15:11.235 INFO speedTracker # Name Count CurTime MinTime MaxTime AvgTime TotTime
23:15:11.237 INFO speedTracker Compile 1 1.1360s 1.1360s 1.1360s 1.1360s 1.1360s
23:15:11.238 INFO speedTracker Load Dictionary 1 0.1330s 0.1330s 0.1330s 0.1330s 0.1330s
23:15:11.238 INFO speedTracker Load AM 1 2.0880s 2.0880s 2.0880s 2.0880s 2.0880s
23:15:11.238 INFO speedTracker Load LM 1 1.3080s 1.3080s 1.3080s 1.3080s 1.3080s
23:15:16.674 INFO speedTracker This Time Audio: 0.37s Proc: 4.12s Speed: 11.14 X real time
23:15:16.676 INFO speedTracker Total Time Audio: 0.37s Proc: 4.12s 11.14 X real time
23:15:16.676 INFO memoryTracker Mem Total: 738.00 Mb Free: 378.28 Mb
23:15:16.676 INFO memoryTracker Used: This: 359.72 Mb Avg: 359.72 Mb Max: 359.72 Mb
23:15:16.676 INFO trieNgramModel LM Cache Size: 870 Hits: 153862 Misses: 870
result: none /* My Output */
我已下载推荐的罐子并将其包含在项目中。那么它有什么问题?他们没提供字典吗?我可以添加缺少的phonetic transcription
吗?如果是,请提供链接。最后,我如何禁用所有控制台警告等,并且只有我提供的输出。
答案 0 :(得分:8)
我遇到同样的问题,我使用的唯一类是StreamSpeechRecognizer和Configuration。在查看了用于ConfigurationManagerUtils的sphinx源代码之后,我设法在我自己的类中获取以下代码,以禁用来自edu.cmu.sphinx软件包的所有控制台日志记录。在实例化识别器之前放置此代码。
Logger cmRootLogger = Logger.getLogger("default.config");
cmRootLogger.setLevel(java.util.logging.Level.OFF);
String conFile = System.getProperty("java.util.logging.config.file");
if (conFile == null) {
System.setProperty("java.util.logging.config.file", "ignoreAllSphinx4LoggingOutput");
}
非常优雅,但它适用于我,除非有人通过sphinx配置/上下文类有更清晰的方法来禁用运行时的日志记录。
与我在自己的项目中需要使用的任何第三方软件包一样,我有充分的理由直接在代码中执行此操作,因为我/我并不关心公开任何第三方日志记录和2 / I don& #39;希望为第三方代码提供自定义日志记录配置文件。