python - 当我在 hmmlearn 包中使用 model.score 时,为什么会出现“'diag' mix covars must be non-negative”错误?
问题描述
我一直在努力继续语音识别一个月,我找到了hmmlearn
包。我可以使用_model = hmm.GMMHMM(...)
和创建我的音素模型_model.fit(...)
。但是当我想使用 _model.score(_extracted_test_features) 测试样本时,我得到了这个错误:
.format(self.covariance_type)) ValueError: 'diag' mix covars must be non-negative
这是我的代码:
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 包得到了一些更新并修复了它们。
解决方案
通常这意味着某些音素在训练期间没有足够的数据,并且您的模型没有正确训练。你需要很多大于 100 的样本来训练,只有几个样本是行不通的。
您可以打印模型值以检查哪些是负数。
最好使用 kaldi 或 espnet 等专业工具包进行语音训练,HMMlearn 不是正确的工具,它没有正确实现语音。
推荐阅读
- c# - 快速查找 IPv6 是否属于网络范围的方法
- arrays - 使用 swift 优化旅行双循环
- android - Android 4.4 设备进入待机模式时如何恢复后台服务?
- javascript - 从数组中获取特定数据并放入其他数组
- junit - AEM Mockito 单元测试问题
- rest - Google Cloud Storage API 访问(通过 JWT 服务器到服务器)“Invalid grant_type”问题
- r - 如何将向量的一部分提取到另一个向量(包括位置)
- hyperledger-fabric - 尝试启动测试网络时出错
- typescript - 如何使用预定义的键创建对象接口?
- docker - 我已经部署了带有它的服务的 Pod,我得到:未能连接到端口 80