Теги для TTS
- Fenix
- Администратор
Теги для TTS
Для «речевых движков» (text-to-speech engine) в Microsoft SAPI предусмотрен набор управляющих тегов, которые можно помещать в текст, передаваемый движку для речевого синтеза. Эти теги позволяют менять параметры синтезируемой речи, как говорится, на лету.
Ниже приводится список управляющих тегов с кратким пояснением их назначения. Напомним, что поскольку персонажи Microsoft Agent используют для синтеза речи Microsoft SAPI, то и речь персонажей может быть размечена этими тегами.
Не стоит, однако, пытаться в обычном текстовом редакторе размечать текст управляющими тегами, так как по умолчанию синтезатор игнорирует такую разметку.
Теги речевой разметки оформляются согласно следующим правилам:
Тип голоса:
Тип читаемого текста:
Выделяет следующее слово
Повторить предыдущую инструкцию
Позволяет отображать один текст, а произносить другой:
Вставляет закладку
Вставляет паузу, в миллисекундах
Устанавливает частоту голоса в Герцах
Сбрасывает все установки к установкам по умолчанию
Устанавливает скорость речи
Устанавливает громкость речи: от 0 до 65535
Ниже приводится список управляющих тегов с кратким пояснением их назначения. Напомним, что поскольку персонажи Microsoft Agent используют для синтеза речи Microsoft SAPI, то и речь персонажей может быть размечена этими тегами.
Не стоит, однако, пытаться в обычном текстовом редакторе размечать текст управляющими тегами, так как по умолчанию синтезатор игнорирует такую разметку.
Теги речевой разметки оформляются согласно следующим правилам:
- Все теги начинаются и заканчиваются символом наклонной черты влево (\)
- Действие тега начинается со следующего за ним слова
- Отдельный бэкслэш не допускается в пределах тега. Чтобы включить бэкслэш в текстовый параметр тега, используйте двойную наклонную черту влево (\\)
- При обработке тегов регистр символов игнорируется
- Теги не допускают лишних пробелов
Код: Выделить всё
\Chr=string\
- Normal – нормальный (по-умолчанию)
Monotone – монотонный
Whisper – шепчущий
Код: Выделить всё
\Ctx=string\
- Address – адрес или телефонный номер
- E-mail – адрес электронной почты
- Unknown – неизвестный, любой (по-умолчанию)
Код: Выделить всё
\Emp\
Код: Выделить всё
\Lst\
Код: Выделить всё
\Map="spokentext"="balloontext"\
- Spokentext – текст для чтения
- Balloontext – текст для отображения
Код: Выделить всё
\Mrk=number\
Код: Выделить всё
\Pau=number\
Код: Выделить всё
\Pit=number\
Код: Выделить всё
\Rst\
Код: Выделить всё
\Spd=number\
Код: Выделить всё
\Vol=number\
- tonio_k
- V.I.P.
Теги для TTS
для SAPI5 в части для голосового движка IVONA длину паузы вместо многоточия указывал так:
...=< silence msec="500"/>
но столкнулся с такой проблемой. На смартфоне (ОС Андроид) с установленным голосовым движком IVONA Максим в обработанной в Демагоге книге в аудио-читалке @Voice Aloud Reader напрочь игнорировался тэг < silence msec="500"/>, хотя все остальные тэги фонемами читались на ура. Просто указать многоточие (...) - длина получаемой паузы меня не устраивала. Нашел такой вариант вставки паузы:
...=<speak><break time='500ms'/><speak>
в Демагоге этот тэг паузы <speak><break time='500ms'/><speak> - тоже срабатывает.
...=< silence msec="500"/>
но столкнулся с такой проблемой. На смартфоне (ОС Андроид) с установленным голосовым движком IVONA Максим в обработанной в Демагоге книге в аудио-читалке @Voice Aloud Reader напрочь игнорировался тэг < silence msec="500"/>, хотя все остальные тэги фонемами читались на ура. Просто указать многоточие (...) - длина получаемой паузы меня не устраивала. Нашел такой вариант вставки паузы:
...=<speak><break time='500ms'/><speak>
в Демагоге этот тэг паузы <speak><break time='500ms'/><speak> - тоже срабатывает.
- Evlanov
- Прохожий
Теги для TTS
Есть ли возможность с помощью тега проиграть звуковой файл, например: <playfile name="c:\tast.wav">text</>
- tonio_k
- V.I.P.
Теги для TTS
как я понимаю, тэги это команда голосовому движку. Голосовой движок не управляет файлами на ПК. А вот можно ли объяснить Балаболке или Демагогу что встретив такой то тэг не передавать его голосовому движку, а запустить такой то файл... Спросите у разработчиков выше названных читалок
- balabolka
- V.I.P.
Теги для TTS
В Балаболке такая возможность есть; загляните в раздел "Использование аудиоклипов" в файле справки программы. Код вставки звукового файла будет выглядеть так:
Код: Выделить всё
{{Audio=C:\Sounds\ring.wav}}
- tonio_k
- V.I.P.
Словари для IVONA TTS 1.6.75. Обсуждение, предложения
словарь 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
Поэтому я и рекомендую:
Отправлено спустя 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. Обсуждение, предложения
1. Если размер такой части текста большой, то рекомендую удалить ее перед записью звукового файла. Создать копию текстового файла, специально для создания аудиофайла, и удалить всё лишнее. Будет две копии текста - для просмотра и для записи.
2. Еще можно для такой части текста установить громкость речи, равной 0:
Код: Выделить всё
текст <volume level="0">беззвучный текст</volume> текст
Код: Выделить всё
Это беззвучный текст.=
- tonio_k
- V.I.P.
Словари для IVONA TTS 1.6.75. Обсуждение, предложения
Больше подходит 2 вариант. Жаль нет такого тэга типа REM в DOS
Поясню зачем вообще это понадобилось. Не всегда с собой плеер, а вот смартфон всегда с собой. Так что разбив на сериалы текст и записав его в аудио для плеера, можно параллельно обьеденить все сериалы в одну книгу и кинуть её на смартфон и там его прослушивать. Каждый сериал идёт с номером блока в шапке теста. И вот мне нужно было, что бы в mp3 блоки не озвучивались - на дисплее и так виден номер файла, а на смартфоне тот же номер блока не не должен озвучиваться, зато в самом тексте нумерация видна. И быстро найти место остановки чтения не будет составлять трудности.
Поясню зачем вообще это понадобилось. Не всегда с собой плеер, а вот смартфон всегда с собой. Так что разбив на сериалы текст и записав его в аудио для плеера, можно параллельно обьеденить все сериалы в одну книгу и кинуть её на смартфон и там его прослушивать. Каждый сериал идёт с номером блока в шапке теста. И вот мне нужно было, что бы в mp3 блоки не озвучивались - на дисплее и так виден номер файла, а на смартфоне тот же номер блока не не должен озвучиваться, зато в самом тексте нумерация видна. И быстро найти место остановки чтения не будет составлять трудности.
- balabolka
- V.I.P.
Словари для IVONA TTS 1.6.75. Обсуждение, предложения
Можно добавить его поддержку с помощью регулярного выражения в словаре REX:
Код: Выделить всё
^REM.*=
Код: Выделить всё
//.*=
Можно использовать такой способ добавления комментариев: /*комментарий*/текст // комментарий
Тогда для удаления многострочных комментариев можно воспользоваться этим правилом:
Код: Выделить всё
/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/=
Как хорошо, что сейчас программа "Балаболка" корректно применяет регулярные выражения к нескольким строкам текста сразу.текст /* это
многострочный
комментарий */ текст
- tonio_k
- V.I.P.
Словари для IVONA TTS 1.6.75. Обсуждение, предложения
Сериалы у меня формируются в Демагоге. Там чуть чуть проще ситуация. Текст для озвучки блока вставляется в сам текст файла сериала. Можно в настройках программы указать: "Блок %2", (где %2 - автоматически нумерация). Вместо этого я укажу, как вы мне выше советовали <volume level="0">Блок %2</volume> и получу что нужно. В Балаболке, вроде, так же можно сделать: "Сохранить как несколько аудиофайлов" -"Произносить номер блока". Дело в том, что на смартфоне нет Балаболки, и Максим там будет читать только текст, прошедший обработку в Балаболке/Демагоге со всеми изменениями в тексте и с подставленными фонемами прямо в текст. То что понятно будет только Балаболке не будет понятно читалке на смартфоне. Там будет"чистый" движок без словарей. Все замены по словарям будут сделаны предварительно на ПК. Поэтому вариант с уменьшением громкости выглядит пока единственным выходом.
Попробовал на смартфоне, <volume level="0">Блок %2</volume> - не срабатывает .
У меня подобное было, когда на смартфоне не работала пауза в виде: <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>
Игнорирует с лёгкой паузой. Теоретически сломанный ТЭГ может привести к крашу, так что применять на свой страх и риск
Попробовал на смартфоне, <volume level="0">Блок %2</volume> - не срабатывает .
У меня подобное было, когда на смартфоне не работала пауза в виде: <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>
Игнорирует с лёгкой паузой. Теоретически сломанный ТЭГ может привести к крашу, так что применять на свой страх и риск