Балаболка TTS

Программа "Балаболка" предназначена для воспроизведения звуков человеческого голоса с использованием любого речевого синтезатора, установленного на компьютере.

Модератор: balabolka

Ответить
Аватара пользователя
IgorItkin
Интересующийся

Балаболка TTS

#401

Сообщение IgorItkin »

Hi, maybe this was already asked. I am using a voice from Cere Voice. There is long pause at the comma ",". Is there a way to shorten the pause without deleting the the comma in the dictionary? I mean, there should be a pause but it should be shorter. Is this possible?

Thank you!

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

Балаболка TTS

#402

Сообщение good_cat »

The language of communication on the forum is Russian. You can use Google Translate if needed.

Язык общения на форуме - русский. При необходимости вы можете использовать Google Translate.

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

Балаболка TTS

#403

Сообщение balabolka »

IgorItkin писал(а):
06 авг 2020 18:19
I am using a voice from Cere Voice. There is long pause at the comma ",".
1. Файл настроек голоса CereVoice.

Если нужно изменить паузу после запятой именно для голосов от компании CereProc, то, насколько я помню, можно просто отредактировать файл настроек PBREAK.TXT внутри установленного голоса. (Раньше этого было достаточно; что касается последних версий их голосов - надо проверять.)

Файл PBREAK.TXT лежал здесь (для английских голосов):
c:\Program Files (x86)\CereProc\<voice_name>\veng_db\en\norm\
Внимание! Прежде чем редактировать файл, сохраните его копию во временной папке!
В файле PBREAK.TXT прописаны паузы после и до знаков препинания, в том числе и для запятой:

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

,	3     0.200 0	     0.000
Замените значение "0.200" (в секундах) на другое и сохраните файл. Перезапустите "Балаболку", и Вы услышите, что паузы после запятой изменились.

2. Окно настроек программы для чтения вслух.

Каких-либо специальных настроек для увеличения пауз после запятых в программе "Балаболка" нет (и я пока не собираюсь добавлять такую возможность). Рекомендую использовать программу "TextAloud": там есть такой раздел в окне настроек.

3. Правило для коррекции произношения.

В "Балаболке" можно использовать словарь для коррекции произношения, чтобы изменить паузу после запятой. Надо добавить правило, которое в тексте будет заменять символ "," на тег паузы:

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

<silence msec="100"/>
Не очень элегантный способ, но позволит добиться нужного результата.

Аватара пользователя
IgorItkin
Интересующийся

Балаболка TTS

#404

Сообщение IgorItkin »

Спасибо, 3. Шаг работает. Сожалению в первом шаги pbreak не существует. А можно паузу поставить только на определенный голос?

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

Балаболка TTS

#405

Сообщение balabolka »

IgorItkin писал(а):
06 авг 2020 22:29
А можно паузу поставить только на определенный голос?
Нет, такая возможность в "Балаболке" недоступна.

Увы, в текущей версии голосов CereProc отдельных файлов конфигурации больше нет. Раньше омографы, аббревиатуры, паузы, правила чтения дробей, римских чисел, дат и т.д. - всё это было доступно для редактирования, всё лежало в папке голоса в виде текстовых файлов или исходников на Python. Теперь есть лишь один огромный файл с расширением .VOICE. Это база данных собственного формата CereVoice.

Однако, изменить длительность паузы после запятой можно и сейчас. В конце этого огромного файла указаны смещения для наборов данных, и там есть значение смещения для раздела PBREAK.
Например: TPOBJ_PBREAK:DEFAULT = 1817451. :nasyalnika:

Если в двоичном редакторе перейти по этому смещению, можно найти всё те же знаки препинания, что были в старом файле PBREAK.TXT, а рядом с ними - порядковые номера ячеек, где хранятся значения пауз для каждого знака (в миллисекундах). Таблица значений идет следом за списком знаков препинания. Если знать, что знаки препинания идут в таком порядке:

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

.!?,-()[];:"
пауза для точки, знака восклицания, знака вопроса 400 миллисекунд (0x0190), пауза для запятой и дефиса 200 миллисекунд (0x00C8), то в редакторе можно быстро отыскать нужные значения и исправить их.

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

90 01 00 00 90 01 00 00 90 01 00 00 C8 00 00 00 C8 00 00 00
Если изменить "C8 00" на "64 00", пауза после запятой будет не 200 миллисекунд, а 100.
Внимание! Прежде чем редактировать файл .VOICE, сохраните его копию во временной папке.

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

Балаболка TTS

#406

Сообщение balabolka »

IgorItkin
For CereVoice the default length of pause at a comma is 200 milliseconds (hexadecimal value = C8). If you want to change this value, it is necessary to modify one byte in a voice file.
  1. Copy the .VOICE file to a temporary folder (always make a backup before updating).
  2. Open the .VOICE file in the hex editor (for example, freeware hex editor XVI32).
  3. Find the hex string in the file:
    90 01 00 00 90 01 00 00 90 01 00 00 C8 00 00 00 C8 00 00 00
  4. Modify the bold value to decrease a pause after commas (for example, "64" = 100 milliseconds).
  5. Save changes, exit the hex editor and restart Balabolka.

