|
Балаболка TTS
|
|
| balabolka | Дата: Суббота, 24.07.2021, 00:53 | Сообщение #1 |
 V.I.P.
Группа: Модераторы
Сообщений: 209
Статус: Offline
| Начало темы здесь (ссылка на архивную копию форума mytts.info)
(5,1 Mb) архивная копия начала текущей ветки с форума mytts.info - для офлайн просмотра и поиска по всем страницам
Балаболка TTS (авт. Илья Морозов)
Сайт программы "Балаболка"
Установочная версия
Portable-версия
|
| |
| |
| Kei | Дата: Среда, 10.09.2025, 22:21 | Сообщение #61 |
|
Группа: Пользователи
Сообщений: 9
Статус: Offline
| Прошу прощения, мне уже неловко снова писать, но обнаружилась ещё одна проблема.
Исправленная подсветка сломала работу моих голосов на больших файлах (>10 МБ). Подсветка отстаёт от воспроизведения, а сам голос может заикаться или вовсе замолкать.
Чем больше файл, тем сильнее проявляется проблема. На ~10 МБ подсветка может начинать подлагивать; ближе к 20 МБ заикания происходят чаще.
Для проверки я скачал PortableApps версию 904 — там всё работает нормально.
Я также протестировал портативную 905 — она начала заикаться позже, чем моя установленная версия. Возможно, дело в словарях или каких‑то настройках.
На моём рабочем файле (12 МБ) проблема проявляется раньше, чем на похожем по объёму тексте, скопипасщенным из следующего абзаца, но на 17 МБ и подсветка отстаёт, и голос заикается.
Код Так говорила в июле 1805 года известная Анна Павловна Шерер, фрейлина и приближенная императрицы Марии Феодоровны, встречая важного и чиновного князя Василия, первого приехавшего на ее вечер. Анна Павловна кашляла несколько дней, у нее был [i]грипп,[/i] как она говорила ([i]грипп[/i] был тогда новое слово, употреблявшееся только редкими). В записочках, разосланных утром с красным лакеем, было написано без различия во всех:
Можно было бы сказать, что такие большие файлы — редкость, но я как раз собирался слушать два файла размером 12 и 18 МБ.
Честно говоря, не уверен, есть ли в новых версиях место моим устаревшим голосам, которые и запускаются только в режиме совместимости. Может, стоит сохранить установщик версии 877 и оставаться на ней?
Пишу в надежде, что это тоже можно исправить.
|
| |
| |
| Kei | Дата: Четверг, 11.09.2025, 20:41 | Сообщение #62 |
|
Группа: Пользователи
Сообщений: 9
Статус: Offline
| P.S.
Я тут установил NaturalVoiceSAPIAdapter чтобы появился голос Mark. Он не появился, видимо его как-то отдельно надо ставить, хотя в системе он показывается. Но не суть. После установки в Балаболке появилась куча неплохих голосов, в основном английских.
Но я заметил у них одну общую проблему: заметная задержка между абзацами. При этом, если попробовать записать аудиофайл, то в нём нету большой задержки.
Я проводил тесты на голосе Microsoft Ava Online, со скоростью 2. Тестировал я на чистой портативной 905.
Для текста я использовал сто строк "Word.".
В программе:
Подряд: 1 минута 3 секунды С пустой строкой: 1 минута 38 секунд Красная строка из пяти пробелов: 1 минута 49 секунды
В записи:
Подряд: 1 минута 2 секунды С пустой строкой: 1 минута 12 секунд Пять пробелов: 1 минута 3 секунды
Если текст идёт сплошняком без пустых строк - то разницы нет, но где в природе встречается такой текст? Почти всегда в английском есть пустые строки. И если смотреть на более естественный вариант, то разница достаточно существенная. В записи прибавилось 10 секунд паузы, а при чтении в программе все 35. Это почти треть времени.
На больших объёмах текстов эти паузы могут превратиться в часы тишины. Да и в целом на коротких диалогах это заметно.
На этом этапе я вспомнил про вкладку "правила" в настройках, и изменения там действительно дали некоторые результаты.
В программе, правила: абзац.
Подряд: 1 минута 2 секунды С пустой строкой: 1 минута 36 секунд Пять пробелов: 1 минута 48 секунд
В программе, правила: комбинированный.
Подряд: 1 минута 2 секунды С пустой строкой: 1 минута 36 секунд Пять пробелов: 1 минута 6 секунд
Проблему с стандартным форматированием английского текста это не решило, но хотя бы с красной строкой в комбинированном варианте паузы пропали.
При этом проблема эта только с новыми голосами. Так в режиме по предложениям мои голоса, голос Zira не показали изменения времени чтения в программе как в идущем сплошняком "Word.", так и с пустыми строками.
В чем может быть проблема? Если при записи аудиофайла пустые строки добавляют 10 секунд паузы что кажется естественным, в конце концом надо же отделять абзацы, то вот 36 секунд тишины при чтении в программе - явный перебор.
При этом эта проблема существует даже если ни один словарь не включён. Если есть словарь то в режиме по предложением с сплошным текстом появляется некоторая задержка, но в комбинированном режиме задержки от словаря не наблюдается.
|
| |
| |
| balabolka | Дата: Четверг, 11.09.2025, 22:01 | Сообщение #63 |
 V.I.P.
