我已经进行了一个月的语音识别工作,并且发现了hmmlearn
软件包。我可以使用_model = hmm.GMMHMM(...)
和_model.fit(...)
创建音素模型。但是,当我想将_model.score(_extracted_test_features)用于测试样本时,出现此错误:
.format(self.covariance_type))ValueError:'diag'混合Covar必须 非负
这是我的代码:
def Main():
# ---
_phoneme_files_dir = './database_info/phonemes/phoneme_files/'
_phoneme_dataset_dir = './database_info/phonemes/extracted_features/'
_phoneme_models_dir = './database_info/phonemes/models/'
_phoneme_test = '/home/ali/speech_recognition/database/database_english/timit/data/lisa/data/timit/raw/TIMIT/TEST/DR1/FAKS0/SA1.wav'
# ---
_phoneme_test_features = ExtractFeatures(_phoneme_test, 9640, 11240)
_phoneme_models, _phoneme_models_list_loaded = LoadModels(_phoneme_models_dir)
print("Getting models has successfully done")
# ---
_score_list = {}
for _model_label in _phoneme_models.keys():
_model = _phoneme_models[_model_label][0]
_score = _model.score(_phoneme_test_features)
_score_list[_model_label] = _score
_predict = max(_score_list, key=_score_list.get)
print("predict result phoneme is ", _phoneme_models_list_loaded[_predict])
有人知道这个错误吗?我找到了一些解决方案,但是几年前,在那个hmmlearn软件包得到一些更新并修复了它们之后。
答案 0 :(得分:0)
通常,这意味着某些音素在训练期间没有足够的数据,并且您的模型训练不正确。您需要训练许多大于100的样本,仅几个样本就无法使用。
您可以打印模型值以检查是否为负。
最好使用诸如kaldi或espnet之类的专用工具包进行语音培训,HMMlearn不是正确的工具,不适用于语音。