0

我正在使用使用HTK构建语言模型的prosody.lab 。我正在尝试训练这个新模型,但出现以下错误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).

我认为排序受到我的字典中有特殊字符这一事实的影响。根据网站的指示,我将这些单词放入一个列表中,并使用 pythonsort函数对这些单词进行排序。

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
4

2 回答 2

0

错误 [+1452] ReadDictProns:dict dictionary.dict 中的单词 HAO' 乱序

当您的输入词典中不存在“HAO”字样时,就会出现此问题。您必须在字典中添加该词及其 cmu 转换。

该词将包含在您的任何训练数据句子中。

如果它包含在你的字典中,那么错误是由于你的 yaml 文件配置,有一组发音列表,如果你对任何单词进行了任何新的转换,你必须添加那里。

注意:如果您没有对字典进行排序,请使用此命令并首先对其进行排序 - “./sort.py lang.dict”或“./sort.py < lang.dict > new_lang.dict”

请参阅此链接以获取更多信息 - https://github.com/prosodylab/Prosodylab-Aligner

于 2018-05-22T12:14:32.460 回答
0

很可能,HTK 期望的排序顺序非常幼稚,并且基于用于字符的字节序列。在这种情况下,É将出现在所有没有重音的字符之后。所以这个顺序是正确的:

EH
ENSKA
HENH
HAO'
KAHNAWAKE
KAHYÁ:TON'
É'THO

有关按字节序列排序的字符,请参见http://www.tamasoft.co.jp/en/general-info/unicode.html 。

于 2016-10-20T12:21:00.887 回答