1

Я изучаю, как использовать Sphinx4, используя плагин Maven для Eclipse.Почему у меня плохое признание Sphinx4?

Я взял демонстрационную запись на GitHub и изменил ее, чтобы обработать собственный файл. Аудиофайл 16 бит, моно, 16 кГц. Это примерно 13 секунд. Я заметил, что это звучит так, будто он замедлен.

Слова, произнесенные в файле, «также удостоверяются, что вам легко получить доступ к файлам записи, чтобы вы могли загружать их, если их спросили».

Я пытаюсь расшифровать файл, и мои результаты ужасают. Мои попытки найти сообщения на форуме или ссылки, которые подробно объясняют, как улучшить результаты, или то, что я делаю неправильно, не привели меня туда.

Я ищу, чтобы укрепить точность транскрипции, но хотелось бы избежать необходимости самостоятельно обучать модель из-за отклонения в типе данных, с которыми должен справиться мой текущий проект. Разве это невозможно, и это код, который я использую?

КОД

(Примечание: Звуковой файл доступен на https://instaud.io/8qv)

public class App { 

public static void main(String[] args) throws Exception { 
    System.out.println("Loading models..."); 

    Configuration configuration = new Configuration(); 

    // Load model from the jar 
    configuration 
      .setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us"); 

    // You can also load model from folder 
    // configuration.setAcousticModelPath("file: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.dmp"); 

    StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(
      configuration); 
    FileInputStream stream = new FileInputStream(new File("/home/tmscanlan/workspace/example/vocaroo_test_revised.wav")); 
    // stream.skip(44); I commented this out due to the short length of my file 

    // Simple recognition with generic model 
    recognizer.startRecognition(stream); 
    SpeechResult result; 

    while ((result = recognizer.getResult()) != null) { 
     // I added the following print statements to get more information 
     System.out.println("\ngetWords() before loop: " + result.getWords()); 
     System.out.format("Hypothesis: %s\n", result.getHypothesis()); 
     System.out.print("\nThe getResult(): " + result.getResult() 
       + "\nThe getLattice(): " + result.getLattice()); 

     System.out.println("List of recognized words and their times:"); 
     for (WordResult r : result.getWords()) { 
      System.out.println(r); 
     } 

     System.out.println("Best 3 hypothesis:"); 
     for (String s : result.getNbest(3)) 
      System.out.println(s); 

    } 
    recognizer.stopRecognition(); 

    // Live adaptation to speaker with speaker profiles 


    stream = new FileInputStream(new File("/home/tmscanlan/workspace/example/warren_test_smaller.wav")); 
    // stream.skip(44); I commented this out due to the short length of my file 

    // Stats class is used to collect speaker-specific data 
    Stats stats = recognizer.createStats(1); 
    recognizer.startRecognition(stream); 
    while ((result = recognizer.getResult()) != null) { 
     stats.collect(result); 
    } 
    recognizer.stopRecognition(); 

    // Transform represents the speech profile 
    Transform transform = stats.createTransform(); 
    recognizer.setTransform(transform); 

    // Decode again with updated transform 
    stream = new FileInputStream(new File("/home/tmscanlan/workspace/example/warren_test_smaller.wav")); 
    // stream.skip(44); I commented this out due to the short length of my file 
    recognizer.startRecognition(stream); 
    while ((result = recognizer.getResult()) != null) { 
     System.out.format("Hypothesis: %s\n", result.getHypothesis()); 
    } 
    recognizer.stopRecognition(); 


    System.out.println("...Printing is done.."); 
} 
} 

Вот результат (фотоальбом я взял): http://imgur.com/a/Ou9oH

+0

Вы можете поделиться аудио-файлом, чтобы получить справку, картинки бесполезны –

+0

https://instaud.io/8qn, если эта ссылка не работает или есть лучший способ поделиться аудио, пожалуйста, дайте мне знать. – tmsBoston

+0

Ну, так как вы можете услышать, что файл записан неправильно. Сначала вы можете записать его правильно. –

ответ

1

Как говорит Николай, аудио звучит странно, вероятно, потому, что вы не переделали его правильно. Чтобы декодирует звук из оригинальных 22050 Гц до нужного 16кЦа, вы можете выполнить следующую команду:

sox Vocaroo.wav -r 16000 Vocaroo16.wav 

Vocaroo16.wav будет звучит гораздо лучше, и это будет (возможно) даст вам лучше ASR результаты.

+0

Большое спасибо за фактический ответ. – tmsBoston

 Смежные вопросы

  • Нет связанных вопросов^_^