Использование Prosody.lab и получение HTK ERROR [+1452] о том, что слово в словаре вышло из строя
Я использую http://prosodylab.org/, который использует HTK для построения языковой модели. Я пытаюсь тренировать эту новую модель, но получаю следующее HTK
ошибка
ERROR [+1452] ReadDictProns: word HAO' out of order in dict dictionary.dict
Вот как упорядочен мой словарь
EH EH0
ENSKA UH0 S K AH0
É'THO T OW0
HAO' HH AW0 OW0 Q
HENH HH AH0
KAHNAWAKE G AH0 N AH0 G EY0
KAHYÁ:TON' G AH0 Y AH0 D UH0 Q
Так что, проводя некоторые исследования, я наткнулся на сайт, который говорит, что эта ошибка вызвана тем, что:
Unix sort doesn't seem to match the sort HTK is looking for. Python's sort function seems to work. Numbers are sorted with '.' before 0, shorter before longer (1 < 1.0 < 10 < 100).
Я предполагаю, что на сортировку влияет тот факт, что в моем словаре есть специальные символы. Взяв указание с сайта, я поместил эти слова в список и отсортировал их, используя python sort
Функция сортировки этих слов.
unsorted_list = ["EH", "ENSKA", "É'THO", "HAO'", "HENH", "KAHNAWAKE", "KAHYÁ:TON'"]
sorted(unsorted_list)
Но приведенный выше код создает список в том же порядке, что и мой словарь.
Итак, я попытался поместить свой словарь в другой файл (unsorted_dict.txt
) и отсортировал это с помощью команды unix sort
:
$sort unsorted_dict.txt
Но это также производит тот же порядок и мой словарь.
EH
ENSKA
É'THO
HAO'
HENH
KAHNAWAKE
KAHYÁ:TON'
Я тоже пробовал переключаться HAO'
а также HENH
в моем словаре файл дает следующий порядок:
EH
ENSKA
É'THO
HENH
HAO'
KAHNAWAKE
KAHYÁ:TON'
Но этот порядок выдает следующую ошибку:
ERROR [+1452] ReadDictProns: word HENH out of order in dict dictionary.dict
2 ответа
Весьма вероятно, что порядок сортировки, который ожидает HTK, довольно наивен и основан на последовательности байтов, используемой для символов. В этом случае, É
придет после всех персонажей без акцента. Так что этот порядок будет правильным:
EH
ENSKA
HENH
HAO'
KAHNAWAKE
KAHYÁ:TON'
É'THO
См. http://www.tamasoft.co.jp/en/general-info/unicode.html для символов, упорядоченных по их последовательности байтов.
ОШИБКА [+1452] ReadDictProns: слово HAO'вышло из строя в dict dictionary.dict
эта проблема возникает, когда слово "HAO" не существует в вашем входном словаре. Вы должны добавить в словарь, это слово с его преобразованием CMU.
это слово будет содержаться в любом из вас предложения данных.
если он содержится в вашем словаре, то ошибка возникает из-за конфигурации вашего файла yaml, есть список произношения, который вы должны добавить, если вы произвели какое-либо новое преобразование для любого слова.
примечание: если вы не сортировали свой словарь, то, пожалуйста, сначала используйте эту команду и отсортируйте ее - "./sort.py lang.dict" или "./sort.py
пожалуйста, перейдите по этой ссылке для получения дополнительной информации - https://github.com/prosodylab/Prosodylab-Aligner