Голос выбора фестивального блока Отсутствует дифон: # хэш
Немного предыстории: пытаясь создать голос выбора юнита, я выполнил следующие шаги: https://github.com/CSTR-Edinburgh/CSTR-Edinburgh.github.io/blob/master/_posts/2016-8-21-Multisyn_unit_selection.md и использовал голосовое определение отсюда: https://raw.githubusercontent.com/CSTR-Edinburgh/merlin/master/egs/hybrid_synthesis/s1/voice_definition_files/unit_selection/cstr_us_awb_arctic_multisyn.scm. К сожалению, wavs были слишком шумными, поэтому я в конечном итоге пометил их вручную и пропустил процесс автоматической маркировки.
Голос в порядке сейчас, но все еще нуждается в некоторой работе. Одна ошибка, которая возникает постоянно, это то, что фестиваль сообщает "Отсутствует дифон" для любой паузы при переходе на телефон, например:
festival> (utt.relation.print (SayText "I can say anything I want.") 'Unit)
Missing diphone: #_ay
diphone still missing, backing off: #_ay
backed off: #_ay -> #_ax
diphone still missing, backing off: #_ax
backed off: #_ay -> #_#
diphone still missing, backing off: #_#
backed off: #_ay ->
Missing diphone: ey_eh
Interword so inserting silence.
diphone still missing, backing off: ey_#
backed off: ey_eh -> ax_#
diphone still missing, backing off: ax_#
backed off: ey_eh -> #_#
diphone still missing, backing off: #_#
backed off: ey_eh ->
Missing diphone: #_eh
diphone still missing, backing off: #_eh
backed off: #_eh -> #_ax
diphone still missing, backing off: #_ax
backed off: #_eh -> #_#
diphone still missing, backing off: #_#
backed off: #_eh ->
Missing diphone: t_#
diphone still missing, backing off: t_#
backed off: t_# -> #_#
diphone still missing, backing off: #_#
backed off: t_# ->
Я пытался заменить sil
а также sp
(из автоматического процесса) в метках с pau
а также h#
(чтобы соответствовать тишине, используемой в festival/lib/radio_phones.scm), и я также попытался заменить их просто #
но это ничего не изменило. Исходные файлы wav / labs определенно содержат указанные выше переходы (например, некоторые начинаются с "Я могу"), но, похоже, фестиваль никогда не использует их.
Как я могу заставить фестиваль использовать паузу для телефонных переходов в исходных данных?
Спасибо!
1 ответ
То, что происходило, было, когда я запускал сценарий, основанный на выборе модуля Multisyn, часть build_utts не работала и пропускала, потому что метки, помеченные вручную, не соответствовали в точности тому, что предсказал Festival. Например, если говорящий сказал "экстремальный" как eh k s ...
но фестиваль будет рассчитывать ih k s ...
Сценарий build_utts завершится ошибкой, например:
align missmatch at ih (0.000000) eh (2.810566)
Я вручную запускал сценарий build_utts для каждого высказывания и соответственно корректировал метку. Если, как и я, вы достаточно глупы, чтобы попробовать пометить себе пару советов, которые мне помогли:
- Рассмотрите возможность удаления любых закрытий телефона, таких как
t_cl
или жеd_cl
поскольку они могут действительно испортить это, когда это пытается соответствовать Убедитесь, что есть пауза (т.е.
#
) в начале и в конце каждого высказывания, так как скрипт build_utts не будет жаловаться на это, но при запуске голоса в Festival вы получите ошибку вроде:-=-=-=-=-=- EST Error -=-=-=-=-=- {FND} Feature end not defined -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Спасибо @NikolayShmyrev за указание в правильном направлении. Он также рекомендовал использовать Ossian вместо Festival, который использует python, а не довольно сложный код Festival.