Теги для TTS

Ответить
Аватара пользователя
Fenix
Администратор

Теги для TTS

#1

Сообщение Fenix »

Для «речевых движков» (text-to-speech engine) в Microsoft SAPI предусмотрен набор управляющих тегов, которые можно помещать в текст, передаваемый движку для речевого синтеза. Эти теги позволяют менять параметры синтезируемой речи, как говорится, на лету.

Ниже приводится список управляющих тегов с кратким пояснением их назначения. Напомним, что поскольку персонажи Microsoft Agent используют для синтеза речи Microsoft SAPI, то и речь персонажей может быть размечена этими тегами.
Не стоит, однако, пытаться в обычном текстовом редакторе размечать текст управляющими тегами, так как по умолчанию синтезатор игнорирует такую разметку.

Теги речевой разметки оформляются согласно следующим правилам:
  • Все теги начинаются и заканчиваются символом наклонной черты влево (\)
  • Действие тега начинается со следующего за ним слова
  • Отдельный бэкслэш не допускается в пределах тега. Чтобы включить бэкслэш в текстовый параметр тега, используйте двойную наклонную черту влево (\\)
  • При обработке тегов регистр символов игнорируется
  • Теги не допускают лишних пробелов
Список тегов речевой разметки

Код: Выделить всё

\Chr=string\
Тип голоса:
  • Normal – нормальный (по-умолчанию)
    Monotone – монотонный
    Whisper – шепчущий

Код: Выделить всё

\Ctx=string\
Тип читаемого текста:
  • Address – адрес или телефонный номер
  • E-mail – адрес электронной почты
  • Unknown – неизвестный, любой (по-умолчанию)
Выделяет следующее слово
Повторить предыдущую инструкцию

Код: Выделить всё

\Map="spokentext"="balloontext"\
Позволяет отображать один текст, а произносить другой:
  • Spokentext – текст для чтения
  • Balloontext – текст для отображения

Код: Выделить всё

\Mrk=number\
Вставляет закладку

Код: Выделить всё

\Pau=number\
Вставляет паузу, в миллисекундах

Код: Выделить всё

\Pit=number\
Устанавливает частоту голоса в Герцах
Сбрасывает все установки к установкам по умолчанию

Код: Выделить всё

\Spd=number\
Устанавливает скорость речи

Код: Выделить всё

\Vol=number\
Устанавливает громкость речи: от 0 до 65535

Аватара пользователя
MDenis2
Наблюдатель

Теги для TTS

#2

Сообщение MDenis2 »

Это же для SAPI4. Они же не совместимы с SAPI5

Аватара пользователя
tonio_k
V.I.P.

Теги для TTS

#3

Сообщение tonio_k »

для SAPI5 в части для голосового движка IVONA длину паузы вместо многоточия указывал так:
...=< silence msec="500"/>
но столкнулся с такой проблемой. На смартфоне (ОС Андроид) с установленным голосовым движком IVONA Максим в обработанной в Демагоге книге в аудио-читалке @Voice Aloud Reader напрочь игнорировался тэг < silence msec="500"/>, хотя все остальные тэги фонемами читались на ура. Просто указать многоточие (...) - длина получаемой паузы меня не устраивала. Нашел такой вариант вставки паузы:
...=<speak><break time='500ms'/><speak>
в Демагоге этот тэг паузы <speak><break time='500ms'/><speak> - тоже срабатывает.

Аватара пользователя
Evlanov
Прохожий

Теги для TTS

#4

Сообщение Evlanov »

Есть ли возможность с помощью тега проиграть звуковой файл, например: <playfile name="c:\tast.wav">text</>

Аватара пользователя
tonio_k
V.I.P.

Теги для TTS

#5

Сообщение tonio_k »

Evlanov писал(а):
24 июл 2018 20:41
проиграть звуковой файл
как я понимаю, тэги это команда голосовому движку. Голосовой движок не управляет файлами на ПК. А вот можно ли объяснить Балаболке или Демагогу что встретив такой то тэг не передавать его голосовому движку, а запустить такой то файл... Спросите у разработчиков выше названных читалок

Аватара пользователя
balabolka
V.I.P.

Теги для TTS

#6

Сообщение balabolka »

Evlanov писал(а):
24 июл 2018 20:41
Есть ли возможность с помощью тега проиграть звуковой файл
В Балаболке такая возможность есть; загляните в раздел "Использование аудиоклипов" в файле справки программы. Код вставки звукового файла будет выглядеть так:

Код: Выделить всё

{{Audio=C:\Sounds\ring.wav}}
Поддерживаются форматы WAV, MP3, OGG. При записи речи содержимое аудиоклипа будет вставлено в итоговый звуковой файл (будет выполнен ресемплинг).

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#7

Сообщение tonio_k »

wasyaka писал(а):
02 июл 2018 21:52
Т. е. все на всё ошибочно исправлять допускается? А словарик отключить?
словарь 3_vse_vsyo.rex условно состоит из 2 разделов:
1) заменяет все=>всЁ
2) заменяет всЁ=все
Так вот, смысл 2части словаря это "подчищать" за результатами работы первой части.
Условный пример (цифры взяты с потолка но для передачи смысла пойдет):
1) заменяет все=>всЁ - допустим сделано 100 замен, из них ложных срабатываний 40 (100-40=60)
2) заменяет всЁ=все - допустим сделано 30 замен из них ложных 15 (30-15=15)
В итоге работы всего словаря 3_vse_vsyo.rex получаем 100 замен, из них (60+15=75 правильных) и всего 25 ложных. Так что словари отключить - не выгодно.
Если в книге автор (ну или кто электронный вариант книги готовил) сам в тексте указал 100 раз "всЁ", то есть вероятность, что несколько из этой сотни будет ошибочно заменено обратно на "все" вторым разделом словаря 3_vse_vsyo.rex
Поэтому я и рекомендую:
tonio_k писал(а):
02 июл 2018 13:25
в самом начале словаря поставить строку: \bвсё\b=всеъ, а в самом конце строку:\bвсеъ\b=всё



