【问题标题】:Got an error during UBM speaker-adaptation with sidekit在使用 Sidekit 进行 UBM 扬声器适配期间出错
【发布时间】:2019-09-07 11:33:48
【问题描述】:

我已经训练了一个 UBM 模型,现在我正在尝试实现扬声器自适应,但出现以下错误。

例外:显示注册/something.wav 不在 HDF5 文件中

我在文件“feat”下有两个文件“enroll”和“test”,分别包含用于训练和测试的特征(.h5),并且我的enroll_idmap 是用音频(.wav)生成的,仅用于训练。而且,我的 wav 文件和 feat 文件是分开的。我想我遇到了 idmap 的问题。 “enroll/something.wav”是我的enroll_idmap的rightid,但是那个“HDF5文件”指的是什么?

谁能告诉我这个错误是什么意思以及如何解决它?

这是我的enroll_idmap的代码

def __init__(self):
    BASE_DIR = "./Database/sidekit_data"
    self.AUDIO_DIR = os.path.join(BASE_DIR, "audio")
    self.FEATURE_DIR = os.path.join(BASE_DIR, "feat")
    self.TASK_DIR = os.path.join(BASE_DIR, "task")    

def create_idMap(self, group):
    # Make enrollment (IdMap) file list
    group_dir = os.path.join(self.AUDIO_DIR, group) # enrollment data directory
    group_files = os.listdir(group_dir)
    group_models = [files.split('_')[0] for files in group_files] # list of model IDs
    group_segments = [group+"/"+f for f in group_files]

    # Generate IdMap
    group_idmap = sidekit.IdMap()
    group_idmap.leftids = np.asarray(group_models)
    group_idmap.rightids = np.asarray(group_segments)
    group_idmap.start = np.empty(group_idmap.rightids.shape, '|O')
    group_idmap.stop = np.empty(group_idmap.rightids.shape, '|O')
    if group_idmap.validate():
        group_idmap.write(os.path.join(self.TASK_DIR, group+'_idmap.h5'))
    else:
        raise RuntimeError('Problems with creating idMap file')

然后我得到了enroll_idmap和test_idmap:

create_idMap("enroll")
create_idMap("test")

这是speaker-adaptation的代码,上面的错误是在enroll_stat.accumulate_stat(…)的执行过程中出现的:

BASE_DIR = "./Database/sidekit_data"

enroll_idmap = sidekit.IdMap.read(os.path.join(BASE_DIR, "task", "enroll_idmap.h5"))

ubm = sidekit.Mixture()    
model_name = "ubm_{}.h5".format(NUM_GUASSIANS)    
ubm.read(os.path.join(BASE_DIR, "ubm", model_name))

server_eval = sidekit.FeaturesServer(feature_filename_structure="./Database/sidekit_data/feat/{}.h5",
                                     ...
                                     ...)

print("Compute the sufficient statistics")

enroll_stat.accumulate_stat(ubm=ubm,
                        feature_server=server_eval,
                        seg_indices=range(enroll_stat.segset.shape[0]),
                        num_thread=nbThread
                        )

这似乎不是什么大问题,但它让我停了几天,请帮忙。

【问题讨论】:

  • 你最好在 kaldi 中试试 xvector 的东西

标签: python machine-learning speech-recognition voice-recognition sidekit


【解决方案1】:

我终于通过更改训练和测试功能的路径解决了这个问题,使其在“BASEDIR”之外

server_eval = sidekit.FeaturesServer(feature_filename_structure="./enroll/{}.h5",
                                     ...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2014-12-21
    • 2019-06-17
    • 2012-09-29
    • 1970-01-01
    相关资源
    最近更新 更多