"Балаболка" будет вставлять знак ударения после фонемы ударной гласной в IPA, если выполняются два условия:голос русский (в программе в списке голосов для этого речевого движка указано "Русский (Россия)"); в названии голоса присутствует слово "Microsoft".
Иначе программа будет вставлять знак ударения перед началом слога.
Да, я тоже так подумала и прописала в реестре в атрибутах Светланы и Дмитрия имена с microsoft, но всё оказалось не так просто. Например, в реестре Дмитрий-брутал в атрибуте name стоит Dmitry_brutal без microsoft, а в списке балаболки отображается название с microsoft. Точно также со старой версией Светланы. А вот с новой Светланой и просто Дмитрием - совсем наоборот. В атрибутах реестра "mcrosoft" есть, поскольку я сама его туда вписала, а в списке голосов балаболки - нет. Так что дело, похоже, не в реестре и не в балаболке, а в самих голосах. Где-то этот "microsoft" вписан или не вписан совсем в другом месте. Во всяком случае, в .ini и .xml файлах самих голосов, как и в реестре, я не нашла ничего, что могло бы объяснить подобное поведение
Дата: Воскресенье, 23.11.2025, 12:03 | Сообщение #79
Группа: Пользователи
Сообщений: 12
Статус: Offline
Недавно я установил оффлайн Edge TTS голоса и обнаружил что в онлайн версии между предложениями есть заметные паузы. Пример:
Aria Онлайн: 23 Оффлайн: 16
Запись выдавал аналогичные результаты, так что проблема явно была не в задержке до сервера.
На всякий случай отмечу что у меня подредактирован реестр в соответствии с этой рекомендацией.
Тест проводился на голосе Microsoft Aria Online на стандартных настройках при помощи этого текста:
Код
The sun rose early. Birds sang in the garden. A thin mist lay over the field. I stepped onto the porch. The cold air refreshed me. Coffee hissed warmly in the cup. The cat rubbed my pant leg. Children laughed nearby. The wind stirred the leaves. The day promised to be calm.
Паузы между предложениями связаны с правилами коррекции произношения и отчасти с наличием словарей.
Тесты проводились на приведённом выше англ. отрывке, голосом Aria Online.
v2.15.0.886 В файл, без словарей: 19 В файл, со словарём: 24 Вслух, без словарей: 21 Вслух, со словарём: 23
После этих результатов я попробовал поменять правила коррекции (Изначально стоял комбинированный).
Вслух, со словарями: Комб/абзац: 24 Предложение: 22
Запись, со словарями: Комб/абзац: 23.58 Предложение: 18.13
Тут, судя по всему, и кроется почему изначально у меня и в записи были паузы. Без словаря пауз не будет при любом типе коррекции.
После этого я протестировал новые версии, и в них при любом типе коррекции в файл записываются паузы. Однако, самое любопытное, что если в новой версии включить исправление пауз в голосах Microsoft и поставить коррекцию по предложениям, то читать вслух программа будет без пауз.
Таким образом, чтение вслух происходит быстрее в новых версиях (19 vs 21 секунда), а запись без пауз возможна лишь в старых версиях.
Напомню, изначально я сравнивал оффлайн и онлайн версии, и там вслух результат был 16 против 23 секунд. В новой версии с иной коррекцией это уже 16 против 19. В записи это 16.1 против 18.1, но лишь в старых версиях.
Изначально я предполагал что эти паузы - свойство голоса т.к. в браузере Edge они тоже были, но сейчас уже не уверен. Браузерную версию я с секундомером не замерял, так что мне могло и показаться. Однако, по впечатлениям, оффлайн версия чуть быстрее читает.
Также я предполагал что голоса Ava и Emma задержку не имели, но, при сравнении, даже у них паузы стали чуть меньше. Может быть они просто имеют меньшую "естественную" паузу?
По итогу тут есть два вывода:
При чтении пауз нет лишь при коррекции по предложениям.
В последней версии невозможно записать файл без пауз.
Видимо, настройка исправления пауз для голосов Microsoft не применяется при записи. А изменение в этой версии добавило паузы даже при коррекции по предложениям.
На всякий случай я также провел тест на чтение вслух на оффлайн голосах на том же тексте с включённым словарём:
Zira комб 20 Zira пред 23
Mark комб 19 Mark пред 21
George пред 22 George комб 21
И оффлайн версии EdgeTTS:
Jenny комб 13 Jenny пред 14
Aria комб 17 Aria пред 17
Как видно, для оффлайн тип коррекции не добавляет пауз, а порой комб. может быть предпочтительнее. Разве что Zira выглядит подозрительно.
Возможно ли исправить задержку при комб/абзац коррекции и записи в файл? Или паузы между предложениями - это свойство голоса и паузы и должны быть такими, просто при коррекции по предложениям программа не отправляет абзац, а лишь сами предложение, сама делая паузы между предложениями?
Паузы у Aria 23 с комб/абзац, а с пред 19. А вот у Ava это уже 19 и 18. Может в голосе Ava, Emma и дригих, у которых есть мультиязычная версия, паузы сделали меньше по умолчанию? А вот опробованные мною не-мульти голоса паузы имели.
Я сейчас ещё установил расширение MS Edge TTS на Firefox, и там голос Aria возвращает аудиофайл на 24 секунды, что тоже намекает что это паузы по умолчанию. Ava там даёт файл на 20 секунд, что ближе к 19 что идёт в комб/абзац режиме.
Если это естественные паузы, то у не-мульти голосов они слишком долгие. Но и отсутствие пауз тоже немного режет слух, хоть и чуть лучше изначального варианта. Можно использовать способ коррекцией по предложениям и самому добавить тишины по вкусу в настройке пауз, но это не столь удобно т.к. паузы будут применены и к голосам, которые в них не нуждаются.
Сообщение отредактировал Kei - Воскресенье, 23.11.2025, 13:16
Дата: Воскресенье, 23.11.2025, 22:43 | Сообщение #80
V.I.P.
Группа: Модераторы
Сообщений: 225
Статус: Offline
Kei Несколько раз прочёл Ваш пост, но так и не понял до конца, что именно Вам нужно. Коротко могу ответить, что ранее "Балаболка" при записи в звуковой файл делила текст на предложения; сейчас программа делит текст на абзацы. Если сейчас при записи звукового файла появляются паузы между предложениями внутри абзаца - это паузы самого голоса: так было задумано разработчиками синтезатора речи.
Для новых голосов Microsoft (online, natural) эта пауза равна 750 миллисекундам. Теоретически ее можно изменить, если программа будет оформлять каждый запрос к голосу как SSML (можно задать паузы между предложениями, в начале текста, в конце текста). Но "Балаболка" не использует SSML: поддерживаются лишь XML-теги SAPI 5.
С паузами вот какая ситуация. Программа делит текст на части, и отправляет каждую часть голосу; голос возвращает аудиоданные, и там будут три вида пауз:
пауза в начале аудиоданных; теоретически она должна быть очень маленькой, но разные голоса вставляют тишину разной длины, до 100-150 мс;
пауза в конце аудиоданных; она может быть очень разной - до нескольких сотен или даже тысяч миллисекунд;
паузы между предложениями внутри аудиоданных; это всё на усмотрение голоса - он сам определяет длину паузы между предложениями.
Соответственно, когда раньше "Балаболка" делила текст на предложения, то присутствовали лишь два вида пауз - в начале аудиоданных и в конце аудиоданных, полученных от голоса. Суммарная длина этих пауз (в конце одного предложения и в начале следующего) была непредсказуемой: от нескольких миллисекунд до секунды и больше.
Сейчас внутри абзаца длина пауз задана разработчиками конкретного голоса: это их решение; я не несу ответственности за выбранные ими значения. Длина пауз между абзацами всё также остается непредсказуемой: действительно, для некоторых голосов пауза между абзацами может быть даже меньше паузы между предложениями.
Как я понял, Вы хотите, чтобы при записи аудиофайла "Балаболка" делила текст на предложения (как было в старых версиях). Не могу обещать, что сделаю это. Но я согласен, что в программе наблюдается чехарда с паузами: если применять словари к предложениями, программа будет делить текст на предложения; если не применять словари, текст делится на абзацы. И каждый раз голос будет вставлять свои паузы в начало аудиоданных (в начало предложения или абзаца), в конец аудиоданных (в конец предложения или абзаца), а также между предложениями внутри аудиоданных. Теоретически для новых "online" голосов Microsoft этими паузами можно управлять, но в "Балаболке" такой возможности нет.
Дата: Понедельник, 24.11.2025, 17:20 | Сообщение #81
Группа: Пользователи
Сообщений: 12
Статус: Offline
balabolka
Прошу прощения за сумбурность, в процессе тестов появлялись новые данные и текст дописывался, теряя связность. Если вначале я грешил на Балаболку, теперь у меня больше претензий к голосам Microsoft.
Обычно я пользуюсь только голосом Ava, в котором паузы между предложениями более короткие, поэтому при сравнении онлайн и оффлайн голосов мне сперва показалось что проблема в других онлайн голосах из-за Балаболки. Тем более что изменение некоторых параметров действительно давало уменьшение пауз. Ещё меня смутил этот пост. Если я теперь всё правильно понимаю, то паузы становятся меньше из-за того что в режиме чтения со влючённым словарём и коррекцией по предложениям программа передаёт данные по предложениям, не давая возможности голосу зачитать несколько предложений и поставить естественную паузу.
В той теме на 4pda автор поста сказал что пользуется только записью в аудиофайл, поэтому для него в новых версия "хитрость" с уменьшением пауз и недоступна. Но в случае записи файла паузы можно уменьшить в Audacitry.
Так или иначе, проблема кроется в паузах по умолчанию, а не Балаболке. Мультиязычные голоса типа Ava и Emma, и почему-то голос Sonia, не имеют настолько заметную паузу между предложениями при комб/абзац режиме.
Не уверен что Дмитрий - последний слитый голос, но вариант в виде Eric и Michelle я так и не понял как установить из той раздачи Gears of War. Как под них редактировать реестр я на 4pda не нашел, плюс там ещё предлагалось как-то через докер подменять словари... В общем, вот последние тесты что я провёл по этому вопросу на Дмитрии:
Использовалась чистая портативная v909 и этот текст в режиме чтения:
Солнце встало рано. Птицы пели в саду. Тонкий туман лежал над лугом. Я вышел на крыльцо. Холодный воздух бодрил. Кофе горячо шипел в чашке. Кошка мяла подол штанов. Дети смеялись неподалёку. Ветер шевелил листья. День обещал быть спокойным.
Дмитрий оффлайн, предложения: 18 Дмитрий оффлайн, комбинированный: 17
Без словаря
Дмитрий оффлайн, предложения: 17 Дмитрий оффлайн, комбинированный: 17
Расширение MS Edge TTS возвращает аудиофайл на 26 секунд. Полагаю оно сразу весь текст отправляет.
Я всё ещё не уверен почему все имеющиеся у меня оффлайн голоса читают быстрее, Хотя один раз голос Sonia выдал те же 17 секунд как и его оффлайн версия. Но в основном он даёт 20-21 секунду на чтение при любых настройках.
Может у оффлайн голосов иные настройки, либо голос на сервере тоже по предложением читает и потом их склеивает, вставляя паузу.
Буду пока слушать свою любимую Ava без пауз, но трясись теперь. И так неуютно зависеть от стороннего сервера, так теперь ещё и не понятно: пауз у неё нет потому что её ещё не "пропатчили", или это другие голоса не "починили"?
Про 10 минут Вы говорили, а про размер фрагмента - не помню. Есть какие-то изменения что окажут влияние на Балаболку, или для неё ничего не поменялось? В смысле того как Балаболка нарезает текст для отправки, его можно отправлять в том же количестве?
Я попробовал этот длинный текст одним предложением протестировать на Ava и Guy:
While the early morning mist clung to the rolling hills and the distant church bell tolled softly, a lone traveler, whose weathered boots had long since memorized the rhythm of the path and whose mind carried a collage of fleeting memories—sunlit kitchens, thunderous rehearsals, whispered promises, and the sharp tang of sea air from a childhood summer—paused beneath an ancient oak whose gnarled branches, like the bent fingers of an old storyteller, reached out to cradle the sky, and as he lifted his face to the pale gold of a waking sun, he felt a curious and sudden clarity, as if all the scattered fragments of his life were being swept together by an invisible hand into a single, coherent mosaic that shimmered with equal parts regret, wonder, and cautious hope, prompting him to take a deep breath that tasted faintly of smoke and rain and to whisper a vow—softly, solemnly, without fanfare—to keep walking, to keep listening for the music hidden in ordinary days, to forgive what could not be undone, and to seek, however quietly, the next small kindness he might offer to the world that had already given him so much.
Оба они перед этими словами делали разрыв:
lifted his face to
could not be undone
Похоже Балаболка режет с запасом, но просто хочу уточнить из первых рук.
P.S. Пока голоса не работали я искал альтернативы и увидел что Вы сделали удобный установщик оффлайн Edge голосов. Я удобно доустановил интересные мне, большое спасибо!
P.P.S Давно хотел спросит но всё забывал: почему Балаболка не делает разрыв между абзацами? В тексте внутри epub-файла мнежду элементами p стоит <hr/> но в программе ни строки типа "---", и просто дополнительной пустой строки не появляется.
Насколько я понимаю, на заре времён никто не договорился как оформлять разрывы и поэтому в одной программе они есть, в другой нет. Но возможно ли в Балаболке ставить на месте этого элемента пустую строку или какое нибудь "* * *". В некоторых книгах бывают частые смены точек зрения, и иногда с удивлением для себя открываешь что последние пару строк были уже от лица иного персонажа.
Сейчас лимит для "нарезания" кусков текста менее 4096 символов, так что проблем быть не должно. Если, конечно, текст не содержит много чисел или сокращений: в этом случае продолжительность аудио может не уложиться в 10 минут.
Тег <hr> в "Балаболке" никак не обрабатывается. Символы типа "---" или "* * *" вставлять не стану ни в коем случае, так как обязательно найдется голос, который будет читать это как "минус минус минус" или "звёздочка звёздочка звёздочка". Подумаю над вставкой пустой строки вместо этого тега. Спасибо за информацию.
Жаль что нет универсального символа для обозначения разрыва. Я у себя давно на "* * *" сделал небольшую паузу, но да, без доработки словарём будет "звёздочка, звёздочка, звёздочка". Если Вы сделаете пустую строку, то можно ли словарём задать на двух пустых строках паузу? Или коррекция устроена так, что это невозможно?
Такой ещё вопрос: не знаете, что определяет настройки скорости голоса для EdgeTTS?
В браузере довольно кутцые настройки, пара делений туда, пара обратно. В расширении MS Edge TTS для Firefox градация +-50%. А в Балаболке +-10. Насколько я понимаю, все SAPI 5 имеют такой диапазон. Я сравнил, и итоговый файл в Балаболке со значением 2 выходит быстрее файла из MS Edge TTS с настройками +10%. Из этого делаю предположение что у этих голосов нету строгого списка допустимых значений, поэтому автор расширение и адаптора смогли задать свои шкалы. То есть где-то в NaturalVoiceSAPIAdapter есть "таблица" для перевода шкалы SAPI в конкретные значения внутри допустимого Edge голосами диапазона?
Если голоса Edge даже имеют диапазон настроек в +-50%, то это в пять раз больше допустимых значений чем в Балаболке сейчас. С учётом того что +-3 - это уже сомнительно что приятно слушать, то я лучше бы обменял всю шкалу на ригулировку в +-15 процентов как в расширении, чтобы одно диленее SAPI соответсвовало 1,5% для более тонкой настройки.
Это вопрос уже скорее к автору NaturalVoiceSAPIAdapter, я просто неуверен как это всё устроено.
Сообщение отредактировал Kei - Суббота, 20.12.2025, 23:44
Дата: Понедельник, 22.12.2025, 02:29 | Сообщение #85
V.I.P.
Группа: Модераторы
Сообщений: 225
Статус: Offline
ЦитатаKei ()
Если Вы сделаете пустую строку, то можно ли словарём задать на двух пустых строках паузу? Или коррекция устроена так, что это невозможно?
"Балаболка" читает текст абзацами и, соответственно, применяет правила к текущему абзацу. Программа не сможет сделать паузу на нескольких пустых строках подряд.
Насчет замены <hr> пустой строкой буду еще думать. Тут есть свои "за" и "против".
ЦитатаKei ()
Такой ещё вопрос: не знаете, что определяет настройки скорости голоса для EdgeTTS?
В Microsoft Azure скорость речи меняется от -50% до +200%. А в SAPI 5 скорость речи меняется от -10 до +10. Неоднократно разработчиков Microsoft просили изменить этот диапазон (увеличить или вместо целых чисел использовать вещественные), но всё бесполезно: это было невероятно глупое решение со стороны разработчиков. Оно очевидно было нелепым уже во времена Windows XP.
Создатель NaturalVoiceSAPIAdapter вынужден для скорости речи конвертировать диапазон SAPI 5 в диапазон Microsoft Azure. В модуле TTSEngine.cpp есть такой код:
То есть, увеличению темпа речи на одну единицу в SAPI 5 соответствует шаг в 20% при использовании NaturalVoiceSAPIAdapter. Из-за странной прихоти программистов Microsoft у нас нет более точной настройки скорости речи при работе с online-голосами через SAPI 5.
Дата: Понедельник, 20.07.2026, 14:21 | Сообщение #86
Группа: Пользователи
Сообщений: 23
Статус: Offline
Здравствуйте. У меня вопрос по поводу добавления в "Балаболку" голосов нейросетей. Я знаю, что в python, кроме ГБ скриптов, ещё и десятки зависимостей и несовместимых друг с другом библиотек. Но я думаю, что разработчика это вообще не должно касаться, так же, как установка любых оффлайн голосов. Голосовые движки каждый устанавливает на свой компьютер сам. Программа же просто предоставляет возможность удобно работать с этими голосами. Точно так же, кто захочет, может сам установить себе python и все необходимые библиотеки или скачать в интернете готовые portable-сборки, а балаболка могла бы просто дать возможность вызывать эти скрипты из удобного графического интерфейса или подключаться к локальному серверу, как это реализовано для работы с онлайн-сервисами. В конце концов, программе должно быть безразлично к какому серверу она подключается: в интернете или на какой-то порт локального. Я знаю, что уже есть программы, позволяющие это делать, но, возможно, я необъективна, нет ни одной программы, в которой так удобно и полно была бы реализована работа с текстом.
balabolka, Здравствуйте! Хочу выразить вам огромную благодарность за ваш труд и создание Балаболки. Я долгое время пользовался MP3book2005 с движком Николай. Сейчас появились отличные современные альтернативы - Edge TTS и Silero. Очень хочется перейти на них и забыть про древнего, скрипучего Николая. Однако есть одна критическая проблема - время записи аудиокниги. Если «Николаем» книга записывается всего за минут 15, то при использовании Silero на генерацию не хватает никакого терпения. Заметил, что во время создания аудиокниги компьютер практически не нагружается. Потенциал железа не используется. Очень не хватает поддержки многопоточности для современных TTS-движков. Подскажите, пожалуйста, можно ли надеяться, что вы реализуете эту функцию в будущем? Еще раз спасибо за вашу работу!
Сообщение отредактировал TRILOK - Четверг, 23.07.2026, 12:56
или подключаться к локальному серверу, как это реализовано для работы с онлайн-сервисами
Насколько понимаю, под каждого онлайн-провайдера программа конфигурируется индивидуально, вручную. Как это делать для неизвестного пользовательского оффлайн-синтезатора? В целом идея неплохая. Предоставить API по которому Балаболка захочет работать с сторонним веб-синтезатором, а уж угодить этому API, обязанность автора веб-морды. Но есть два "но". Многие синтезаторы очень капризные. То этот символ не нравится, то этот размер запроса (не любят короткие), то еще какая фигня. И даже без этих граблей, вангую интерес пользователя будет не очень большим. Работа впустую.
Дата: Понедельник, 03.08.2026, 22:39 | Сообщение #89
Группа: Пользователи
Сообщений: 12
Статус: Offline
Здравствуйте, у меня вопрос по native-версиям голосов Edge TTS.
С недавних пор онлайн-голоса начали возвращать аудио с помехами: во время озвучивания слышен электрический треск. Насколько я смог определить, проблема на стороне сервера: Балаболка, модуль для Python и читалка Readest со встроенным EdgeTTS тоже выдают такое аудио. Пробовал использовать прокси - то же самое. Даже сторонние сайты, которые генерируют MP3-файлы через EdgeTTS, выдают тот же результат. Возможно, в самом Edge-браузере проблема встречается реже, но, вероятно, мне просто чаще попадались удачные серверы. Проблема плавающая, хотя в большинстве случаев я получаю аудио с помехами.
В связи с этим я обратился к native-версиям голосов, которые есть на вашем сайте. К сожалению, фломастер именно мне по вкусу я так и не нашёл. Jane неплохая, хотя местами слишком выражено произносит букву "П" и иногда даёт артефакты на восклицательном знаке.
Так или иначе, я заметил, что с моего последнего визита появилось больше англоязычных голосов. Особенно в последнее время: кажется, каждый день, когда я заходил, добавлялась новая страна. В основном это африканские страны, которые мне не так интересны из-за акцента, но даже у Великобритании появился новый голос Libby.
Возникает такой вопрос: откуда вы их берёте? Вы находите их сами, или существует какое-то англоязычное сообщество, которое отслеживает их появление? Той же Jane нет в списке онлайн-голосов.
Обновляются ли голоса? Например, Ava в native-версии звучит хуже и грязнее по сравнению с оригиналом. Я пробовал поковыряться в ini-файле, но смог улучшить качество лишь немного. Может быть, существует более свежая версия?
Также хотел бы узнать: не превратятся ли эти голоса в тыкву? Я давно установил пакет США, и голос Aria, а также Guy и Jenny недавно у меня перестали запускаться. Я переустановил их со старого установщика, и они заработали. Но чуть позже Guy снова отвалился. При переустановке с нового установщика он всё так же выдаёт ошибку. Вот лог адаптера:
[2026-07-31 17:33:27.168] [error]TTS init: voice 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_GUY_NATIVE' cannot be initialized: Local TTS speak failed, with TTS error code = EMBEDDED_TTS_ERROR_INVALID_LICENSE. Invalid embedded speech synthesis model license.
Не уверен, была ли в первый раз у Aria и Jenny та же ошибка; возможно, там было что-то про ключ дешифрации. А может, я путаю это с ошибками, которые появлялись, когда я пытался включить "EnableBuffer" в ini-файле.
Я бы предположил, что у них ограничен срок действия, но тогда непонятно, почему при первой переустановке Guy всё же заработали.
Сообщение отредактировал Kei - Понедельник, 03.08.2026, 22:42
Не стану уточнять, откуда именно скачены файлы. Есть программные продукты, в состав которых включены файлы голосов Microsoft: почему бы и не позаимствовать эти голоса, чтобы выложить в виде отдельных дистрибутивов. Не стану обсуждать, насколько это соответствует условиям лицензионных соглашений.
Цитата
Обновляются ли голоса?
Если в сети появляется более новая версия какого-либо голоса, я обновляю его файлы в своем дистрибутиве.
Цитата
Также хотел бы узнать: не превратятся ли эти голоса в тыкву?
Лицензия Microsoft на конкретный голос "зашита" внутри одного из его файлов. Всё, за чем мне нужно следить, - это чтобы текст и номер лицензии внутри файла голоса совпадали с текстом и номером лицензии в соответствующем ключе системного реестра. Насколько я знаю, никакого ограничения по сроку действия для лицензии на конкретный голос нет.
Почему вдруг появилась ошибка "EMBEDDED_TTS_ERROR_INVALID_LICENSE" для некоторых голосов - мне неизвестно. Это какой-то неизвестный глюк в работе либо NaturalVoiceSAPIAdapter, либо библиотек Microsoft.CognitiveServices.Speech (библиотека Microsoft.CognitiveServices.Speech.extension.embedded.tts.dll входит в состав NaturalVoiceSAPIAdapter). Попробуйте переключиться на использование другого голоса, а затем вновь вернуться к голосу Guy: вполне возможно, после этого ошибка не появится. Есть у меня подозрение, что такая ошибка может возникать при очень частом переключении между голосами.
У меня голос Guy работает нормально, ошибка не появляется. Языковой пакет для американского английского также установлен, все голоса Microsoft Online работают без проблем, никакого треска. Windows 11 25H2, NaturalVoiceSAPIAdapter версии 0.2.9.