Pull to refresh

Comments 229

Огромная титаническая работа! Вы молодцы! Желаю удачи.

Да, это несложно по идее. Сейчас основной косяк в том, что надо руками ударение ставить (или править за алгоритмами). Но надо было с чего-то начинать.


Может кто-то из комьюнити сделает по фану) Заодно найдутся какие-то грабли. Основные грабли, которые люди пока находили:


  • Кормить надо по одному предложению (можно батчами);
  • Знаки пунктуации надо оставлять, они влияют на интонацию;
  • Аббревиатуры и иностранные слова надо "перевести" (СССР = +эс+эс+эс+эр);
  • Ударения;

Но поскольку задача была дать минималистичный end-to-end алгоритм, пока сделали, что смогли доступными ресурсами.

А вот такой вопрос: есть ли простые для пользователя и бесплатные (либо недорогие) сервисы по переводу аудиодорожки в текст? Именно готовые решения, может на основе сервисов Гугла или Яндекса.

Мы планируем сделать полностью бесплатный некоммерческий сервис для физических лиц как раз (студенты / журналисты / юристы)


Чтобы адресовать дыру а рынке как раз.


Stay tuned как говорится

И потом попробовать рекурсивно натравить эти сервисы друг на друга :)

Лучшее всегда враг хорошего.

Сервис именно с таким функционалом? Аудио — в текст? Было бы круто, да и можно платные функции сделать, в любом случае надо же платить за хостинг и т.п.

Адресовать дыру? Не понял)))
Адресовать дыру? Не понял)))
Было бы круто, да и можно платные функции сделать, в любом случае надо же платить за хостинг и т.п.

Если опустить детали, я не верю, что разработка качественного личного кабинета тут окупится (даже компании не готовы нормально платить за STT, а физики тем более), у нас нет фронтенд команды, я сам не люблю платные сервисы, желанием заниматься маркетингом ноль, да и кажется что для обычных юзеров с малыми потребностями не нужно много.


Проще сделать простой, честный и маленький сервис с лимитами для всех. Некий аналог этого релиза, но для физиков и в распознавании.

Ок, но хоть номер кошелька можно оставить на донаты))

Если есть желание оставить донаты, то я добавил наш open_collective в репозиторий.
В open_stt правда за год накидали всего US$500, что близко даже расходы на хостинг (пока не оптимизировали их) не покрыло =)
Нативные донаты в гитхабе не докатились пока до СНГ.

Не помню почему его не выбрал
Но это не важно по идее
Open collective типа для it проектов

UFO just landed and posted this here
С ударениями есть закономерность. Чаще всего ударение падает на гласную, которую можно вычислить по формуле: количество_гласных/2 + 1
Не убирайте такую возможность, ставить ручками ударение. Очень удобно (понимаю что это мне, а не всем, но реально сделать голос похожим на человеческую речь иначе сложно)
По мне уровень почти яндексовских премиальных голосов получается.
И хочу поблагодарить, огромная работа, супер результат.
А насколько сложно добавить клонирование голоса, ну пусть на 80% похожести? (для мошенников мало, для многих проектов достаточно)
В буржуйских проектах, открытых эта штука есть, пишут что достаточно и 10 минут текста, но только без русского языка. Ооо, в общем русский у нас отстает от мировых трендов TTS.
Не убирайте такую возможность, ставить ручками ударение

Логика будет такая — если ударение поставлено ручками, то оно останется как есть.
Если нет — то поставится само как-то автоматически.

А насколько сложно добавить клонирование голоса, ну пусть на 80% похожести? (для мошенников мало, для многих проектов достаточно)

Если коротко — я не особо верю в one-shot копирование голоса.
Даже говорилкам нужно 2-3 часа речи.
Мы будем точно работать над снижением количества аудио, но я не верю, что реально опуститься ниже нескольких часов.


В буржуйских проектах, открытых эта штука есть, пишут что достаточно и 10 минут текста, но только без русского языка. Ооо, в общем русский у нас отстает от мировых трендов TTS.

А вы их запускали =)?
Насчет трендов, покажите мне хоть один другой открытый проект, где готовые натурально звучащие голоса работают на 1 ядре процесса и запускаются 1 строчкой кода.
Все компании, который продают клонинг, почему сначала просят оплатить платформу и приглашают на вебинары =)

Так ведь есть же готовые словари ударений?
Филологи тоже без дела не сидели все эти годы )
это шикарно! Удачи. Скоро вас купят и всё.

Мы конечно были бы рады, если бы у нас что-то купил настоящий качественный стратег (а не как обычно), но суровая реальность состоит в том, что в СНГ технологии никто никогда не покупает у независимых команд за очень редкими исключениями.


Максимум выслушать, получить максимум информации, скопировать.

Независимая команда — риск для крупных организаций. Любая серьезная болезнь или финансовые трудности ключевых членов команды приводят к остановке разработки и сопровождении продукта. Стараюсь это держать в голове, когда предлагаю свои решения.

Ну если честно если вынести за скобки неправовые методы устранения конкуренции (надеюсь вы не на это намекаете), то многомесячные задержки случаются и в корпорациях по причине отсутствия владельца продукта и банального безразличия сотрудников даже чаще)


А в нормальных командах люди обмениваются опытом и прикрывают друг другу тыл)

А коммерческие команды как защищены от «Любая серьезная болезнь или финансовые трудности ключевых членов команды приводят к остановке разработки и сопровождении продукта.»?
Если просто так на рынке труда участников проекта не набрать, а если брать то ещё и вводить в курс дела/обучать

Только нормальные бизнес процессы и обмен знаниями в команде помогают от такого

Это да, грусть прямо.
Где-то nmivan писал про это в духе:
«Технический директор: да, я тоже считаю, что ваше решение кое-где лучше. Но! Если мы внедрим BIG_VENDOR_NAME и будут баги, то что скажут? Что „ну у всех так, что ж поделаешь“. А если мы внедрим ваше решение и будут баги, что скажут? Мне скажут „ну ты и лох, взял глючную систему“

А вы не хотите попробовать себя позиционировать по другому? Сейчас вы себя продвигаете как не совсем готовый и довольно нишевый продукт, но может быть правильнее будет продвигать себя как сервис? Например все те дикторы кто отказали вам в оцифровке голоса должны понимать, что их дар не вечен. Они смертны, голос подвергается возрастным изменениям и то, что они вовремя сделают цифровую модель своего голоса, обеспечит им и возможно их потомкам безбедное существование в случае потери голоса, и чем раньше они это сделают тем лучше. Кроме того можно сделать биржу голосов. Я думаю есть очень много людей у которых шикарный голос, но они сделали карьеру в совсем другой области. Если у них будет возможность один раз сделать модель своего голоса и поместить на биржу, а люди будут ею пользоваться и им будет переводится пассивный доход, то многие бы согласились.

Создание любой supply demand двойной платформы это очень дорого


По сути это инвестиционный проект который реально поднять только на средства инвесторов


Ну или написать все самому
Но я не люблю жс


Плюс ключевая компетенция тут это маркетинг, а им я заниматься не хочу

Ну и да
Когда вау синтез будет заводиться с часа аудио это можно
Но сейчас там это удел скорее американских стартапов привлекающих десятки миллионов долларов в стиле fake it till you make it

Речь про Digalo с голосом Nikolay? Современные системы как правило требуют как минимум от 5-10 часов аудио. Если записи голоса Николая есть в публичном доступе, то можно сделать.


Можно конечно озвучить самой говорилкой, но в лучшем случае звучать будет точно так же, как она и звучит, и тогда непонятно зачем.

Есть новые хорошие чтецы, с идеальными голосами и хорошей звукозаписывающей аппаратурой, которые начитывают художественную литературу. Если бы с ними договориться? К примеру, Puffin Сafe.

Это отличная идея.
А вы не знаете как ему написать напрямую (напишите в личку), чтобы не продираться через фильтры?
Обычно чтецы конечно боятся за свой голос, но я напишу ему.

Именно имейл я не увидел, может в упор не вижу, положил закладку, найду способ связаться с автором

Спросил автора.
Естественно реакция негативная, как и у всех дикторов с брендом.
Sad but true.
Если вы знакомы с ним лично — может сможете уговорить =)

Нет, к сожалению. Я только слушатель, ещё с пор, когда у него в подписчиках не больше сотни было. Ок спасибо что попытались.

попробуйте выйти на Mr.FreeMan — там то же ребят а конкретно заморачивались с озвучкой, да и Голос Брендовый так что Может Добавить вашей разработке популярности…

Написал и студии toonbox.studio. Мистер Фриман точно известен в массах, разве что, когда он вышел я его не смотрел, т.к. мне казалось, что там все очевидно и так, а анимацию на ютубе я тогда не смотрел.


Может им будет более интересно, т.к. персонаж уже на почти на пенсии да и все-таки это персонаж, а не голос.

Ну а как же Модель для сборки?
Я думаю у него самый большой в сети набор данных для обучения=)).
То что есть на торрентах конечно не суперского качества, но материала МНОГО.
Правовые вопросы конечно оставляю за кадром, но думаю вполне возможен положительный исход при связи с автором.

Голос хороший. Честно говоря удивительно первый раз слышу про это, хотя я люблю научно-популярное.
Написал им.
Не верю конечно, что мне ответят позитивно, но тут больше похоже, что люди про вечное, нежели, чем хайповые блоггеры, которые даже на почту не отвечают =)

То что есть на торрентах конечно не суперского качества, но материала МНОГО.

Для синтеза студийное или приближенное к нему качество это очень важно.


Правовые вопросы конечно оставляю за кадром, но думаю вполне возможен положительный исход при связи с автором.

С правовыми вопросами — мы конечно сделали больше голосов, чем выложили.
Например мы сделали Ведьмака и Жириновского.


Но в конце мы приняли коллективное решение не делиться этим по двум причинам:


  • Хреновое качество получившегося голоса
  • Сомнительная этическая составляющая вопроса

Я конечно понимаю, что никого не волнует, что тот же Сбербанк рекламирует дип-фейк голоса персонажа мошенника, но выкладывать такой инструмент пусть даже некоммерческий — это давать жуликам лишние карты в руки.


