Преобразование одного типа MFCC в другой - HTK

Я работаю с набором инструментов HTK над задачей определения слов, и у меня классическое несоответствие данных обучения и тестирования. Данные обучения состояли только из «чистых» (записанных через микрофон) данных. Данные были преобразованы в MFCC_E_D_A параметры, которые затем были смоделированы с помощью HMM (на уровне телефона). Мои тестовые данные были записаны по стационарным и мобильным каналам (с возможными искажениями и т.п.). Использование параметров MFCC_E_D_A с HVite приводит к неправильному выводу. Я хочу использовать cepstral mean normalization с параметрами MFCC_E_D_A_Z, но это не принесет особой пользы, так как HMM не моделируются с этими данными. Мои вопросы заключаются в следующем:

  1. Можно ли как-нибудь преобразовать MFCC_E_D_A_Z в MFCC_E_D_A? Таким образом, я следую этому пути: input -> MFCC_E_D_A_Z -> MFCC_E_D_A -> HMM log likelihood computation.
  2. Есть ли способ преобразовать существующие HMM, моделирующие MFCC_E_D_A параметры, в MFCC_E_D_A_Z?

Если есть способ сделать (1) сверху, как будет выглядеть файл конфигурации для HCopy? Я написал следующий файл конфигурации HCopy для преобразования:
SOURCEFORMAT = MFCC_E_D_A_Z
TARGETKIND = MFCC_E_D_A
TARGETRATE = 100000.0
SAVECOMPRESSED = T
SAVEWITHCRC = T
WINDOWSIZE = 250000.0
USEHAMMING = T
PREEMCOEF = 0.97
NUMCHANS = 26
CEPLIFTER = 22
NUMCEPS = 12
ENORMALISE = T

Это не работает. Как я могу улучшить это?


person Sriram    schedule 29.07.2011    source источник


Ответы (1)


Вы должны понимать, что телефонные записи имеют другой диапазон частот, потому что они обрезаны в каналах. Обычно присутствует диапазон частот от 200 до 3500 Гц. Широкополосная акустическая модель обучается на диапазоне от 100 до 6800. Она не будет надежно декодировать телефонную речь, так как телефонная речь пропускает нужные частоты от 3500 до 6800. Это не связано с типом признака или нормировкой или искажением, вы просто не можете этого сделать. тот

Вам необходимо обучить исходную модель аудио, преобразованному в 8 кГц, или, по крайней мере, изменить параметры банка фильтров, чтобы они соответствовали диапазону частот телефона.

person Nikolay Shmyrev    schedule 29.07.2011
comment
Я реализовал CMN (Cepstral Mean Normalization) для аналогичной (не такой же) проблемы. Этот метод очень полезен, когда есть несоответствие между тестовыми и обучающими данными для распознавания речи. По этому вопросу несоответствия тестовых и обучающих данных имеется значительное количество литературы. Здесь у меня та же проблема, но в другой форме - иметь HMM в одной форме, а я хотел бы иметь их в другой. - person Sriram; 30.07.2011
comment
Продолжая вышеизложенное, я не совсем уверен, что преобразование в 8 кГц — это путь для этого. У меня нет столько данных/времени. Можно изменить банк фильтров, но как мне это сделать? - person Sriram; 30.07.2011
comment
› для похожей (не такой же) проблемы. Ничего похожего нет. CMN фактически уменьшает информацию, удаляя средний вектор из функций (поэтому это называется нормализацией). Да, это помогает справиться с несоответствием условий канала. Но вы пытаетесь сделать противоположное. Вы пытаетесь восстановить среднее из вектора признаков E_D_A_Z (который имеет среднее нормализованное), чтобы восстановить значения E_D_A, которые использовались во время обучения модели. Это невозможно сделать. То же самое и с вашей идеей починить средства в акустической модели. - person Nikolay Shmyrev; 30.07.2011
comment
В ПОРЯДКЕ. Теперь я понимаю. Было очень глупо с моей стороны ожидать, что какой-либо инструмент восстановит среднее значение после его удаления. Значит, решение этой проблемы заключается в переобучении всего набора HMM? - person Sriram; 30.07.2011
comment
Да, вам нужно переобучить их с правильным набором функций и правильными частотами банка фильтров. - person Nikolay Shmyrev; 30.07.2011