Я использую Sphinx4 для выравнивания текста. Я хочу получить время для каждого слова в предложении (начало, конец), а также время каждой фонемы в словах. Для этого я изменил код SpeechAligner. Метод, который я отредактировал это:Сменные блоки маркеров Sphinx4 смещены
public List<WordResult> align(URL audioUrl, List<String> sentenceTranscript) throws IOException {...}
Я просто добавил список, где я получаю результат в классе результат (не WordResult).
List<WordResult> hypothesis = new ArrayList<WordResult>();
Result result;
while (null != (result = recognizer.recognize())) {
alignResult.add(result);// I am filling the results here
logger.info("Utterance result " + result.getTimedBestResult(true));
hypothesis.addAll(result.getTimedBestResult(false));
}
Тогда я следовал именно этот пример: Phonemes Timestamp
Для этого предложения: "дез adversaires" Я ожидаю иметь: expected result
Но результат сдвигается 1 слово в начиная с написания слова «des», а des берет написание «противников» и т. д. (как будто второе молчание игнорируется). Я получаю это: what i get
, чтобы отобразить маркер и блоки я использую:
System.out.println("token : " + token.getWordPath() + " - unit : " + unit.toString());
Спасибо заранее,
@NikolayShmyrev К сожалению, изменение true на false ничего не меняет (в любом случае logger.info («Результат результата» + result.getTimedBestResult (true));) - это всего лишь строка журнала. – user1828433