Опять же, если автор голоса ведьмака прочитает это и будет не против — мы можем сделать хорошо, если он поделится студийными записями и даст согласие, и будет всем Геральт =)


С другой стороны, допустим если сделать какой-то пародийный сериал, где персонажи озвучиваю мемы известными голосами, это мне кажется сильно меньшим злом. Но заниматься b2c маркетингом и продакшеном видео — ноль умения и желания.

Да уж, скучаю по лроцентам и шляпе.
Попробовал протестировать английский.
В requirements желательно указывать версию пакетов:

|████████████████████████████████| 645kB 21.4MB/s
|████████████████████████████████| 1.9MB 17.2MB/s
|████████████████████████████████| 804.1MB 22kB/s
ERROR: torchvision 0.9.0+cu101 has requirement torch==1.8.0, but you'll have torch 1.8.1 which is incompatible.
ERROR: torchtext 0.9.0 has requirement torch==1.8.0, but you'll have torch 1.8.1 which is incompatible.


torchvision и torchtext тут не нужны (скорее всего тянутся там где-то или их просто еще не успели до 1.8.1 обновить, хз почему это пишется, мы их не ставим), да и на самом деле torchaudio не нужен, просто не хотелось отдельный репозиторий делать.


По-хорошему, конечно надо ясно написать какие версии мы протестировали, но мы скорее просто пытаемся поддерживать работающие примеры на актуальных версиях библиотек и впиливать поправки в утилиты и колаб по мере развития библиотек.


Вообще если копнуть еще глубже, там кроме торча или оникса вообще нет зависимостей — torchaudioзаменяется на вашу любимую библиотеку для работы с аудио, а omegaconf там просто для чтения конфига (можно просто взять нужную ссылку для себя и все).

Благодарю за детальный ответ.
Работаем с WellSaid. Качественный синтез.
Интересно попробовать ваше решение.
Насколько реально улучшить качество (убрать металлические нотки)?
Насколько реально улучшить качество (убрать металлические нотки)?

Короткий ответ — не знаю, есть еще много неопробованных идей, и мы еще не прошли весь путь. В списке наших приоритетов сначала скорость и доступность, а потом уже вау-фактор от качества и всякие фишки с интонацией и произношением.
Однако если вы хотите что-то обсудить, пишите в личку в телегу.


Интересно попробовать ваше решение.

Вы можете пока попробовать публичную некоммерческую версию.
Естественно там нет никакого обвеса, но на то она и публичная и некоммерческая.