Группа: Модераторы
Сообщений: 209
Статус: Offline
| Цитата Kei (  ) Я проводил тесты на голосе Microsoft Ava Online Слово "online" в названии голоса намекает нам на то, что синтез речи происходит на удаленном сервере корпорации Microsoft. Моя программа преобразует текст в речь абзацами (если не применяются словари): если абзац очень длинный, его текст делится на куски размером не более 4 килобайта. Как видно из Ваших тестов, на паузы оказывает влияние количество запросов к серверу (количество абзацев), то есть паузы наблюдаются между запросами. А вот объем текста в запросе не влияет на длительность паузы, то есть сервер быстро преобразует большой текст в речь и быстро вернет даже большие по размеру аудиоданные.
Это интересная информация, надо будет поразмыслить над этим. Можно будет попробовать конвертировать в речь по несколько абзацев за раз. Насколько я помню из документации Microsoft Azure, там ограничение устанавливает не на длину текста в запросе, а на продолжительность получающихся аудиоданных: запрос вернет не более 10 минут речи (иначе сервер просто обрежет аудиоданные). Это очень не удобно: например, мой лимит в четыре килобайта русского текста уложится в 10 минут речи, а четыре килобайта китайских иероглифов - нет. Сложно делить текст на части, если заранее не известно, сколько времени потребуется на его прочтение вслух: а если текст содержит числа, даты, сокращения? а если текст будет прочитан на медленной скорости? Поэтому я опасаюсь максимально увеличивать длину текста в запросе и предпочитаю преобразовывать текст абзацами: это безопасно, и паузы между абзацами всегда будут более-менее одинаковыми по длительности.
Text to speech REST API
Цитата If the body length is long, and the resulting audio exceeds 10 minutes, it's truncated to 10 minutes. In other words, the audio length can't exceed 10 minutes.
Значение имеют также Ваше местоположение и скорость интернет-соединения. Чем быстрее сервер Microsoft (точнее - один из серверов, endpoint) ответит на запрос, посланный с Вашего компьютера, тем меньше будет пауза. Если бы Россия и США наладили взаимоотношения, то endpoint'ы могли располагаться в Москве, Питере, Новосибирске: тогда время ответа на запрос существенно сократилось бы. Сейчас, когда Microsoft ушел из России, то я вообще не знаю, куда именно российские компьютеры с Windows отправляют запросы, на сервер в какой стране (вряд ли Microsoft сейчас будет заботиться о российских пользователях). А если установлен и активирован VPN, то время ответа на запрос может еще возрасти.
Всё это относится к чтению вслух.
Цитата Kei (  ) В записи:
Подряд: 1 минута 2 секунды С пустой строкой: 1 минута 12 секунд При записи в аудиофайл время ожидания ответа сервера уже значения не имеет, так что тут нет никаких лишних пауз. Здесь разница в десять секунд появляется, скорее всего, потому, что голос вставляет маленькую паузу после каждого абзаца: пустая строка = конец абзаца.
|
| |
| |
| balabolka | Дата: Четверг, 11.09.2025, 22:12 | Сообщение #64 |
 V.I.P.
