В качестве платформы для нашей работы была использована плата Raspberry Pi 3. Наш выбор остановился на программе RHVoice для синтеза речи, т.к. она обладает простым управлением и имеет поддержку большого количества языков, разных голосов и быстрой скоростью обработки текста.

Основная команда синтеза речи в терминале для использования 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

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