В качестве платформы для нашей работы была использована плата Raspberry Pi 3. Наш выбор остановился на программе RHVoice для синтеза речи, т.к. она обладает простым управлением и имеет поддержку большого количества языков, разных голосов и быстрой скоростью обработки текста. ====Установка RHVoice==== * sudo apt-get install scons gcc flite flite1-dev expat libunistring-dev libsox-dev * sudo apt-get install libasound-dev * sudo apt-get install libpulse-dev libao-dev * sudo git clone https://github.com/Olga-Yakovleva/RHVoice * cd RHVoice * sudo scons * sudo scons install * sudo ldconfig ====Основная команда синтеза речи в терминале для использования RHVoice==== * echo "Привет дорогой друг" | RHVoice-test -p anna ====Настройки языков в RHVoice==== Используется следующий формат: languages.<язык>.<параметр>=<значение> Язык можно задать одним из следующих способов: - Элемент нумерованного списка Английское название языка. - Двухбуквенный код языка, согласно ISO 639-1. - Трёхбуквенный код языка, согласно ISO 639-3. Примеры: * languages.russian.default_rate=2 * languages.eng.default_rate=0.8 ====Настройки голосов в RHVoice==== Используется следующий формат: voices.<имя>.<параметр>=<значение>. Пример: voices.elena.enabled=no ====Скорость, высота и громкость синтеза речи в RHVoice==== Настройки из данной группы определяют, как RHVoice должен интерпретировать значения скорости, высоты и громкости, которые он получает от программ-клиентов. По умолчанию все эти настройки принимают значение 1. Оно соответствует стандартному поведению голосов. Например, NVDA передаёт синтезатору значения скорости, выраженные в процентах. RHVoice интерпретирует 50% как скорость по умолчанию (default_rate), а 100% - как максимальную скорость (max_rate). В следующей таблице показаны все опции этой группы. ^ Параметр ^ Описание ^ | default_rate | скорость по умолчанию | | min_rate | минимальная скорость | | max_rate | максимальная скорость | | default_pitch | высота по умолчанию | | min_pitch | минимальная высота | | max_pitch | максимальная высота | | default_volume | громкость по умолчанию | | min_volume | минимальная громкость | | max_volume | максимальная громкость | Эти настройки можно задать как для синтезатора в целом, так и для отдельных языков и голосов. Примеры: * default_volume=0.8 * languages.russian.default_rate=1.5 * voices.aleksandr.default_pitch=0.9 ====Переключение языка и голосовые профили в RHVoice==== RHVoice может анализировать входной текст и автоматически переключать язык синтеза. Эта функциональность доступна только для языков, чьи алфавиты не включают общих букв. **Голосовые профили** Голосовой профиль - это просто выбранное пользователем сочетание голосов. Языки этих голосов должны отличаться. Первый голос в группе считается основным голосом и задаёт так называемый основной язык. Чтецы экрана и другие программы-клиенты будут включать голосовые профили в список доступных голосов. Исключение составляет Android, где, из-за особенностей этой платформы, пользовательские голосовые профили не учитываются. В конфигурационном файле голосовой профиль представляет собой последовательность имён голосов, разделённых знаком +. Набор голосовых профилей задаётся параметром voice_profiles. Его значение - список профилей, разделённых запятой. Пример: * voice_profiles=anna+slt,aleksandr+alan **Переключение языков** Когда активен один из голосовых профилей, RHVoice постарается использовать тот голос, который соответствует языку текста. Язык может быть задан программой-клиентом или определён автоматически. Если не удаётся определить язык, как при чтении отдельных чисел или названий знаков пунктуации, будет использован основной голос - первый голос профиля. Если же такие элементы, как числа или неалфавитные символы, встречаются внутри предложения, и RHVoice определил, что язык этого предложения отличается от основного, возможны два варианта поведения синтезатора: переключаться на основной голос при чтении этих элементов или читать всё предложение одним голосом, соответствующим языку. По умолчанию используется первый вариант, но пользователь может переопределить поведение синтезатора, отключив опцию prefer_primary_language: * prefer_primary_language=false ====Чтение пунктуации в RHVoice==== Несмотря на название, настройки этой группы относятся и к другим неалфавитным символам, даже если их нельзя, строго говоря, классифицировать как знаки препинания. **Режим чтения пунктуации** Этот режим задаётся параметром punctuation_mode. Доступны следующие варианты: ^ Значение ^ Описание ^ | none | Не читать (значение по умолчанию) | | some | Выборочное чтение | | all | Читать все знаки | Например, включить чтение всех знаков препинания можно следующим образом: * punctuation_mode=all **Выборочное чтение пунктуации** Параметр punctuation_list задаёт, какие именно знаки произносить при выборочном чтении. Например: * punctuation_list=@$/\ ====Заглавные буквы в RHVoice==== Следующие настройки определяют, будет ли синтезатор при чтении отдельных символов уведомлять пользователя, что буква является заглавной. **Режим индикации заглавных букв** Этот режим задаётся параметром indicate_capitals. Поддерживаются следующие значения: ^ Значение ^ Описание ^ | no отключить | (значение по умолчанию) | | word | произносить слово "заглавная" перед буквой | | pitch | изменять высоту голоса | | sound | подавать короткий звуковой сигнал | Пример: * indicate_capitals=pitch **Изменение высоты при произнесении заглавной буквы** Если включено изменение высоты голоса при чтении заглавных букв, то параметр cap_pitch_factor задаёт значение этого изменение. Эта настройка доступна как для синтезатора в целом, так и для отдельных голосов. Следующий пример устанавливает увеличение высоты на 30%: * cap_pitch_factor=1.3 ====Указание ударения в тексте в RHVoice==== Указание положения ударения в тексте поддерживается только для русского языка. Например, чтобы указать синтезатору, что следующая за знаком + гласная должна получить ударение, нужно прописать в конфигурационном файле: * stress_marker=+ ====Отключение отдельных языков и голосов в RHVoice==== **Отключение отдельных языков и голосов** Вы можете сделать некоторые языки и голоса недоступными программам-клиентам. Такая возможность может оказаться полезной, если вы не используете эти языки или голоса и не хотите, чтобы ваш чтец экрана их отображал. Следующий пример блокирует все английские голоса и Александра: * languages.english.enabled=false * voices.aleksandr.enabled=false ====Специальные настройки языков в RHVoice==== При чтении английского текста русские голоса могут переходить на так называемый псевдо-английский, то есть стараться по мере возможности следовать правильному английскому произношению. При этом они не могут использовать правильные английские звуки, а только примерные русские аналоги. Такой режим доступен, если установлен английский языковой пакет. При этом не обязательно устанавливать английские голоса. Поддержка псевдо-английского включается следующим образом: * languages.russian.use_pseudo_english=yes А отключается она, соответственно, так: * languages.russian.use_pseudo_english=no Поддержка псевдо-английского включена по умолчанию, если установлен английский языковой пакет.