Отключить беспорядок в консоли в CMUSphinx4

Я пробую CMUSphinx, но мне тяжело. Я включил файлы jar core и data в проект в Eclipse, который я скачал с здесь

Я попытался выполнить распознавание речи в реальном времени, как указано в руководстве, но когда я пытаюсь запустить его, консоль заполнена какими-то ошибками типа 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? Если да, дайте ссылку, пожалуйста. И, наконец, как я могу отключить все предупреждения консоли и т. Д. И иметь только тот вывод, который я предоставляю.


person SkrewEverything    schedule 22.02.2016    source источник


Ответы (1)


У меня та же проблема, когда я использую только классы StreamSpeechRecognizer и Configuration. После просмотра источника sphinx для ConfigurationManagerUtils мне удалось получить следующий код в моих собственных классах, чтобы отключить все консольные журналы из пакетов 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");
  }

Вряд ли элегантно, но это работает для меня, если только у кого-то нет более чистого подхода к отключению ведения журнала во время runtime через классы конфигурации/контекста sphinx.

Как и в случае с любыми сторонними пакетами, которые мне нужно использовать в моем собственном проекте, у меня есть веская причина делать это непосредственно в коде, потому что 1/ я не хочу раскрывать какие-либо сторонние журналы и 2/ я не хочу поставлять настраиваемые файлы конфигурации ведения журналов для стороннего кода.

person Craig    schedule 12.04.2016