Отправлено спустя 8 минут 17 секунд:
Fenix писал(а):
28 июн 2018 11:00
у кого возникает проблема с "быстрым проговариванием без паузы на одном дыхании" оглавление текста в начале книги типа:

Роман Злотников

ШАГ К ЗВЕЗДАМ

Пролог
Блаблабла
Блаблабла
Блаблабла
....
конец книги.

в 2_corector_ivona_ru.rex нужно добавить строчку
([A-Za-zА-яЁё]|\,)(\r)(\n)=$1<silence msec="500"/>
Сейчас такой вариант применяю:
# Вставка паузы в разрывы абзацев. Обычно в начале книги
(\w+)[^\.:,!?-]$=$1 <speak><break time="500ms"/><speak>
(\r)(\n)(\r)(\n)=$& <speak><break time="500ms"/><speak>



Отправлено спустя 5 дней 12 часов 29 минут 47 секунд:
Подскажите, как выделить часть текста в книге, что бы его Максим не читал? Что-то вроде комментария для чтения "визуально", но не для произношения "вслух".

Аватара пользователя
balabolka
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#8

Сообщение balabolka »

tonio_k писал(а):
16 окт 2018 09:47
Подскажите, как выделить часть текста в книге, что бы его Максим не читал? Что-то вроде комментария для чтения "визуально", но не для произношения "вслух".
1. Если размер такой части текста большой, то рекомендую удалить ее перед записью звукового файла. Создать копию текстового файла, специально для создания аудиофайла, и удалить всё лишнее. Будет две копии текста - для просмотра и для записи.

2. Еще можно для такой части текста установить громкость речи, равной 0:

Код: Выделить всё

текст <volume level="0">беззвучный текст</volume> текст
3. Можно весь абзац текста вставить в правило в словаре DIC (или как обычный текст в словаре BXD):

Код: Выделить всё

Это беззвучный текст.=

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#9

Сообщение tonio_k »

:thank: Больше подходит 2 вариант. Жаль нет такого тэга типа REM в DOS
Поясню зачем вообще это понадобилось. Не всегда с собой плеер, а вот смартфон всегда с собой. Так что разбив на сериалы текст и записав его в аудио для плеера, можно параллельно обьеденить все сериалы в одну книгу и кинуть её на смартфон и там его прослушивать. Каждый сериал идёт с номером блока в шапке теста. И вот мне нужно было, что бы в mp3 блоки не озвучивались - на дисплее и так виден номер файла, а на смартфоне тот же номер блока не не должен озвучиваться, зато в самом тексте нумерация видна. И быстро найти место остановки чтения не будет составлять трудности.

Аватара пользователя
balabolka
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#10

Сообщение balabolka »

tonio_k писал(а):
16 окт 2018 14:25
Жаль нет такого тэга типа REM в DOS
Можно добавить его поддержку с помощью регулярного выражения в словаре REX: Напишите "REM" в начале строки, и текст абзаца исчезнет. Хотя я бы рекомендовал использовать символы "//" как стандартный способ добавления комментариев:
текст // комментарий
Можно использовать такой способ добавления комментариев: /*комментарий*/
Тогда для удаления многострочных комментариев можно воспользоваться этим правилом:

Код: Выделить всё

/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/=
текст /* это
многострочный
комментарий */ текст
Как хорошо, что сейчас программа "Балаболка" корректно применяет регулярные выражения к нескольким строкам текста сразу.

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#11

Сообщение tonio_k »

Сериалы у меня формируются в Демагоге. Там чуть чуть проще ситуация. Текст для озвучки блока вставляется в сам текст файла сериала. Можно в настройках программы указать: "Блок %2", (где %2 - автоматически нумерация). Вместо этого я укажу, как вы мне выше советовали <volume level="0">Блок %2</volume> и получу что нужно. В Балаболке, вроде, так же можно сделать: "Сохранить как несколько аудиофайлов" -"Произносить номер блока". Дело в том, что на смартфоне нет Балаболки, и Максим там будет читать только текст, прошедший обработку в Балаболке/Демагоге со всеми изменениями в тексте и с подставленными фонемами прямо в текст. То что понятно будет только Балаболке не будет понятно читалке на смартфоне. Там будет"чистый" движок без словарей. Все замены по словарям будут сделаны предварительно на ПК. Поэтому вариант с уменьшением громкости выглядит пока единственным выходом.
Попробовал на смартфоне, <volume level="0">Блок %2</volume> - не срабатывает :sad: .
У меня подобное было, когда на смартфоне не работала пауза в виде: <silence msec="500"/>, зато в таком виде работала: <speak><break time="500ms"/><speak>.
Может есть еще вариант написания <volume level="0">Блок %2</volume>?
<speak><volume level="0">Блок %2</volume><speak> - так тоже не работает.


Отправлено спустя 2 часа 43 минуты 43 секунды:
Вспомнил случай, когда неправильно составленный ТЭГ приводил к его игнорированию. Собственно мне это и нужно:
<volume level="Блок 3"></volume>
Игнорирует с лёгкой паузой. Теоретически сломанный ТЭГ может привести к крашу, так что применять на свой страх и риск :wink:

Ответить

Вернуться в «Обработка звука»