Группа: Модераторы
Сообщений: 209
Статус: Offline
| Цитата Kei (  ) Я тут установил NaturalVoiceSAPIAdapter чтобы появился голос Mark. Он не появился, видимо его как-то отдельно надо ставить, хотя в системе он показывается. Голос Mark относится к "Mobile" или "OneCore" голосам Microsoft. Изначально эти голоса не были предназначены для работы с SAPI 5: голоса должны были работать только с Metro-приложениями из Microsoft Store. Но "OneCore" голоса легко можно сделать доступными и для SAPI 5. Например, можно скачать и один раз запустить утилиту SAPI Unifier.
|
| |
| |
| Kei | Дата: Пятница, 12.09.2025, 16:35 | Сообщение #65 |
|
Группа: Пользователи
Сообщений: 9
Статус: Offline
| Спасибо. Mark и ряд пара других голосов действительно появились. Правда некоторые голоса дублировались. Та же Zira представлена в двух вариациях: с приставкой Desktop и без. Но это не особая проблема
Собственно, я тут провел ещё пару тестов на других голосах и фрагменте естественного текста в комбинированном режиме:
Microsoft Andrew Online, скорость 2.
Обычный: 2 минуты 44 секунды Аудиофайл: 2 минуты 8 секунд Бес пустых: 2 минуты 12 секунд
Microsoft Eric Online, скорость 2.
Обычный: 2 минуты 38 секунд Аудиофайл: 2 минуты 23 секунды Бес пустых: 2 минуты 21 секунда
Не уверен почему у "Эрика" не такая большая разница между чтением вслух и аудиофайлом как у первого голоса. Может, поскольку я прогонял один и тот же текст, то он "закешировался" и поэтому первый запуск Эрика выдал меньшую паузу в обычном режиме? Ну, или это какая-то спицифика конкретного голоса, как всё это работает я не знаю.
Так или иначе, в отличие от прошлого теста, тут разница между аудиофайлом и сплошным текстом выражена в совсем гомеопатических значениях. Видимо те 10 секунд были вызваны большим количеством абзацев.
В стандартном варианте, без задержек с запросом, на мой слух не хватает паузы между абзацами. А вот пауза от задержек наоборот раза в два дольше необходимой. Местами она быстрая, а порой можно две секунды ждать.
Я попробовал решить вопрос паузы в сплошном тексте путём настроек, но таким голосам нету дела до выставленных во вкладке "паузы" значений для абзацев/предложений. Также я вспомнил про SAPI теги, но представленный в F1 образец Silence не вызвал никакой реакции. Я бы подумал что таким голосам и до тегов дела нет, но пример с Silence не сработал и на обычных голосах типа Zira, а вот тег с изменением громкости применился к онлайн голосам.
Как программа вообще работает с такими голосами? И насколько она на такое расщитана? Ну, с учётом того что для их появления нужно устанавливать отдельную программу.
Прошу прощения если вопросы покажутся глупыми, я правда не разбираюсь в технической части.
Паузы возникают из-за времени на запрос, его обработку и ответ от сервера после окончания прочтения фрагмента. Возможно ли подготавливать следующий фрагмент текста во время чтения предыдущего? Аудиофайл программа генерирует быстрее чтения вслух (Текст 6 минутной длины был сделан за 2 минуты)
Или у записи аудиофайла и чтения вслух принципиально разная логика?
Помимо воспроизведения звука во время чтения также идёт синхронная подсветка читаемого слова. Каждое отдельное подсвеченное слово не может быть отдельным запросом, значит по мимо аудио сервер отправляет "субтитры" для синхронизации с подсветкой. Сервер это делает одним пакетом? Или программа получает данные от сервера во время всего воспроизведения?
Я предполагаю что нельзя послать сразу несколько запросов к серверу, поскольку сервера такое обычно не любят, поэтому предполагаю что запросы должны быть последовательны и не раньше чем сервер вернёт прошлый ответ. И если при создании аудиофайла программа засовывает в него ответ сервера по готовности, то при чтении вслух программе уже понадобится иметь буфер. Программа такое может или мой вопрос это какое-то страшное извращение?
|
| |
| |
| Lecron | Дата: Пятница, 12.09.2025, 17:55 | Сообщение #66 |
|
Группа: Пользователи
Сообщений: 29
Статус: Offline
| Цитата balabolka (  ) Можно будет попробовать конвертировать в речь по несколько абзацев за раз. На 4pda есть пользователь с ником ssiiaa. Автор программы fb2-player. Он реализовал буфферизацию. Пока текущий абзац слушается, следующий уже отправлен на озвучку. К моменту окончания прослушивания текущего, он уже лежит у клиента. Глубина буфферизации может быть и больше 2. Что полезно если текущий абзац гораздо меньше следующего — реплика диалога с последующим описательным абзацем.Цитата balabolka (  ) Сложно делить текст на части, если заранее не известно, сколько времени потребуется на его прочтение вслух Насколько сложно установить динамический лимит? Пересчитывать исходя из соотношения размера текста и продолжительности возвращаемого аудио. При желании можно даже записать в конфиг. Сильно маловероятно, что сразу первый абзац превысит лимит, после которого его надо бить на части.
|
| |
| |
| Suravel | Дата: Вторник, 16.09.2025, 11:44 | Сообщение #67 |
|
Группа: Пользователи
Сообщений: 22
Статус: Offline
| Цитата Kei (  ) Я тут установил NaturalVoiceSAPIAdapter Хочу предложить вам голос Светланы из microsoft edge, который работает БЕЗ интернета. Надо распаковать архив, чтобы папка voice оказалась в корне диска С и указать путь к папке в NaturalVoiceSAPIAdapter. Кроме голоса Светланы в архив положила небольшой словарь для балаболки и два ключа реестра для 32 и 64 битной систем. Для 64 битной надо устанавливать оба. Голос в балаболке появляется как Micrisoft Svetlana. При отсутствии интернета, что происходит всё чаще, очень выручает. Меня немного раздражало изменение голоса на фразах с восклицательным знаком, так я просто перед прослушиванием текста с помощью "найти-заменить" меняю восклицательные знаки на точки. На мой взгляд из оффлайн голосов - этот самый приемлемый. Жаль, что не удалось найти мужской голос в таком варианте.
https://disk.yandex.ru/d/__3a_6Hke_hgug
Сообщение отредактировал Suravel - Среда, 17.09.2025, 09:08 |
| |
| |
| Lecron | Дата: Четверг, 18.09.2025, 12:33 | Сообщение #68 |
|
Группа: Пользователи
Сообщений: 29
Статус: Offline
| Цитата Suravel (  ) Жаль, что не удалось найти мужской голос в таком варианте. На 4pda уже несколько недель как выложен Дмитрий. Там также есть решение по устранению "истерики" у Светы на восклицательных. В phones.txt надо заменить код восклицательного знака punc! на код точки punc.
|
| |
| |
| balabolka | Дата: Пятница, 19.09.2025, 00:31 | Сообщение #69 |
 V.I.P.
