Голос выбора фестивального блока Отсутствует дифон: # хэш

Немного предыстории: пытаясь создать голос выбора юнита, я выполнил следующие шаги: 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.

Другие вопросы по тегам