Речевой синтезатор CRW-DAQ: @speak и @speech
В
CRW-DAQ встроен речевой синтезатор, основанный на
SAPI (
Speech API).
Активизируется консольной командой
@speech engine 1
с номером движка.
После активизации движка можно вызывать речевой синтезатор:
@speak Привет, мой друг!
Для управления речью существуют теги, например,
@speak \spd=150\ \pit=100\Привет, \pit=200\мой друг!
Фраза
"Привет, мой друг" будет сказана со скоростью 150 слов в минуту,
"Привет" будет сказано низким тембром (100),
"мой друг" - высоким тембром (200).
В данной статье описываются теги SAPI, которые можно применять при вызове @speak.
Примеры основных тегов:
@speak \Rst\Сброс всех тегов на значения по умолчанию.
@speak Пауза \Pau=1000\в речи на 1000 миллисекунд.
@speak Громкость речи \Vol=65535\по максимуму \Vol=0\по нулям.
@speak \Spd=100\Скорость речи 100 слов в минуту.
@speak Тон (тембр) речи в герцах \Pit=100\низкий \Pit=200\высокий.
@speak Читать \Pro=1\с интонацией или \Pro=0\без интонации (монотонно).
@speak Читать слова \RmS=1\по буквам \rms=0\нормальными словами.
@speak Подчеркнуть интонацией выражение \Emp\СЛЕДУЮЩЕГО слова.
@speak Не надо подчеркивать интонацией \Dem\СЛЕДУЮЩЕЕ слово.
Теги SAPI
Как пишут в буржуйской офицальной документации к
Microsoft Speech API:
SAPI поддерживает изменения речевого вывода через специальные теги, вставляемые в читаемую текстовую строку.
Эти теги помогают изменять параметры голосового движка для улучшения трансляции текста в речь.
Теги - это основной способ управления голосовыми возможностями речевого синтезатора.
Например:
\spd=100\ - этот тег изменяет скорость речи на значение равное
100 слов в минуту.
Вот некоторые правила синтаксиса для речевых тегов:
- Все теги начинаются и заканчиваются символом бэкслэша - наклонной черты влево (\).
- Отдельный бэкслэш не допускается в пределах тэга.
Чтобы включить бэкслэш в текстовый параметр тэга, используйте двойную наклонную черту влево (\\).
- Теги воспринимаются без учета регистра. Например, \Spd=100\ - тот же самый что и \SPD=100\.
- Теги пробеловосприимчивы, то есть не допускают в себе лишних пробелов.
Например, \Rst\ - не тот же самый что и \ Rst \.
- Теги создавались для корректировки преобразования текста в речь, но некоторые из них изменяют стиль голоса, например на шепот.
Поэтому одни из них имеют параметры, а у других они отсутствуют, как у тега \Emp\.
А теперь подробнее про каждый из тегов:
- \Rst\ Сбрасывает все теги на значения по умолчанию.
- \Pau=number\ Пауза в речи на указанное количество милисекунд.
(1сек = 1000 милисекунд).
- \Vol=number\ Громкость речи. Диапазон значений от 0 до 65535.
- \Spd=number\ Скорость речи. Количество слов в минуту.
Диапазон значений зависит от речевого синтезатора.
- \Pit=number\ Указывает тон (тембр) речи в герцах.
Диапазон значений зависит от речевого синтезатора.
- \Chr=string\ - Устанавливает тип голоса:
- \Chr=Normal\ (Default) - нормальный голос.
- \Chr=Monotone\ - монотонный.
- \Chr=Whisper\ - шепот.
Кроме того, допустимые значения этого тега могут меняться у разных движков,
то есть одни движки способны поддерживать какие-то значения, а другие не поддерживать часть из них.
- \Ctx=string\ Устанавливает тип содержимого читаемой строки:
- \Ctx=Address\ - Адрес и/или телефонный номер
- \Ctx=E-mail\ - мыло
- \Ctx=Unknown\ - неопределенный тип
Значение этого тега также может варьироваться в различных речевых движках
- \Pro=boolean\ - при значении 1 соблюдаются правила интонации.
При значении 0 голос приобретает монотонный оттенок.
- \RmS=boolean\ - при значении 1 читает слова по буквам.
При значении 0 нормальными словами.
- \Emp\ Подчеркнуть выражение следующего слова.
Выделяемое речью слово должно следовать сразу за тегом.
- \Dem\ - Антивыделение слова.
Тег обратный тегу \Emp\.
Так же как и в случае с командой Emp, слово, которое не должно выделяться речью,
обязано следовать непосредственно за тегом.
- \Lst\ Повторить последнее сказанное выражение
- \Map="spokentext"="balloontext"\
Тег указывает как должен отображаться читаемый текст в воздушном шарике.
Это удобно, когда нужно прочитать один текст, а показать вместо него другой.
Например, программа - словарь произношений, читает слово "юзер" как "йууузер",
при этом приходится пользоваться этим тегом, чтобы слово в воздушном шарике(в баллоне)
выглядело в нормальном виде.
Естественно, что этот тэг тоже поддерживается при чтении MSAgent, а не функциями API.
- \Mrk=number\ Тег определяет в тексте закладку.
Затем при чтении генерируется событие, которое можно обработать.
Число должно быть целочисленное, больше 0, и не равняться 2147483647 или 2147483646.
- \Eng=value\ - Дает небходимую команду напрямую речевому движку.
Поддерживаемые команды должны быть описаны в документации к синтезаторам речи.
Вот и все.
Успехов!