我使用prosody.lab,它使用HTK来构建语言模型。我试图训练这个新模型,但是我得到了以下HTK
错误
ERROR [+1452] ReadDictProns: word HAO' out of order in dict dictionary.dict
下面是我的字典是如何排序的
^{pr2}$因此,在做一些研究时,我遇到了一个website,它说产生这个错误的原因是:
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'
和{
EH
ENSKA
É'THO
HENH
HAO'
KAHNAWAKE
KAHYÁ:TON'
但此顺序会产生以下错误:
ERROR [+1452] ReadDictProns: word HENH out of order in dict dictionary.dict
错误[+1452]ReadDictProns:单词HAO'在dict中无序字典.dict在
任何一句话都会包含你的训练数据。在
如果它包含在你的字典中,那么错误是由于你的yaml文件配置,有一套发音列表,如果你对任何单词进行了任何新的转换,你必须在那里添加。在
注意:如果您没有对字典进行排序,请使用此命令并首先对其排序-”/排序.py语言文字“或”/排序.py<;语言文字>;新建_语言文字““
请参考此链接以获取更多信息-https://github.com/prosodylab/Prosodylab-Aligner
很可能,HTK期望的排序顺序非常幼稚,并且基于字符使用的字节序列。在本例中,
É
将出现在所有没有重音的字符之后。所以这个命令是正确的:请参见http://www.tamasoft.co.jp/en/general-info/unicode.html,了解按字节序列排序的字符。在
相关问题 更多 >
编程相关推荐