Получил ошибку при адаптации динамика UBM с сайдкитом

Я уже обучил модель UBM и теперь пытаюсь реализовать адаптацию динамика, когда получаю следующую ошибку.

Исключение: show enroll/something.wav отсутствует в файле HDF5.

У меня есть два файла «enroll» и «test» в файле «feat», который содержит соответственно функции (.h5) для обучения и тестирования, а мой enroll_idmap генерируется с аудио (.wav) только для обучения. И мои файлы wav и файлы feat разделены. Я думаю, что у меня проблема с idmap. «enroll/something.wav» — это правильный идентификатор моего enroll_idmap, но на что ссылается этот «файл 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")

А вот код спикер-адаптации, при выполнении 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
                        )

Кажется, это не большая проблема, но это останавливает меня на несколько дней, помогите, пожалуйста.


person yingzhi    schedule 17.04.2019    source источник
comment
Вам лучше попробовать xvector на калди   -  person Nikolay Shmyrev    schedule 19.04.2019


Ответы (1)


Наконец-то я решил эту проблему, изменив путь обучения и тестовых функций, сделав его вне «BASEDIR».

server_eval = sidekit.FeaturesServer(feature_filename_structure="./enroll/{}.h5",
                                     ...)
person yingzhi    schedule 23.04.2019