Аватара пользователя
IgorItkin
Интересующийся

Балаболка TTS

#407

Сообщение IgorItkin »

Спасибо большое за помощь. Я попробую и сообщу. :thank:

Аватара пользователя
IgorItkin
Интересующийся

Балаболка TTS

#408

Сообщение IgorItkin »

Я пытался найти эту строчку с помощью XVI32, но он пишет hex string not found. Я нашёл PBREAK:DEFAULT=2074020. Что мне нужно сделать?
hex.png
hex.png (464.07 КБ) 765 просмотров

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

Балаболка TTS

#409

Сообщение balabolka »

IgorItkin
Какое имя файла, в котором Вы выполняете поиск? Может быть, что-то изменилось в 6-ой версии речевого движка.

Используйте пункт главного меню "Address|Goto", укажите десятичное (decimal) значение "2074020". Перейдите к разделу PBREAK.
pbreak.png
pbreak.png (64.06 КБ) 756 просмотров

Аватара пользователя
IgorItkin
Интересующийся

Балаболка TTS

#410

Сообщение IgorItkin »

‎я очень извиняюсь но как то до меня не доходит что мне надо теперь делать. У меня не какова опыта нету с hex Editor. Я сделал последний шаг с go to и нахожусь теперь здесь.
Вложения
what now.png
what now.png (573.34 КБ) 719 просмотров

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

Балаболка TTS

#411

Сообщение balabolka »

IgorItkin
Видимо, для английского и немецкого языков используются разные паузы после знаков препинания. Это хорошо, а то начало казаться, что разработчики тупо использовали одни и те же круглые числа для задания всех пауз для всех голосов.

Ожидание: разработчики для каждого голоса подбирают значения пауз с точностью до миллисекунды, консультируются с лингвистами, проводят прослушивания аудиозаписей с участием профессиональных дикторов.
Реальность: для английского языка пауза после точки 400 мс, для немецкого 600 мс. Почему? По кочану.


На скриншоте отметил те ячейки, в которых хранятся значения пауз для знаков препинания. Символы идут в таком порядке:

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

.!?,-()[];:"
По четыре байта на каждый символ. Точка - 600 мс (58 02), затем значение для восклицательного знака, вопросительного знака, запятой (64). Ткните курсором мышки в ячейку со значением "64" и напечатайте свои два символа (например, "32"; это 50 мс). Всё, сохраните изменения и закройте редактор.
pause_alex.png
pause_alex.png (603.17 КБ) 718 просмотров

Аватара пользователя
IgorItkin
Интересующийся

Балаболка TTS

#412

Сообщение IgorItkin »

Я сделал что вы сказали, но изменения нету.

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

Балаболка TTS

#413

Сообщение balabolka »

IgorItkin писал(а):
09 авг 2020 15:45
Я сделал что вы сказали, но изменения нету.
Хм, странно. И что, вообще никаких изменений - если поменять значение в большую сторону, например? Вы убрали из словарей все правила, которые удаляют или заменяют запятую (или отключили словари в "Балаболке")?

Сколько вариантов голоса у Вас установлено? (Голоса CereVoice можно установить в 3 вариантах.) Какой именно файл указан в этом ключе системного реестра (параметр VoiceFile):

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

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens\CereVoice Alex 6.0.0\Attributes
Может быть, надо внести изменения в другой вариант файла .VOICE (тот, который указан в системном реестре).

Какое значение Вы установили для паузы после запятой? Исходное значение 100 мс (64) - сама по себе маленькая величина. Надо использовать паузу 10 мс (0A) или меньше, тогда разница сразу будет заметна на слух.

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

Балаболка TTS

#414

Сообщение balabolka »

Проверил файл cerevoice_alex_6.0.0_48k_standard.voice: значение для паузы после запятой находится по адресу 2074463 (четыре байта, 64 00 00 00). Менял значения, сохранял файл - длина паузы каждый раз меняется.

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

Балаболка TTS

#415

Сообщение balabolka »

IgorItkin
Получил ответ от службы поддержки CereProc: для изменения настроек пауз после и до знаков препинания можно использовать файл user_pbreak.txt в той же папке, где находится файл .VOICE.

Вот пример файла с паузами для английского языка (это тот же файл, что был в старых версиях голосов; поменялось только имя). Если требуется изменить только длину паузы после запятой, удалите строки с другими символами и оставьте строку с запятой.
Вложения
user_pbreak.zip
(386 байт) 23 скачивания

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

Балаболка TTS

#416

Сообщение wasyaka »

balabolka писал(а):
12 авг 2018 15:21
API-ключ для сервиса "Яндекс.Переводчик" был убран, так как 15 августа 2020 года "Яндекс" закрыл бесплатный доступ к этому сервису. Теперь сервис перевода входит в состав "Яндекс.Облака", и он платный (450 руб. за перевод мегабайта текста). Добавлять поддержку платного сервиса я пока не собираюсь
Всё хорошо - идём ко дну?
Yandex SpeechKit - приближается к этому?
(Ваше мнение)?
Пы СЫ
Яндекс Переводчик в Яндексе у меня денег не просит...:smile3:
Это привязка к местности или...?

Ответить

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