Еще бы какой FAQ по запуску этого дела для простого человека. :-(
Посмотрел, понял что не понял как это всё запустить. :`-(

Вообще моя мечта получить возможность использовать синтезатор голоса совместно с FBReader на андройде.

Мне очень удобно когда часть текста книги я читаю, часть текста слушаю. На текущий момент использую FBReader c отученным от жадности VocalizerEX.

Конечно очень и очень проигрывает вашим голосам. Но за несколько лет привык. ¯\_(ツ)_/¯
Еще бы какой FAQ по запуску этого дела для простого человека. :-(

Для начала чтобы просто попробовать, можно просто:


(0)
Пройти по ссылке — https://colab.research.google.com/github/snakers4/silero-models/blob/master/examples_tts.ipynb


(1)
Нажать на кнопочку здесь для установки зависимостей — image


(2)
Прокликать ячейки через через ctrl + Enter


(3)
Вывести переменную example_text и заменить ее на нужную вам путем создания новой ячейки и написания чего-то типа:


print(example_text)

А потом


example_text = 'К+ошка пр+ыгает в ок+ошко!'

И повторить генерацию.


А для запуска на Андроиде надо брать новые легкие мобильные билды PyTorch и пробовать. В приложение для Android и FBReader не портировали, т.к. у нас нет Android разработчиков.

Но ведь это очень сложно. Не для пользователей.

Вот что нужно сделать, чтобы на обычном десктопе, в том же IceBookReaders можно было послушать книжку через ваш синтез?

Я понимаю, но у нас нет разработчиков для десктопа (подразумеваю .Net) и вообще разработчиков в команде, если на то пошло =(
Тут кто-то из комьюнити может откликнуться и запилить интеграцию.
По сути все вызывается 1 строчкой кода, билды PyTorch под винду должны быть готовые и няшные из коробки.

Просто именно вот такое использование — публичное и широкое, может принести продукту известность и узнаваемость.

Это бесспорно, но заказывать такую фичу на стороне (если она такая важная) кажется странным, самому изучать новую "старую" перпендикулярную технологию, которая не нужна каждый день, не особо хочется, а нанимать команду из 1-3 людей ради одной фичи тоже неразумно. Вот как-то так.

Под винду есть стандарт SAPI (SAPI4, SAPI5), через который остальной софт может общаться с синтезатором.
Проблема с Deep Learning в том, что это Python, который в плане работы с зависимостями просто ужас-ужас. Хуже, пожалуй, только С++. Ведь никогда же ничего не заводится с первого раза, вечно приходится шаманить, разбираясь, что и в каком порядке ставить и куда потом какие симлинки подпихивать, чтобы наконец завелось. К примеру, на то, чтоб разобраться, как запускать GPT-3 от Сбербанка, потратил почти неделю, и для этого даже пришлось пересобирать TensorFlow, потому что под Linux не оказалось версии с поддержкой процессоров без AVX…

Ну тут из зависимостей по сути тут только PyTorch и все работает на версии из коробки.


Насчёт зависимостей в питоне, ну не знаю, conda / docker все решают.


Вопрос по сути только в наличии питорча под нужную платформу, но для x86 все есть.

Запускаю пример, и…
RuntimeError: Backend «soundfile» is not one of available backends: ['sox', 'sox_io'].
Ладно, это исправляется в utils.py, меняем бэкенд на sox_io. Перезапуск…
[NNPACK.cpp:80] Could not initialize NNPACK! Reason: Unsupported hardware.
А это уже от PyTorch привет, тоже где-то что-то не срослось, скорее всего с какой-то библиотечкой слинковаться не может. На этом месте мне надоело, как будет побольше времени — попробую разобраться.
В общем, ожидаемо. It's Python. Тут что-то сложнее HelloWorld'а всегда вызывает проблемы с зависимостями на любой машине, отличной от той, где оно создавалось. Так что какое-то время на шаманство тратить придётся в любом случае. За это его и не люблю.
[NNPACK.cpp:80] Could not initialize NNPACK! Reason: Unsupported hardware.

А не просто warning а прямо ошибка?
Гугление выдало треды про процессора без AVX инструкций.
Мол оно просто предупреждает, но работает.
Вообще в питоне есть прекрасные пакетные менеджеры и билды торча есть для основных систем из коробки.


Ладно, это исправляется в utils.py, меняем бэкенд на sox_io. Перезапуск…

Тут я согласен, что если для синтеза вообще ничего кроме торча не нужно, то пакетировать вместе с utils.py вместе с STT неверно. Но тут единственное решение это под каждую платформу написать и протестировать гайд.


А платформ таких тонна:


  • iOS
  • Android
  • x86 — Linux / Винда / Мак + CPU
  • x86 — Linux / Винда / Мак + GPU
  • ARM

Собственно по этой причине просто "потыкать" мы дали колаб, где все показано на примере.
И если совсем лень, то кто-то уже сделал бота в телеграме — @silero_tts_bot (это не мы, это кто-то из коммьюнити)
Правда там какие-то баги с ударением, оно меняет свое место, надо играться.

Наконец удалось запустить. Спасибо.
Правда, похоже, что у «движка» есть ограничение на длину строчки:
tts_utils.py:27: UserWarning: Text string is longer than 140 symbols.
Т.е. не получится просто скормить целый абзац с расставленными ударениями и получить озвучку. Сейчас придумываю, как бы попроще порезать длинные предложения на кусочки.

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


Если текст письменный, то простые эвристики тут помогают. Ну конечно есть много разделителей — https://github.com/natasha/razdel

Но при этом у меня пока что не выходит синтезировать звуковой сэмпл длиннее 12 секунд — конец слишком длинной фразы просто обрезается. Возможно, делаю что-то не так.
Используемый код
import torch
import torchaudio

language = 'ru'
speaker = 'kseniya_16khz'
device = torch.device('cpu')
model, symbols, sample_rate, example_text, apply_tts = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                                                      model='silero_tts',language=language,speaker=speaker)

example_text="нав+ерное, существ+уют друг+ие рец+епты, но я их не зн+аю. +или он+и мне не помог+ают. х+очешь моег+о сов+ета - пож+алуйста: сад+ись раб+отать. сл+ава б+огу, так+им л+юдям, как мы с тоб+ой, для раб+оты ничег+о не н+ужно кр+оме бум+аги и карандаш+а."
model = model.to(device)  # gpu or cpu
audio = apply_tts(texts=[example_text],
                  model=model,
                  sample_rate=sample_rate,
                  symbols=symbols,
                  device=device)
for i, _audio in enumerate(audio):
  torchaudio.save(f'test_{str(i).zfill(2)}.wav',
                  audio[0].unsqueeze(0),
                  sample_rate=16000,
                  bits_per_sample=16)
В результате в wav-файле оказывается только начало фразы. Сейчас разбираюсь, почему так.

Скорее всего кто-то из коллег когда впиливал ограничение на длину, специально поставил warning.


Сейчас там немного странно ведет себя сортировка по длине (если кормить батчами, почему-то порядок путается) но пока ее не пофиксили можно делать так:


import torch
import torchaudio

language = 'ru'
speaker = 'kseniya_16khz'
device = torch.device('cpu')
model, symbols, sample_rate, example_text, apply_tts = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                                                      model='silero_tts',language=language,speaker=speaker)
model = model.to(device)  # gpu or cpu

example_text="нав+ерное, существ+уют друг+ие рец+епты, но я их не зн+аю. +или он+и мне не помог+ают. х+очешь моег+о сов+ета - пож+алуйста: сад+ись раб+отать. сл+ава б+огу, так+им л+юдям, как мы с тоб+ой, для раб+оты ничег+о не н+ужно кр+оме бум+аги и карандаш+а."

for i, text in enumerate(example_text.split('. ')):
  audio = apply_tts(texts=[text],
                    model=model,
                    sample_rate=sample_rate,
                    symbols=symbols,
                    device=device)
  torchaudio.save(f'test_{str(i).zfill(2)}.wav',
                  audio[0].unsqueeze(0),
                  sample_rate=16000,
                  bits_per_sample=16)

Баг пофиксили
Можно и батчами процессить сейчас


import torch
import torchaudio

language = 'ru'
speaker = 'kseniya_16khz'
device = torch.device('cpu')
model, symbols, sample_rate, example_text, apply_tts = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                                                      model='silero_tts',language=language,speaker=speaker,
                                                                      force_reload=True)
model = model.to(device)  # gpu or cpu

example_text="нав+ерное, существ+уют друг+ие рец+епты, но я их не зн+аю. +или он+и мне не помог+ают. х+очешь моег+о сов+ета - пож+алуйста: сад+ись раб+отать. сл+ава б+огу, так+им л+юдям, как мы с тоб+ой, для раб+оты ничег+о не н+ужно кр+оме бум+аги и карандаш+а."
example_text = example_text.split('. ')

print(example_text)
audio = apply_tts(texts=example_text,
                  model=model,
                  sample_rate=sample_rate,
                  symbols=symbols,
                  device=device)
Предупреждение о превышении 140 символов можно закомментировать в tts_utils.py, а с ограничением в 12 секунд, видимо, проблема не в том, что «что-то не так» делаете, а глубже:
Despite being released two years ago, Tacotron 2 is still state of the art. But it has a couple issues,” explained Petrochuk. “One, it’s not fast — it takes three minutes to produce one second of audio. And it’s built to model 15 seconds of audio.
(Отсюда) Т.е. только резать предложениями.
У меня на Windows 10 назойливо высовывается предупреждение: «UserWarning: torchaudio C++ extension is not available», хотя всё запускается благополучно. Англичанка/американка «тараторит»…
torchaudio C++ extension is not available»

Торчаудио не нужен для синтеза.
Он просто там потому что синтез живет в примерах рядом с распознаванием.
Если юзер уже настолько разобрался, то можно просто залезть в hubconf и почикать ненужное.


“One, it’s not fast — it takes three minutes to produce one second of audio. And it’s built to model 15 seconds of audio.

Ну насчет трех минут это какой-то треш, у нас на всех бенчмарках >> 1 RTS, см. в статье. А насчет 140 символов и 15 секунд, это by design. И дело тут не столько в какотроне, а в принципе в рекуррентных сетях.

можно просто залезть в hubconf
Без подсказки не пришло в голову. Спасибо!
Насчёт трёх минут – источник цитирует одного из авторов WellSaid Labs.
Насчёт трёх минут – источник цитирует одного из авторов WellSaid Labs.

А вы просто замерьте время наших моделей.


Показательно, что очередная калифорнийская компания, скорее всего привлекшая десятки миллионов долларов от инвесторов, говорит такой треш)

А вы просто замерьте время наших моделей.
Ни малейшего сомнения в корректности приведённых в статье цифр у меня не возникло. WellSaid сами не используют Tacotron. Надеюсь, что-то, в подтверждение заявленного превосходства своей технологии, у них должно быть, если дорожат репутацией.
Насчёт «замеров», кстати, – замена «cpu» на «cuda» в «базовом» примере должно сказаться на результате? – Кроме предупреждения о недостатке памяти (16Гб+4Гб), не вижу отличий.
А ограничение в 12 секунд присутствует.
А ограничение в 12 секунд присутствует.

Мы захардкодили его и поставили варнинг, чтобы юзеры делили на предложения, а не подавали туда аудио на час и не удивлялись, что все упало.


У нас полный end-2-end, далеко не все люди в комментах понимают, что e2e синтез, запускающийся в 1 строчку на тостерах, это редкость.

Что-то они там не хорошо настроили, тараторит...

Ладно, это исправляется в utils.py, меняем бэкенд на sox_io.
Такие ошибки — это version mismatch. Если у авторов бегает, значит нужно поставить их версии пакетов и не выдумывать как это все патчить. Потому что это интерпретируемый питон и когда оно свалится и какие ошибки оставит под капотом неизвестно. Отсюда эффектом домино вылезают недельные проблемы.
Поэтому, если не жалко своего времени, — свежее окружение, установка всего из requirements.txt. А где не так? Другие языки разве что сами форсят это — та же папка node_modules под проект. А окружение для С++ называется докер.
Второй момент — используйте конду, а не virtualenv. Там как минимум больше выбор бинарников, возможно даже найдется для своего некропроцессора. Но главное, там есть своя упакованная cuda, а pip в virtualenv будет полагаться на системную. Тоже источник несовместимостей.
Третий момент — обновите железо.

А это уже от PyTorch привет, тоже где-то что-то не срослось, скорее всего с какой-то библиотечкой слинковаться не может.
Да процессор без инструкций, очевидно же. При чем форсится это той же intel — очевидно же что они могли бы откатываться к легаси инструкциям в своей линейной алгебре при несовместимом процессоре, но делать этого не будут.

В случае со сбером — они не указали torch, apex и torch-blocksparse в requirements.txt, то есть там никто не озаботился протестить свой же репозиторий на свежем окружении. Ну как бы, спасибо на том, что выложили. Но вообще это не дело.
Такие ошибки — это version mismatch. Если у авторов бегает, значит нужно поставить их версии пакетов и не выдумывать как это все патчить.

Пример в колабе — это как бы наш базовый пример.
Там ставятся просто последние мажорные версии либ и мы чиним, чтобы оно работало всегда ±. Основная цель — минимализм.


Торч в колабе ставится из коробки, но подразумевается, что каждый должен смочь поставить торч на свою систему и бремя поддержки билдов лежит на FAIR.


Если нужны пакеты, докерфайлы, докеризованные билды, дистрибутивы или standalone инструкции на какие-то конкретные платформы — то добро пожаловать в тикеты на гитхабе и поддерживайте проект — донатами, коммерчески или заказами.


Просто так поддерживать зоопарк бессмысленно.

Огромная титаническая работа, большое спасибо. Было бы круто, если бы рассказали (показали) все-таки как запустить сие чудо и попробовать руками… Очень востребовано, хотя бы даже для Voip-телефонии (Asterisk).
— Есть VDS, есть виртуальная машина (VirtualBox)… Ubuntu, debian, да что угодно…
Скрипт, который установит зависимости… и какой-нибудь example.sh который можно вызвать и получить на выходе сгенерированный файлик озвучки было-бы очень круто!

Привет, этот релиз позиционируется как некоммерческий. Астериск возникает как правило тут скорее уже в коммерческих проектах. Мы пока не планируем поддерживать публичные коммерческие дистрибутивы и выкладывать интеграции.


А так вообще все запускается с единственной зависимостью — по сути нужен только PyTorch как в примере.

Asterisk — как пример, полностью открытая платформа, распространяемая по лицензии GPL.
Много различных бесплатных руководств как настроить тот или иной функционал. Ну не суть.
Ни кто не говорит про то, что бы вы сделали готовую интеграцию для Asterisk. Я говорю о том, что — я веб-разработчик, далек от Python, PyTorch — для меня это что-то неизведанное.
А хочется каким-то образом Воспользоваться Вашими трудами… И было бы очень круто, если бы уменьшили порог вхождения в Вашу технологию. Но судя по Вашему комментарию — цель вашего поста единственная — продаться. Без обид. Бизнес есть бизнес.
Ваша мысль понятна, но авторами проделана и так большая работа, которая выложена под открытой лицензией.
Для человека, знакомого с Python, здесь всё понятно. Для незнакомого… ну, извините. На то он и Open Source.

Есть сотни разных технологий, с которыми потенциально можно интегрироваться — для меня Asterisk тоже выглядит совершенно неизвестно. Почему именно с ней — непонятно.

Но судя по Вашему комментарию — цель вашего поста единственная — продаться.

Если честно, вот это выглядит довольно несправедливо.
> Я говорю о том, что — я веб-разработчик, далек от Python, PyTorch — для меня это что-то неизведанное.
> А хочется каким-то образом Воспользоваться Вашими трудами…
> И было бы очень круто, если бы уменьшили порог вхождения в Вашу технологию.

— А есть вы тоже за меня будете?
— Ага!

Не понимаю, каких бесплатных руководств вам не хватило, есть колаб, например.
Меня вот пугает астериск и порог вхождения в него.

> Но судя по Вашему комментарию — цель вашего поста единственная — продаться. Без обид. Бизнес есть бизнес.

А вот и не без обид. Почему вы так уверены, что это единственная цель? Давайте я тоже буду играть в предположения: единственная цель комментов, подобных вашим, — это выбить возможность украсть и продать?
Да что вы зацепились за этот Asterisk. Он как пример был дан…
Суть моего вопроса была такая:
У меня есть только что установленный Debian\Ubuntu\etc..., что мне нужно сделать чтобы синтезировать фразу — Привет Мир! Мое имя Вася
В самом простом случае это сводится к вызову — script.py «Привет Мир! Мое имя Вася»
Все, мне больше ничего не требуется, ни колаб, ни школаб, ни чего…
Но судя по Вашему комментарию — цель вашего поста единственная — продаться.

По идеологическим соображениям мы скорее всего не "покупабельны" для обычных подразумеваемых покупателей / инвесторов.


У нас нет венчурных инвесторов, мы не ставим цели осваивать чужие деньги и строить космолеты. Мы просто делаем качественные и красивые вещи. И иногда звезды сходятся на небосклоне так, что мы ими делимся на некоммерческой основе.


Если кто-то решит поддержать нас грантом или проектом или заказом — хорошо. Если нет — мы и так как-то уже живем, продолжим как есть.


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

Я тоже не против. Но я далек и от астериска и от явы (вроде там на яве с ним пишут интеграции). Я видел panoramisk вроде ничего так на питоне, но опять же, как описано в статье выше (blog.ploeh.dk/2021/03/22/the-dispassionate-developer), я не понимаю ваши претензии. Сделать все интеграции бесплатно, чтобы коммерсанты пользовались, нарушая лицензию, а авторы сосали лапу? Какой-то неправильный получается расклад.

Но я далек и от астериска и от явы… Сделать все интеграции бесплатно, чтобы коммерсанты пользовались, нарушая лицензию,

Кто просит сделать интеграцию? Я говорю о том, что у меня есть — Ubuntu, Debian, etc… Голая, только установленная. Что мне нужно сделать чтобы синтезировать фразу «Привет Мир! Мое имя Вася!»?
Все, мне больше ничего не нужно, остальное за Вас сделает сообщество, само напишет различные интеграции, мануалы и прочие вещи. Вы рассказываете о технологии, делаете бенчмарки, показываете какие крутые вещи она умеет делать, предлагаете попробовать вживую данную технологию, но нет не единого примера — с какой стороны к ней подойти и как ей пользоваться.

Ну базовый пример есть в тетрадке в колабе — тут выше спрашивали.


А на голой системе достаточно просто поставить питон, питорч и зависимости из репозитория и просто запустить минимальный скрипт и все.


Это не сделали так как чисто ради теста колаб проще, а кто знает что-то про питон за 5 минут у себя запустит.


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


А насчёт бурной реакции на астериск — все очень устали от инфоцыган и бизнес-халявщиков.

Чтобы не повторяться — товарищ тут прекрасно описал современное статус кво — пушьте в oss и не получайте ничего — а бизнесу хорошо


blog.ploeh.dk/2021/03/22/the-dispassionate-developer

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

Т.е. сообщество не может поставить питон с зависимостями и запустить скрипт, но если это сделают за него — сразу высококлассные специалисты напишут интеграции, мануалы и так далее?
но нет не единого примера — с какой стороны к ней подойти и как ей пользоваться.

Это не так.
Мы потратили много усилий, чтобы по сути была одна зависимость — PyTorch и чтобы работало в одну строчку. Я не знаю, как сделать проще, чем команда на питоне в 5 строк.


Есть очевидные косяки, связанные с тем, что мы решили не делать отдельный проект, не указали точные версии либ или не сделали пакеты, работающие на 10 версиях питона — но говоря простым языком — это не нужно, когда единственная зависимость это PyTorch.


Чем пример в колабе не пример — я не знаю. Там 3 клика нужно чтобы прокликать. Понятно, что мотивация Гугла при создании колаба далеко не благая, но колаб есть.


Если нужны нативные приложения на все платформы с GUI — у меня нет столько денег. Это по сути команда на каждую платформу, которую непонятно на что содержать.


Там даже бота человек уже сделал, правда он как-то странно работает еще — но он его сделал просто так, по приколу.


Если нужны пошаговые гайды — то волна юзеров, которые судя по комментам запустили — напишут как запускали на своих платформах.


Понятно, что есть элемент пакетирования внутрь конечных приложений, но повторюсь — это огромная работа и тут миллиард платформ:


  • iOS
  • Android
  • x86 — Linux / Винда / Мак + CPU
  • x86 — Linux / Винда / Мак + GPU
  • ARM
  • Интеграции в конечные приложения и с АПИ операционных систем
А вы точно мне хотели ответить? :)

Ответил просто на последнее сообщение в треде.
Но наверное надо было выше.

Сообщество может все, даже написать новую систему по генерации речи…
Есть библиотека — face recognition (на питоне сделанная). Ребята рассказали что они сделали, как они сделали, чего достигли, и как пользоваться их инструментом. В каждом проекте есть свои особенности, свои библиотеки, зависимости, свой способ вызова… Так вот, любой желающий без особых проблем может взять их библиотеку и поиграться без погружения в дебри разработки. Понять — надо оно ему или нет, если да — то адаптировать под свои задачи. Из-за того что все понятно и доступно — библиотека вирусно разлетелась по все интернету, с мануалами, howto, уроками и прочими плюшками… Здесь же — авторы провели колоссальную работу, но скажу честно — их позыва я не понял, они хотят похвастаться какие они крутые и чего достигли, дать инструмент сообществу или же стать похожими на ЦРТ Инновации…

Да… автор превратил свою серию статей ML is fun… в проект по распознаванию лиц явно популярный в Китае судя по переводам. Не знаю, аплодировать мне или ужасаться.


Поверхностное копание выдало мне другую картинку. Может конечно у меня глаз замылился, но может кто лучше тут разбирается.


Есть библиотека — face recognition (на питоне сделанная)
Built using dlib's state-of-the-art face recognition

Выглядит как будто автор на пике ML-хайпа (а картиночки и лица были на 2-3 порядка популярнее голоса особенно в 2017-2018) написал обертку над чьими-то алгоритмами из dlib пару-тройку лет назад (тогда мне на радары это попадалось, не уверен на самом деле где там первоисточник), причем последний его релиз был Apr 2, 2018 и потом комьюнити как раз эти 2-3 года писало гайды, описывало как это устанавливать на разных платформах, пока автор занимался инфо-бизнесом.


Если открыть последние инструкции — там это не выглядит как будто это активно поддерживается и ведется активная работа. Ну то есть один раз что-то собрали, хайпанули и потом забили — и все предсказуемо загрустило.


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

О чем естественно говорит 500 незакрытых тикетов, на которые никто не отвечает и где ничего не ставится и не билдится, и последний релиз на pypi более года назад.


При публикации чего-то в OSS или хотя бы в публичное пространство по идее надо брать на себя бремя развития и поддержки. Поддержка гайдов на все платформы, на все билды и дивайсы — это титанический труд, который зачастую не под силу даже Microsoft! Посмотрите на их проект ONNX runtime. Он хорош, но даже там нет всех платформ.


дать инструмент сообществу или же стать похожими на ЦРТ Инновации…

Не знаю ставилась ли цель тут получить в ответ эмоциональную реакцию, но я не до конца понимаю как в принципе можно прийти к такому сравнению.

Выглядит как будто автор на пике ML-хайпа

С таким подходом любого автора можно хаить сколь угодно и говорить что он ничтожество и зачем полез в эту нишу.
написал обертку над чьими-то алгоритмами

Здесь авторы так же не претендуют на алгоритмы… Алгоритмов много, есть экспериментаторы — которые берут алгоритмы из биологии и воплощают их в программировании, порой получаются вполне себе интересные вещи… Таксоны, эталоны построены по этим принципам.
Ну то есть один раз что-то собрали, хайпанули и потом забили

А Вам нужно готовое решение? Собрали, рассказали как это сделали, дали инструкцию как пользоваться… Порог вхождения ниже плинутса. Не надо ковыряться в чужом коде и разбираться — как это работает, потому как — автор дал подробные инструкции.
При публикации чего-то в OSS или хотя бы в публичное пространство по идее надо брать на себя бремя развития и поддержки

Зависит от поставленных целей. Программ без ошибок не бывает, любую программу можно совершенствовать бесконечно и всеравно идеала не будет. Человек выкатил вполне рабочее решение, которое повторюсь — любой желающий знакомый с Linux может взять и опробовать.
без затраты тонны сил и времени, спотыкаясь на каждом шагу (не мне рассказывать вам как тяжко бывает в линуксе руками подтягивать зависимости для сборки той или иной штуки).
— Статью прочитал, бенчмарки посмотрел (хотя мне не сведущему они вообще ни очем не говорят), я молчу про терминологию, англицизмы в перемешку с специфичными терминами данной области, если придерживаться научной терминологии, то и писать общепринятыми понятиями. Когда говорят о качестве — хочется видеть количественную оценку, а не что-то необъятное измеренное в попугаях.
— Я без каких либо претензий к автору, я просто попросил дать HOWTO с минимальным примером, т.к. данная тема мне интересна и хотелось потрогать данную технологию собственноручно. Но в меня полетели минусы, упреки и кирпичи — мол Вам надо вы и делайте.
Мне просто интересно — хоть 1-2 читателя данной статьи смогут воспользоваться наработками авторов?
Пожалуйста, не сравнивайте довольно известных западных авторов, и не самых известных российских.

Любое достаточно большое внимание на Западе относительно легко монетизируется и поддерживается сообществом, говорю, как человек, поработавший с OSS и у нас, и там. Только нацелено оно на западные же задачи. Для картинок это ок, а вот делать и поддерживать русский синтез голоса там никто не будет.

Ну бутылочное горлышко есть и там. Там были слайды, говорящие что до Numfocus numpy якобы поддерживало 10 человек чуть ли не в нищете. Но это гуглите сами точнее.


Еще прекрасный пример. Датасетopen_stt собрал за ГОД 500 долларов донатов. Понятно, что я сам дурак и сейчас его хостинг мне ничего не стоит, но в какой-то момент МЕСЯЧНЫЙ счет за хостинг стал по run-rate в районе тех же 300-400 долларов. Говоря на языке интернета — есть известное правило.


Вообще пример выше скорее тянет на инфо-цыганство 90 уровня. Тут с этими статьями ML is fun все настолько прозаично, что к ним присосались в одно время даже наши инфо-цыгане. Шутка-ли — эти статьи переводил человек, который несколько официально (кажется 3 раза) раз был уличен в мошенничестве в конкурсах на Kaggle и майнинге в их кернелах. Своя атмосфера.


Только нацелено оно на западные же задачи

И всегда нужно зрить в корень и смотреть кто, зачем и почему там что-то поддерживает. Как правило ниточки ведут всегда в кровавый энтерпрайз за редким исключением, когда автор продает не реальное что-то, а ощущение "классности" своим патреонам.

Звучит прям круто, спасибо!
А такой вопрос — вы разрешаете использование в школьных / студенческих исследовательских проектах?

Всё, где нет коммерции и / или есть очевидная польза для общества — это ок.

Как мне кажется, более актуальная обратная задача – речь в текст. Хотя на Ютубе эта фича работает, заливай видео и получай автоматическое распознавание голоса в виде субтитров.

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

Но как показывает опыт, искусственная речь быстро надоедает. Нет в ней живой экспрессии и задора. А это, как оказывается, очень важно. Скажем, я, ради эксперимента, опубликовал озвучку основных французских слов с помощью голосовых движков:

youtu.be/MWCMmgTUlDs
youtu.be/F4mD-2vf0k4

Как бы неплохо, но с живыми голосами выглядит как-то веселее.

Для STT в silero-models тоже много что есть)

Согласен с Вами, еще очень круто когда не просто речь в текст, а текст разбивает по ораторам (когда несколько человек ведут диалог)…
Да, это очень актуально, если хочешь создать субтитры для видеоролика на иностранном языке. И если речь по персонажам можно разделить хотя бы вручную, даже не зная языка, то воспроизвести правильно «буржуйский» текст на слух маловероятно, особенно, если в «ихней мове» не силен. Тем более, что Ютуб допускает немало ошибок в распознавании речи.

Диаризация у нас естественно тоже есть, но там пока не продакшен качество.
Да и честно говоря не пользуемся ей сами, а доводить до идеала нет ресурсов и мотивации.
Как-то так и живем.

Даже если бы было «продакшен качество», то вряд ли бы это закрыло проблему. Поэтому отсутствие «ресурсов и мотивации» вполне объяснимо, делать надо то, что приносит либо максимальную выгоду, либо такое же удовольствие.

Однако безвыходных ситуаций не бывает, «как минимум всегда есть три выхода, даже если вас съели» :).

Меня лично интересуют сейчас «улучшение» оригинальных обучающих роликов, либо подходящих на эту роль видео материалов. Конкретно, по французскому языку. В Интернете есть масса классных видео с чудесными голосами, отличной дикцией и разного уровня сложности.

Но претензии к ним одни и те же. Вторым языком, если он есть, обычно идет английский, а не русский. Кроме того, хотелось бы, чтобы там были паузы и повторы. Для примера, я могу дать ссылки на свои эксперименты, того, что хотел бы иметь:

Французский язык с нуля – Младший брат. Наложение двуязычных субтитров на французский обучающий ролик: my.mail.ru/mail/emmerald/video/_myvideo/2.html.
Можно скачать в: m.my.mail.ru/mail/emmerald/video/_myvideo/2.html.

Французский язык с нуля – Нубу и Яра. Наложение двуязычных субтитров на французский обучающий ролик: my.mail.ru/mail/emmerald/video/_myvideo/3.html.
Можно скачать в m.my.mail.ru/mail/emmerald/video/_myvideo/3.html.

Теперь, то же самое, но с повторами и паузами.

Французский язык с нуля 1x1 – Младший брат. Наложение двуязычных субтитров на французский обучающий ролик. Каждый видеофрагмент со звуком, дублируется тем же фрагментом, без звука:
my.mail.ru/mail/emmerald/video/_myvideo/4.html.

Французский язык с нуля 3x3 – Младший брат. Наложение двуязычных субтитров на французский обучающий ролик. Каждый видеофрагмент со звуком, дублируется тем же фрагментом, без звука и так трижды: my.mail.ru/mail/emmerald/video/_myvideo/5.html.

Есть у меня еще сайт: «Система обучения «Сколиум»: Запоминание руками + Интерактивный звук» ( scholium.webservis.ru ). Там английский язык и древняя программа. Но я готовлю ее новый вариант с дополнительными возможностями.

Таким образом, поскольку «живых» материалов в Сети валом, то особой необходимости в голосовых движках у меня нет. Есть много материалов со встроенными субтитрами, которые я учусь распознавать с помощью собственной программы, куда я включил опенсорсный видеопроигрыватель, на базе FFPlay.c. Там есть определенные успехи, но сейчас я, тем не менее, отвлекся на внешние субтитры, с которыми работать легче. Причем, есть очень хорошие ролики, которые мне нравятся, но без всякого рода субтитров. Только автоматическое распознавание текста на Ютубе. Качество, конечно, оставляет желать лучшего, как я говорил, но «на безрыбье и рак рыба» :). Зато я заметил, что прослушивание незнакомого языка многие часы подряд тоже имеет некоторый смысл. Мозг привыкает к иностранной речи, начинает как-то работать с текстом. По ночам уже сняться целые фразы, которые повторяешь, как попугай, не зная их перевода. Но это все просто эксперименты.

Главное, это слова и фразы. Для их интерактивного освоения я и пишу свою новую версию программы. Здесь такой расклад, который я провел в связи с утверждением суперполиглота Дмитрия Петрова, владеющего порядка 50 языками. Он, в частности сказал:

«350 самых распространенных слов (позже он называл цифру – 400) составляют 90% всей лексики.»

Я не поленился, скачал файл lexique-grammalecte-fr-v7.0.txt на более чем полмиллиона слов, в котором есть процент частоты использования 170 миллиарда слов из французского Интернета. Так вот из него следует такая статистика:

10 самых распространенных французских слов составляют 17,64% всей лексики.
100 слов, соответственно, дают 45,16%.
200 слов – 50,77%.
300 слов – 54,21%.
400 слов – 56,70%.
1000 слов – 65,34%.

Как видим, наш Д. Петров дал нам несколько неточные данные. Вот сказал бы, что 200 слов занимают более половины всех используемых слов, то тогда бы это было бы куда точнее. А чтобы выйти на уровень 90% нужно выучить всего лишь 14330 слов!

Вот эти слова и сопутствующие им фразы (с озвучкой, взятой из французских сайтов) и есть смысл изучать. Хотя бы 200 слов, но зато знать их надо идеально.

P.S. Извиняюсь за длинный офтоп, просто все темы, которыми интересуешься, сильно связаны между собой.

Честно даже не знаю, что ответить.


Разбирать хардсабы наверное не совсем рационально из-за низкого выхода данных.


Если речь про распознавание речи сразу на N языках, то в рамках проекта silero-vad мы держим классификатор фраз на языки, но там пока нет французского.


Он появится, но когда — не знаю.


Ну то есть пайплайн такой


  • Режем аудио на части по паузам
  • Классифицируем каждый кусочек
  • Распознаем каждый кусочек отдельно

Но что делать когда говорят одновременно на 2 языках — я не знаю.

Да отвечать, особо, ничего не нужно. Просто каждый ведет разговор о том, что близко лично ему. Вы о своем, я о своем.

Конечно, вы проделали огромный объем работы, но я как-то далек от того, чтобы каким-то образом воспользоваться вашими наработками. Я всегда ищу независимые ни от кого решения и обычно нахожу их.

Мне не кажется, что тема «text to speech» (TTS) сейчас актуальна. Еще несколько лет назад я этим интересовался, ради целей обучения иностранному языку. Но сейчас ситуация изменилась и более интересной стала обратная тема «speech to text». Хотя в тех же онлайн словарях стали халтурить и заменять живую озвучку TTS'ом. Но делают это, правда, неплохо, поэтому для изучения слов пойдет.

Поэтому, лично мне ничего особо не надо, сверх того, что уже есть. Поэтому общение здесь из разряда: «а поговорить» :).
Я вот только что добавил на Видео.майл.ру файл: «Adèle – Автоматическое распознавание речи во французском ролике.mp4» ( my.mail.ru/mail/emmerald/video/_myvideo/6.html ). Был сделан захват программно гененерируемых субтитров на Ютубе. Как видим, отдельные слова не распознаны либо распознаны неточно. Это заметно даже абсолютному новичку.
Очень круто. На голоса Ксении и Натальи у меня почему-то возникла ассоциация с журналисткой новостей на федеральных каналах.

Насчет Натальи мне тяжело комментировать, тут к авторам датасета скорее.
Насчет Ксении — это просто девушка-диктор, с хорошо поставленным голосом, которая записала для нас аудио в студии с помощью ее коллег из студии DASOUND.NET. Пропиарим студию, раз спросили =)
Интересно, если коллеги из студии или сама Ксения отпишутся)

Замечательная разработка!

Попробовал пару моделей — в принципе работает. Но заметил, что для адекватной работы требует хорошей разметки по ударениям.

А! Увидел в тексте: «В будущем мы планируем перевести все модели на более простой и унифицированный формат, не требующий ударений». Ну тогда вообще отлично!

За torch — отдельное спасибо. ;)
Кстати, такой вопрос — а разве нет стандартной базы по ударениям в словах? Чтобы сразу загружать с ними и без проблем.

Если что — я просто из другой области деятельности, слабо знаком с проблематикой. Поэтому интересно.
Задача не тривиальная, как показывает беглое гугление… Начиная от омонимов с разным ударением (атлас, как набор карт и атлас, как ткань), заканчивая большим числом словоформ… В принципе задача относительно решаемая. Если чутка еще погуглить думаю и библиотека для python найдется. Но в рамках той же языковой модели, которая озвучивает сейчас (с возможностью скорректировать при необходимости) было бы предпочтительнее конечно.

Тут основная проблема даже не в отсутствии баз с ударением, их то мы найдем.
А в том, что надо знать разбор предложения, чтобы однозначно поставить ударение.
А баз где есть и фонемы, и ударения и части речи конечно нету)


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


Но пока хотелось потратить минимум усилий по принципу 80-20.
Не хотелось бы также тащить внешние зависимости (те же pymorphy, pymystem, spacy). Скорее всего поэтому просто сделаем ударения (пусть и криво в омонимах, но такова жизнь), а потом будем думать, стоит ли дальше возиться или пусть люди все-таки сами правят ударения.

мне просто интересно: можно же скорее всего обучить другую, небольшую сеточку, которая будет расставлять ударения? Было бы достаточно размеченных данных!

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

«зАмок» и «замОк». Без контекста не определить что нужно использовать. Тут проблема не в отсутствии базы ударений для слов где с ним все однозначно.
Тут как везде: для достижения 80% качества требуется 20% усилий. Для оставшихся 20% качества — требуется ещё 80% усилий.

Ну да. Обратите внимание, что мы сразу ставим цель делать на много языков.
Поэтому двигаемся итерационно.

Таких слов очень мало, и тут можно решать как раз ручной правкой (корректурой). Полностью автоматизированной корректуры нет нигде и ни у кого, несмотря на то, что эти технологии начали развиваться задолго до распространения интернета.
полностью автоматизированной корректуры

мы уже смогли покрыть имеющиеся слова, которые покрывают 99%+ используемых слов (а если взвесить по использованию, может и больше) с точностью 98-99% — будет в следующем релизе


но что делать с именами, фамилиями, именами собственными, населенными пунктами — в общем случае только корректура

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

Да, все верно, нужно пока ставить ударения. Мы пока не допилили это. Для всех языков сразу это нетривиально.

Смотрел, как сделаны ударения в коде rhvoice — и там как-то совсем просто было, я даже поразился. Типа небольшой словарик плюс немного логики для слов не в словаре. И этого вполне достаточно, rhvoice ошибается с ударением в очень-очень редких случаях, в основном по типу "замок" — "замок". Может попробуете подсмотреть решение там?

Тут сначала надо собрать эти словари для всех языков. Но мы скорее просто включим это в нашу сетку в следующих релизах. Вообще до сегодняшнего дня мы хотели не просто ударение, а еще и фонемы добавить. Но посмотрим, к чему приведет рисеч.

Голоса звучат вполне на уровне, для свободной библиотеки это очень крутое достижение. Ударения и прочее — это дело наживное, лечится. По самому синтезу есть небольшое «дрожание» голоса на стыках звуков, а так было бы вообще неотличимо от живого человека.

Мне показалось, что довольно много "р"-кают — наверное как раз это самое дрожание

Еще примерно в 30-40% фраз проскакивает металл.

Крутая песочница для чайников! У меня правда модели после запятой теряют слово два.

Может дело в ударении?
Редко у моделей грустит атеншен и они глотают слова, такое бывает.

Спорить не буду, но просто в разных «голосах» всегда после запятой выпадало, при том, что ударения были везде.

Это бывает, но должно быть редко.
Может что-то не так с текстом.
Если реплицируется постоянный баг — то открывайте тикет в репозитории.

В вики написано, что можно добавить и другие языки. Можете написать
а) в каком формате вам надо подготовить данные
б) какие предложения дают лучшее качество
в) какой объем нужен
г) может какие еще есть рекомендации и ограничения

Да как буду у клавиатуры напишу.
Вообще пинганите меня у телеграме если потеряюсь.

Ну и раз вы в этой теме, можете ответить на вопрос: на сколько сложно имея голос на английском только, воспроизвести текст этим же голосом на русском? У пародистов же это как то получается.

Можно делать войс трансфер но если честно даже с языка на сам этот же язык оно работает не очень. Может мы что-то не так делаем, хз.


Да и у языков интонации сильно разные.


Но честно трансфер с точки зрения этики кажется уже ближе к дип фейкам и распознаванию лиц.


С точки зрения снижения количества данных это хорошо, но чего-то реально лучше 15.ai я не видел, а они не раскрывают.


Опять же — мы пробовали трансфер и мульти войс, пока не поняли зачем оно нам)

Наверное речь о тембре голоса, насколько он отделим и заменяем? Но, скорее всего, вы этим (ещё) не надумали заморачиваться… Но тема богатая, тренировать произношение отдельно от тембра.


Правда, кроме тембра и языка, в произношении есть ещё и акценты — оканье, специфика интонации, шепелявость, картавость и прочее такое, их тоже прикольно было бы выделить в отдельные слагаемые к итоговой речи и комбинировать произвольно. Уверен, что подход с тренингом моделей на это способен, если заморочиться.

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

Если коротко — нейросети запоминают комбинации звуков и интонации в связке с разметкой.


В разных языках сильно разные фонемы.


Если в рамках одного языка ударение, интонация ещё как-то выделяются и явно описаны разметкой, то в разных все сильно разное, так что хз.

Ну вот если тренировать с прицелом на подмену тембра и акцента, может что-то получиться...


Задумался, например, можно тренировать так: на входе текст, голос, и другой голос, на выходе тот же текст другим голосом… Хотя, тут выйдет лишь дипфейк… Может, и текст тут только помешает, но кажется должен помогать. Впрочем, если ваша модель первым шагом переведёт текст в один конкретный голос, и вторым шагом этот дипфейк переведёт этот один голос в любой другой голос — задача решена))


С обучением под разные тембры проблема в том, что нужно ж образцы давать на выход для сравнения, а где их столько взять, чтоб модель от тембра смогла бы абстрагироваться?.. Это для каждой фразы нужно много образцов с разным тембром и акцентом, и чтоб модель ровно в каждый из них училась попасть. Но для этого на вход нужно что-то про тембр дать. Номер, а лучше прям образец. Чтоб из образца сеть имела возможность взять тембр, образец должен быть сравним с эталоном — значит, либо записан по фиксированной фразе, либо должен сопровождаться фразой эталонным голосом, либо сопровождаться текстом, по которому эталонное звучание сможет себе понять сама сеть...


А ещё тут система распознавания текста из речи в тему, она исходно учится тембры и акценты отсекать от того, что содержит сам текст, возможно это в данной задаче можно как-то применить...

Вообще всякие Ганы типа cycle gan смогут это выучить… но тут кажется что исследований тут на год — два, а профит уже сильно менее понятен


Кажется очень прикольным но весьма эзотерическим

я придумал как сделать =)
one-shot и few-shot конечно не выйдет
но я думаю если все получится, нас ждет много интересного

Эффект «зловещей долины» вошел в чат с первой же картинки, но статья все-таки довольно интересная

Ну насчёт долины вы немного преувеличиваете, металл проскакивает, но в 60% случаев долины нет. Но это конечно не предел.

Однако, хорошо звучит! Байя — "Смогу ли я добиться этого?" — удивительно реалистично.

Какие странно ассессорам она меньше понравилась.
Но она самая человеческая.

За всеми зайцами погонишься — ни одного не поймаешь. Для английского качество отличное. А вот с русским беда, для отдельных слов интонации нормальные, но цельные предложения звучат неестественно.
Я так понимаю, фичи натренированы воспроизводить именно слова, контекст предложения совсем не учитывается. И фичи по n-граммам не работают — иногда при опечатках начинает сильно глючить и выдавать странные звуки.
Старые системы для аудиокниг, на основе склеек, работают гораздо качественней и производительней.


Недавно тоже захотелось разработать TTS модель, архитектура получилась похожая на FastSpeech, пока пытаюсь организовать эффективный расход памяти, потом надо будет навесить кучу эвристической предобработки.
Цель у меня вполне конкретная — добиться "живого" голоса для одного языка, чтобы не стыдно было видео озвучивать или книги. Не знаю закончу ли когда-нибудь, но думаю, что-нибудь качественней голых клонов такотрона в опенсорс еще не скоро выйдет.

  • Интересно, нам наоборот казалось, что на английском качество не очень. Всем, кому показывали, так же казалось.
  • Может просто вы пробовали без ударений и знаков препинания?
  • Насчет остального я даже хз что ответить, ну разве что каждому свое?
  • Причем тут нграммы я тоже не понял.
А как сохранить ваш звук в аудио файл?
Обычно:
torchaudio.save('some.wav', audio[0], rate)

но:
ValueError: Expected 2D Tensor, got 1D.

Хорошо, конвертируем:
torchaudio.save('some.wav', audio[0].view(audio[0].size()[0], 1), rate)

но все равно ошибка:
RuntimeError: Error opening 'some.wav': Format not recognised.

Чекнул. Возвращается лист 1D тензоров.
Вот минималистичный пример для колаба


import torchaudio

for i, _audio in enumerate(audio):
  torchaudio.save(f'test_{str(i).zfill(2)}.wav',
                  audio[0].unsqueeze(0),
                  sample_rate=16000,
                  bits_per_sample=16)

from google.colab import files
files.download('test_00.wav')

Проверил файл, все вроде ок.
Вообще вот документация — https://pytorch.org/audio/stable/torchaudio.html#i-o-functionalities — тут вроде все просто

Вы молодцы, но Не Надо Так Писать Заголовки, Пожалуйста, Русский Язык — Не Английский. Очень Раздражает, Как Будто В Секту Маркетологов Попал. Спасибо.

Не увидел в статье, на какой связке решили остановиться?
Судя по производительности, Tacotron2 + LPCNet либо с заменой Tacotron2?
Очень круто.
Как свой голос синтезировать? (Допустим, я готов записать 10 часов своего голоса)

Попробовал найти вас в телеге.
Пинганите напрямую, если я ошибся адресом.

Благодарствую за статью, сильно сэкономили время на разбор текущего состояния offline stt & tts.

Алгоритм ведь способен ухватывать общий контекст читаемого текста заблаговременно до чтения, как и данного абзаца, предложения, каждой отдельной грамматической основы сложного предложения (можно даже иерархию этих грамматических основ вычленить)? Следовательно, в контексте могут остаться слова с правильным ударением: если речь об архитектуре зданий, то применимо будет слово зАмок, а не замОк.
Второе: некое шипение и прочие паразитные эффекты, вероятно, можно гасить простыми акустическими фильтрами наподобие как в Sound Forge — на выходе будет чистое звучание. Так же можно готовыми и открытыми фильтрами без потерь качества менять тон и скорость.
можно гасить простыми акустическими фильтрами наподобие как в Sound Forge — на выходе будет чистое звучание.
Так же можно готовыми и открытыми фильтрами без потерь качества менять тон и скорость.

А вас не затруднит выложить какой-то минималистичный код применения такого фильтра, допустим с использованием scipy?

С этим сложно, к сожалению. Надо выбрать время. Для начала я попробую прогнать ваши сэмплы через фильтры в саундфордж или даже в онайн-сервисах, так имею некоторый опыт работы со звуком, точнее восстановления некачественных аудиозаписей. Фильтры шумоподавлений и настройки корректировки обычно все есть в опенсорс, в том числе для php, но чтобы разбираться с этим нужны как минимум выходные — с этим проблема.
Буквально двадцать минут поигрался с настройками фильтра Noise Reduction — результат вполне ощутим, и можно добиться бОльшего.
А пока вот, на базе оригинала «Baya 16k Tongue Twister» — специально взял сэмпл с более высоким качеством чтобы доказать возможность дальнейшего улучшения:
drive.google.com/file/d/1bnCnSWDCreEj3APeYt6pwdlj03rGmPZt/view?usp=sharing
и ваш оригинал для удобства сравнения:
drive.google.com/file/d/1pfPAT7wP5nrmFMR-5KYkgkDzROyTXx8g/view?usp=sharing

Звучит и правда получше.
Денойзинг нейросетевой мы ещё какое-то время будем делать, а как-то песок убрать наверное можно и попроще.


А что это за фильтр, где, есть ли у него описание, математическая формула и / или какие-то стандалонные имплементации?

Спасибо, затестим и если будет помогать
Постараемся переписать на торч и засунуть внутрь модели

Я использовал первый попавшийся онлйн-фильтр подавления шумов так как без разницы в саундфордже это будет или где угодно — принципиально это одно и тоже, как и настройки. В выходные могу поставить Сундфордж и потыкаться посерьёзнее. Скрин настроек выслал.
У меня дичайшее подозрение по поводу возникновения шумов в вашем генераторе — почему нет сразу чистой речи? Неужели всё дело в каких-то ограничениях дискретизации при генерации звука чтобы меньше грузить процессор? Или, может быть, ваша нейронка изначально сделана на базе произносимых слов с плохим качеством записи с неочищенными шумами? Вот и переняла шумы как мусорные гены в ДНК (дурную наследственность).

дискретизация там конечно есть для упрощения предсказаний
причем как в такотроне так и в вокодере
но сами аудио довольно чистые

Думаю конечно, что реальная причина в том, что AMD просто не инвестирует в алгоритмы / софт / драйвера.
AMD на порядок меньше, чем Intel или Nvidia.
В драйверах для ML вроде вот-вот догонят, но нет.
В играх вроде догнали.

По моей ссылке там бенчмарки показывают 25-90% прирост при патчинге. У вас сопоставимо было или еще хуже?
А так конечно Intel вкладывается в MKL чтобы покупали их процессоры, тут вопросов нет.

У вас сопоставимо было или еще хуже?

А я просто прочитал статью, сделал закономерный вывод, что патч будет иметь явно временный срок годности и забил.
Билдов торча нацеленных AMD без MKL особо нету, а при сборке на мобилу / ARM / тостеры все равно кастом и возня.


Хочешь ультра скорости — используй GPU. В обратном случае — на AMD оно хотя бы быстрее реалтайма.


PS


И да, жду пока хейтеры из комментов напишут, что надо инструкции на все версии процессоров AMD на 10 лет назад написать xD

А я просто прочитал статью, сделал закономерный вывод, что патч будет иметь явно временный срок годности и забил.
Я не про патч, а про бенчмарки. Фраза в статье — «Процессоры AMD показали себя сильно хуже», насколько хуже не сохранилась информация? На 30% или в 2 раза.
Сам я ничего не патчил, но, может, и пропатчу, когда для аугментации в параллель с GPU не будет хватать 20%. Пока обхожусь (о ужас) оптимизацией своего кода.
И да, жду пока хейтеры из комментов напишут, что надо инструкции на все версии процессоров AMD на 10 лет назад написать xD
Некоторые комментарии тут странные и видимо не понимают объем расшаренной с сообществом информации, докапываясь до какой-то херни.

Один из самых лучших синтезаторов и самый лучший по качеству голоса.
Есть конечно проблема с ударениями и невозможностью чтения цифр, но думаю это легко исправляется (хотя бы второе).
Но большая просьба написать гайд по установке этого чуда, в статье толком непонятно.

Есть конечно проблема с ударениями

Это будет в следующих релизах.


и невозможностью чтения цифр

Имхо, голос не должен уметь делать этого.
Нормализация и нарезка на предложения это отдельный алгоритм, который будет к тому же отличаться от домена применения.

Но ведь другие синтезаторы умеют это делать (PHVoise к примеру или тот же гугл)

ну добавьте на своей стороне предобработку текста и будет работать.

Я бы добавил, но я так и не разобрался как сие чудо установить))

Выше писал как потыкать в колабе.


Поскольку конкретное окружение не описано, то предполагаю, что нужно установить на десктоп, обычный комп:


  • Вероятно у вас уже стоит третий питон и пакетный менеджер conda. Загуглите как поставить конду и питон в обратном случае. Я предпочитаю миниконду, но на вкус и цвет;


  • Поставить PyTorch нужный вам билд(CPU / GPU) с нужными вам зависимостями (обычно ограничивается ОС + версия питона + версия CUDA / CUDNN). Торч тоже ставится через конду обычно. Если не хочется морочиться с карточками, то CPU версия нормально работает. Вообще конечно рекомендуется брать торч из официальных билдов на докер-хабе и запускать в контейнере, но на вкус и цвет;


  • Поставить через пакетный менеджер omegaconf и torchaudio. Для запуска эти либы не нужны, просто первая читает конфиг, а вторая нужна для STT, который лежит в том же репозитории (у меня и без нее запускается в колабе). Если разбираетесь в питоне, можно просто влезть в утилиты и вообще не ставить это все;


  • После этого заведется базовый скрипт:



import torch

language = 'ru'
speaker = 'kseniya_16khz'
device = torch.device('cpu')
model, symbols, sample_rate, example_text, apply_tts = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                                                      model='silero_tts',
                                                                      language=language,
                                                                      speaker=speaker)
model = model.to(device)  # gpu or cpu
audio = apply_tts(texts=[example_text],
                  model=model,
                  sample_rate=sample_rate,
                  symbols=symbols,
                  device=device)

  • Меня спрашивали в паре мест, что возвращается в объекте audio, вот очевидная копипаста:

import torchaudio

for i, _audio in enumerate(audio):
  torchaudio.save(f'test_{str(i).zfill(2)}.wav',
                  audio[0].unsqueeze(0),
                  sample_rate=16000,
                  bits_per_sample=16)

from scipy.io.wavfile import write

def float_to_int(wav):
  wav *= 32767
  wav = wav.astype('int16')
  return wav

for i, _audio in enumerate(audio):
  write(f'test_{str(i).zfill(2)}.wav',
        rate=16000,
        data=float_to_int(_audio.numpy()))

  • Как вывести аудио на динамики из питона — я просто не знаю, т.к. мне не нужно. Я слушаю или в ноутбучке или просто встроенным аудио-плейером с диска;

Так понятнее?

Не слышал про PHVoise, но если речь про RHVoise, то вероятно там в одном пакете собраны и голоса и специфическое middleware, которое работает с ОС. Тут слово его авторам.


гугл

Это платный коммерческий продукт.


Если вы закажете у нас коммерческий продукт на базе синтеза, то естественно там под конкретный домен будет и нужная нормализация, и пре-процессинг и какие-то свои фишки, нужные для этого домена, которые придется 100% допиливать напильником.


В общем некоммерческом релизе, решающем одну конкретную задачу — синтез голоса — не должно быть middleware. В этом отличие идеологии "правильных точечных инструментов" от "привлечь много денег, написать много кода на все случаи жизни, деньги кончились, смерть", если утрировать конечно.


Также тут есть отдельный момент того, что если допустим зачем-то вложить x10 ресурсов и из коробки покрыть все юз-кейсы (все прлатформы, билды, драйвера, middlware на каждый итд итп) скажем так налетят "бизнес-халявщики", которым насрать на лицензию, и завтра мы не только увидим свое решение на "горбушке", но и на нас еще превентивно подадут в суд за нарушение авторских прав (без шуток).


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


Если продукт не продукт, а вы — продукт, то это плохой продукт =)

Я полностью с вами согласен, но гугл я привел как пример того что умеет читать цифры.

Никаких идей коммерческого использования у меня нет. Я хотел его б использовать чисто в личных целях (умный дом к примеру или подобное)

Ну тут несложно придумать нормализацию цифр на коленке через тот же num2word за 5 минут. Оно покроет ваши простые кейсы и норм

Это я понимаю. Но тут в основном проблема в том что я не понял как именно это установить. Я был бы очень благодарен если б вы написали какой нибудь гайд по установке. А дальше я как нибудь сам разберусь)

Да спасибо. Я просто не увидел когда коммент писал

А как быстро сравнить генерации качество? Есть сервис, или откомпилированное, или что-то похожее колаб?
Сделал расстановку ударений по словарю на ~ 1 500 000 слов, но этого видимо мало, надо делать отдельную сеть для ударений. Понравился голос Байи, но при синтезе больше всего пропадают слова.

Кусок статьи начитанный Ксенией с моей авто-расстановкой ударений:


Отсутствие ударений и числа конечно сильно смазывают вау-эффект =)
Места интонация очень классная, паузы, там запятые и тире.

Прямо слышно, как резко меняется интонация при смене окна контекста. В этом основная проблема: на 1 предложении звучит хорошо, а на связном тексте слышно, что читает робот, который вообще не понимает смысл текста. При этом декодер в принципе звучит нормально, а артефакты — по типу того, что делает кодек при общении по скайпу.
Короче, нужно тренировать на абзацах, а не отдельных предложениях, и заменить в такотроне лстм на трансформеры с воооот такенным окном контекста. Чисто на мой взгляд мимокрокодила, потому что скорее всего пейперы на эту тему уже есть.
Прямо слышно, как резко меняется интонация при смене окна контекста.

Наш синтез принимает на вход предложения, а не целые текста by design.


а на связном тексте слышно, что читает робот, который вообще не понимает смысл текста.

Обратите внимание, что там где вероятно вы видите артефакты стоят скобочки.
Хоть сетка их и видела, но ее реакция немного сильновата.
Так что тут я бы не спешил с выводами.
Где скобок нет, местами неидеально, но 95%.


Короче, нужно тренировать на абзацах, а не отдельных предложениях, и заменить в такотроне лстм на трансформеры с воооот такенным окном контекста.

Среднесрочно — это противоречит целям нашего проекта по паре причин:


  • Я хочу, чтобы весь e2e пайплайн (сетка) весил максимум 5-10 мегабайт. Достижимо пока наверное сделать 20-30 мегабайт. Огромные трансформеры тут не вписываются;
  • Я хочу, чтобы наша сетка имела 10-20 RTS после всех оптимизаций. Опять же — трансформеры тоже не хочется;
  • Отдельная ремарка про повышение порога входа, гигантские счета за их тренировку, снижение демократизации, и сомнительная маржинальная полезность на кейсах кроме поиска Гугла (если считать реальный value for money и цену обладания);

Долгосрочно — если конечно кто-то будет готов заказать такую систему с идеальной интонацией на абзацах с идеальным спикером — то в принципе довольно очевидно как запилить это. Но мне кажется тут есть огромная пропасть между продуктами для ультра-богатых и реальной платежеспособностью даже бизнес пользователей.


Чисто на мой взгляд мимокрокодила, потому что скорее всего пейперы на эту тему уже есть.

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

Обратите внимание, что там где вероятно вы видите артефакты стоят скобочки.

Да, это то, что первым бросилось в глаза. А потом я прислушался и услышал вот эту пилообразную манеру питча — начинать с высокой ноты и дальше спускаться. Люди делают также, но не режут себя вдоль предложений, как будто они висят в вакууме. А еще в двух предложениях подряд, начинающихся с тех же слов, абсолютно идентичная интонация.

Среднесрочно — это противоречит целям нашего проекта по паре причин

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

Я хочу, чтобы весь e2e пайплайн (сетка) весил максимум 5-10 мегабайт. Достижимо пока наверное сделать 20-30 мегабайт. Огромные трансформеры тут не вписываются;

Почему огромные? Средние. Такотрон тоже небольшой. Все, о чем я говорю, это скейлапнуть контекст путем перехода с забывчивых лстм. С тем же размером контекста скорее всего даже выигрыш будет по сравнению с. Вон кто-то на гитхабе утверждает, что TransformerTTS в 4 раза быстрее такотрона (правда, почему-то первого) github.com/soobinseo/Transformer-TTS. Далее нужно плавно скейлапнуться от предложения к абзацу. Как раз наверное 5 мегабайт и превратится в 20.
Почему огромные? Средние.

От такотрона мы конечно откажемся впоследствии. Но с чего-то надо было начинать уже.


Я думал вы хотите предложить как обычно прикрутить сюда BERT или миллиард его аналогов. BERT BERT BERT BERT BERT BERT BERT.


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

Это реально весело, мы до сих пор с этого не нарадуемся.
Даже некоторые комменты тут в таком духе.


Но поверьте на Западе все наелись AI булшита и там все проще — никто ничего не купит, пока нет 3 референсов от компании их той же сферы.


Бабло жгется только корпорациями и в венчуре. В реальном бизнесе там так же.


Особенно учитывая ориентацию на российский рынок

Мы сразу строим 90% всех продуктов на 5 языках.
Ее как бы нет, но она как бы есть.


Как бы это ни было прискорбно, Россия проиграла в холодной войне и типичные американские менеджеры верят в "русских хакеров" и ненавидят русских.
Конечно с улыбкой, толерантно и лицемерно.

Для использования на комерческих проектах нужны цифры, даты / время, если ударения можно исправить, показать пользователю интерфейс где бы он их расставил, то в остальнoм нужно решать
показать пользователю интерфейс где бы он их расставил, то в остальнoм нужно решать

Ударения мы естественно включим внутрь наших сеток


Для использования на комерческих проектах нужны цифры, даты / время, если ударения можно исправить

А вот middleware и дистрибутивы уже только в рамках коммерческих проектов, а не открытого некоммерческого релиза

Когда включите то напишите мне, и уровень цен, мне нужна озвучка на голосовые меню на французском

Вы всегда можете написать в личку в телеге если нужен кастом.

Я добавил опрос про используемые платформы.
Прошу всех, кто проголосовать

Что на счёт англоязычной/испанской/etc. речи? Есть ли схожие по качеству альтернативы open-source, реально ли малой кровью переделать ваш продукт под другой язык (или это будет просто с нуля написанный алгоритм), планируете ли вы подключать другие языки?
Заранее спасибо за ответы)

А чем текущие модели не подходят?


Screenshot 2021-03-31 134539


реально ли малой кровью переделать ваш продукт под другой язык (или это будет просто с нуля написанный алгоритм), планируете ли вы подключать другие языки?

Давайте датасет, мы сделаем, выложим.

Может есть примеры использования на C#? Есть проект (для себя) — с удовольствием бы попробовал

Там есть какие-то байндинги для торча но все эти проекты кажется не очень живые
Наверное кажется проще всего вызывать питон или сишное АПИ питорча и писать файл на диск, а потом подхватывать
Ну или просто сделать правильно архитектурно — воркер на питоне / сишном апи + rabbit mq

При старте модели она разогревается первый раз
Поэтому лучше через кролика

Я вот думаю, а есть инструкция, как можно на вашем решении оцифровать свой голос для синтеза?

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

привет, на первый вопрос ответил в личку


про второй — тут такой момент, что вроде как возможно делать супер качественный голос на базе 2-3 часов речи, но пока не до конца понятно насколько это достижимо


обычно говорилки делают на 2-3 часах речи, а условно "неотличимые" голоса — на 10 — 15 — 30 часах (примерно)


мы еще не делали исследования на тему насколько низко может опуститься мы


идея такого проекта валидная, но тут кратко описал почему это такая себе затея с бизнес точки зрения — https://habr.com/ru/post/549480/?reply_to=22873136#comment_22869650


если конечно не ставить целью освоение денег инвесторов)

Звучит отлично!, Наверное, можно да же игры озвучивать, типа baldurs gate 3.

Ну в играх важно разнообразие и там люди "играют" голосом
А тут ровно более менее

Добрый день, спасибо вам большое за проделанную работу!
У меня проблема — я тупой.
Подскажите, пожалуйста, где установочный файл на Виндовс 10 и как это установить?
Спасибо за ответ.
Спойлер: ждем пока простой установщика под Виндовс для тупых обезьян. На данный момент его нет.

Десктоп приложений и интеграций в существующие приложения нет для W10, равно как на 10 остальных платформ по причине отсутствия команды разработчиков на каждую платформу (понятно, что люди могут пересекаться, но это команда из 2-3 людей + дизайн + поддержка итд итп).


Причина — проект некоммерческий и открытый.
Хотите плагин в свою любимую читалку — напишите или интегрируйте.
Хотите какие-то гайды / пакеты / инсталлеры — закажите у нас коммерческие услуги или сделайте донаты.


У нас почему-то считается, что все должно быть бесплатным, и авторы не должны получать вообще ничего. Мы не придерживаемся это идеологии. К примеру — проект OpenSTT за год набрал 500 долларов донатов. С момента как я добавил донаты в silero-models — пока было несколько десятков тысяч просмотров и несколько сотен инсталляций проекта (если судить по количеству раз когда репозиторий клонировали) — но ноль донатов.


Если бы условно 500 человек скидывались по 5 долларов в месяц, то это бы позволило в принципе выделить ресурсы на пакетирование и возможно изучить рынок читалок и даже нанять человека на это.


Но пока увы — коммьюнити у нас голосует своими действиями.

Байя лучшая! Голос очень приятный

Хм… а зачем описание на английском, если это датасет для русского голоса?

Большая библиотека готовых голосов на разных ЯЗЫКАХ

Добрый день,

Интересует возможность встроить TTS в носимые устройства на микроконтроллерах для создания интерфейса для слабовидящих и незрячих.

Это возможно?

Какой объем исходного кода и какие требования к железу.

Спасибо.

Это возможно?
Какой объем исходного кода и какие требования к железу.

В этой статье есть оценки по скорости работы на 1-2 потоках процессора.
Вообще ускорение еще в несколько раз и снижение размера модели в несколько раз не за горами.


Про объем исходного кода не подскажу, т.к. мы используем PyTorch — там есть сборки под ARM и / или lite сборки под мобилку. Lite вроде занимает в районе 70 мегабайт.


В тикетах нашего VAD кто-то писал, что успешно гонял VAD на ARM и на мобилке — https://github.com/snakers4/silero-vad/issues/37.


Текущие модели занимают в районе 100 мегабайт, но это далеко не предел.

Спасибо за проделанную работу!
Немного не понял один момент, на каком вокодере (vocoder) в итоге базируется решение?

Так, мы опубликовали новую ультимативную версию нашего синтеза в нашей новой статье на Хабре - https://habr.com/ru/post/660565/, считайте это продолжение этой статьи


Краткое содержание:

  • Снизили размер модели в 2 раза;

  • Научили наши модели делать паузы;

  • Добавили один высококачественный голос (и бесконечное число случайных);

  • Ускорили наши модели где-то примерно в 10 раз (!);

  • Упаковали всех спикеров одного языка в одну модель;

  • Наши модели теперь могут принимать на вход даже целые абзацы текста;

  • Добавили функции контроля скорости и высоты речи через SSML;

  • Наш синтез работает сразу в трех частотах дискретизации на выбор — 8, 24 и 48 килогерц;

  • Решили детские проблемы наших моделей: нестабильность и пропуск слов, и добавили флаги для контроля ударения;

Статья почему пока собирает меньше, чем прошлые, хотя синтез там на порядок лучше, так что если вам были интересны прошлые версии синтеза, то прошу поддержать статью =)

Хабр проводит раз в год конкурс статей Технотекст. Я рассудил, что в номинации машинное обучение эта статья с 200+ рейтинга, 50к просмотров и 500 закладок должна хотя бы попасть в шорт-лист.

Но я ошибался и Хабр даже не включил эту статью в список для жюри. Полагаю, что это как минимум странно. Буду признателен за ваши соображения, критику и привлечение внимания к этой теме.

Вт ссылка для обсуждения - https://habr.com/ru/company/habr/blog/677942/comments/#comment_24559464

Спасибо.

Sign up to leave a comment.

Articles