вторник, 9 ноября 2010 г.

Festival (Часть 3) - исправляем ошибки

Во время работы с программой у вас могут возникать ошибки, связанные с совершенно разными проблемами.Вот некоторые из них, наиболее распространенные, с которыми сталкивалась я и решения которых нашла на форумах.
  • Самая распространенная ошибка -
LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* + какое-то слово здесь.

1 причина: в своем вы использовали недопустимый символ, который Festival не умеет обрабатывать (об этом ниже).
 - поправьте скрипт.

2 причина: вы скрипт сами не писали, сделали Copy+Past с какого-то сайта, вставили в свой текстовый редактор и сохранили. Некоторые редакторы делают автоформатирование, например, меняют двойной дефис на одинарный, кавычки-двойные на кавычки-елочки.
 - воспользуйтесь другим редактором и вставьте скрипт с сайта туда.

3 причина: вы сделали Copy+Past с сайта, но вы точно уверены, что ваш редактор автоформатированием не занимается! Значит, автоформатированием занимается сайт, с которого вы копируете скрипт.
 - перепечатайте скрипт ручками.

4 причина: некоторые текстовые редкторы при сохранении файлов в UTF-8 в начало файла добавляют BOM (подпись UTF-8 в виде трёх байтов). Festival не воспринимает ее, как подпись, пытается обработать и не может.
 - воспользуйтесь другим редактором.

5 причина: вы заставляете Festival говорить одновременно на нескольких языках.
 - одна сессия - один язык.

  • У программы есть баг - не работает при включенном аудио- или видео-проигрывателе.
Чтобы это исправить, добавьте в файл /usr/share/festival/festival.scm в самый конец строчки:
(Parameter.set 'Audio_Method 'Audio_Command)

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FI

  • Не забывайте давать вашим скриптам право на исполнение.
 chmod +x script.sh (меняете script.sh на имя вашего скрипта)


Список распознаваемых символов:
lБуквы: A-z, А-я,
Символы: - ' + ? ! . , (+ специально используется для расстановки ударений)
Цифры: 0-9 
Список известных нераспознаваемых символов и их сочетаний:
/ (слеш)
«» (кавычки-елочки) 
?* (где * - один или более пробелов, например, "Как дела? Какие планы на сегодня?". Ставьте вместо пробела - точку, тогда будет работать. Или просто без пробела после вопросительного знака)
.* (где * - любой знак, кроме пробела. После точки всегда обязателен пробел).


Также не забывайте, что у самого скрипта, языка, на котором он написан, тоже есть определенные правила и грамматика.

3 комментария:

  1. Почему нельзя использовать кавычки ""? У меня по какой-то причине программа не понимает кавычки <<>>, поставил "" - всё работает. В причине не разобрался, второй день Убунту юзаю ибо))

    ОтветитьУдалить
  2. В файле msu_ru_nsh_lexicon.scm , который где-то в фестивальной папке лежит, описаны те символы, которые Фестиваль воспринимает - кавычки "", двоеточие, точка, тире и другие. Туда можно вручную добавить <<>> , или еще какой символ, который вас интересует) и тогда ошибка выскакивать не будет.
    Просто создатель не все предусмотрел:)

    ОтветитьУдалить
  3. У меня на ubuntu 16.04 `msu_ru_nsh_lexicon.scm` находится в:

    `/usr/share/festival/voices/russian/msu_ru_nsh_clunits/festvox/msu_ru_nsh_lexicon.scm`

    Мой хак для файла: https://gist.github.com/d9k/f6b7670d61e00840082dbc5d74be53f5

    Кстати, если в озвучиваемом тексте до запятой стоит любой символ, движок тоже упадёт :C

    ОтветитьУдалить