Группа: Модераторы
Сообщений: 209
Статус: Offline
| Цитата Suravel (  ) Кроме голоса Светланы в архив положила два ключа реестра Рекомендуется в эти файлы для реестра добавить имя голоса (в раздел атрибутов). Иначе не будут работать теги переключения между голосами в "Балаболке": моя программа выбирает голоса по их именам.
Надо открыть REG-файл в "Блокноте" и добавить одну строчку для ветки "Attributes":
Код [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\TTS_MS_RU-RU_Svetlana\Attributes] "Name"="Microsoft Svetlana" Такую же операцию необходимо проделать с Дмитрием, там тоже этот атрибут отсутствует.
Код [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\TTS_MS_RU-RU_DMITRY_11.0\Attributes] "Name"="Microsoft Dmitry"
|
| |
| |
| Suravel | Дата: Суббота, 04.10.2025, 10:48 | Сообщение #70 |
|
Группа: Пользователи
Сообщений: 22
Статус: Offline
| Цитата balabolka (  ) Рекомендуется в эти файлы для реестра добавить имя голоса (в раздел атрибутов). Иначе не будут работать теги переключения между голосами в "Балаболке": моя программа выбирает голоса по их именам. В "Балаболке" для коррекции произношения в этих голосах удобно использовать фонемы IPA. Но microsoft несколько изменил правила для своих голосов: знак ударения надо ставить не перед ударным слогом, а после ударной буквы. Если в слове попадается безударная "ы" в "Балаболке" она обозначается фонемой "ᵻ" и слово вообще не произносится. Приходится заменять ее на "ɨ", тогда произносится правильно. Другие голоса SAPI5, используемые в "Балаболке", вроде бы IPA вообще не поддерживают. Если правильно подобрать фонемы, то Светлана и Дмитрий произносят слова совершенно правильно. Можно исправлять и вручную, но для глаз несколько напряжно: шрифт в полях словарей немного мелковат. Может быть можно внести изменения в "Балаболку", исключив нечитаемую "ᵻ" и ставя ударения после ударной гласной?
|
| |
| |
| balabolka | Дата: Воскресенье, 05.10.2025, 14:51 | Сообщение #71 |
 V.I.P.
Группа: Модераторы
Сообщений: 209
Статус: Offline
| Suravel Не понял, о чем именно идет речь. Пожалуйста, поясните подробнее (скриншоты тоже могли бы помочь).
|
| |
| |
| balabolka | Дата: Воскресенье, 05.10.2025, 19:06 | Сообщение #72 |
 V.I.P.
Группа: Модераторы
Сообщений: 209
Статус: Offline
| Понял, о чем идет речь: я и не знал, что фонемы IPA работают для голоса Microsoft Svetlana (локальной версии, которая не "Online"). Спасибо за информацию.
Изначально в "Балаболке" поддержка IPA была реализована для голосов IVONA: там ударение обрабатывается нормально, когда символ ударения стоит перед ударным слогом. ("Officially, the stress marks appear before the stressed syllable." © Wikipedia) Хорошо, специально для русских голосов Microsoft программа будет ставить символ ударения после ударной гласной. Также, в следующей версии заменю упоминаемую Вами фонему.
|
| |
| |
| Suravel | Дата: Четверг, 09.10.2025, 22:46 | Сообщение #73 |
|
Группа: Пользователи
Сообщений: 22
Статус: Offline
| Цитата balabolka (  ) Хорошо, специально для русских голосов Microsoft программа будет ставить символ ударения после ударной гласной. Также, в следующей версии заменю упоминаемую Вами фонему. Огромное спасибо! Есть ещё локальный Дмитрий, и для него фонемы тоже работают. И, пожалуй, если пользоваться "Балаболкой" - это лучшее, что сегодня есть, поскольку IPA, встроенное в программу, дает возможность добиться абсолютно правильного произношения.
|
| |
| |
| Suravel | Дата: Среда, 22.10.2025, 18:05 | Сообщение #74 |
|
Группа: Пользователи
Сообщений: 22
Статус: Offline
| Цитата balabolka (  ) Хорошо, специально для русских голосов Microsoft программа будет ставить символ ударения после ударной гласной. Также, в следующей версии заменю упоминаемую Вами фонему. Еще раз хочу поблагодарить за оперативное внесение изменений в программу. Безударная "ы" теперь отображается правильным знаком. А вот с ударениями - может я что-то не правильно объяснила. Теперь, если выбираешь голоса microsoft online, ударение, действительно, ставится после ударной буквы, но эти голоса, хоть и sapi, не поддерживают ssml тэги. А в оффлайн голосах Светлана и Дмитрий, которые устанавливаются на компьютер через natural voice, ударение ставится, как и прежде перед ударным слогом. При этом, есть ещё модифицированный голос Дмитрия, под названием Дмитрий-брутал, так вот в нем, хоть он тоже оффлайн, ударение почему-то ставится правильно для microsoft, то есть после ударной буквы. В чем причина, я так и не поняла. В реестре у всех 3-х голосов настройки одинаковые. Но, в принципе, это уже не столь важно. Добавлять слова в словарь можно и с помощью Дмитрия-брутал, и с помощью голосов онлайн. Читаются они потом и Светланой, и Дмитрием правильно. Просто интересно, в чем может быть причина такого выборочного поведения.
|
| |
| |
| Suravel | Дата: Четверг, 23.10.2025, 16:27 | Сообщение #75 |
|
Группа: Пользователи
Сообщений: 22
Статус: Offline
| Цитата Suravel (  ) в чем может быть причина такого выборочного поведения. Пока так и не поняла, но... Восстановила старую версию Светланы v 5.0.39785395
и... о чудо, все ударения проставляются правильно. А вот в версиях Светланы и Дмитрия v 6.0.69700 - почему-то нет. Но! Дмитрий_брутал версия тоже 6.0.69700?, и всё правильно. Мистика microsoft!
|
| |
| |