Pull to refresh
21
-1
Гриша Стерлинг @sterling239

Speech processing

Send message

Там фишка в данных, их мы конечно не выложим. А код обычной модельки есть на https://github.com/sberdevices/qtacotron, он несложно адаптируется под русский язык на буквах. В общем из коробки не заработает, но результат окупит потраченное время ;)

кстати у тех же авторов, которые придумали такотрон, была статья про speak fluently in foreign language, мы года полтора назад что-то попробовали, и наши голоса научились разговаривали по-английски, но со странным акцентом. История отложилась, но когда-нибудь точно докрутим качество до приличного
привет! спасибо за вопросы :)

1. Мы пользовались MFA (montreal forced aligner) со своей калдевой моделькой, чтобы посчитать тайминги слов, и найти места в предложениях, где есть паузы (длительность тишины больше x мс). На инференсе это действительно является частью препроцессинга текста (классифицируем каждый токен, нужно ли после него поставить паузу), запускается до такотрона, а в него подаем текст уже с токенами пауз

2. Пробовали, и там шило на мыло. Сложность фонемного синтеза в том, чтобы построить качественную g2p модель. К сожалению, они ошибаются примерно также часто, как и такотрон, обученный на графемах. Вообще сейчас мы движемся в сторону гибридного синтеза, когда большинство слов озвучиваются как есть, а если синтез в каком-то слове ошибается, мы пишем текстом его транскрипцию (типа интернет -> интернэт)

3, 5. Решили не нагружать текст деталями :) Выход такотрона полностью определяется вокодером, который потом озвучивает спектрограммы. Мы используем LPCNet, для него нужны особенные фичи (20-мерные bark-спектрограммы и 2 отдельных фичи — pitch и pitch gain, в сумме 22), и тако их предсказывает. Про вокодеры мы вообще планируем отдельный большой текст, там все подробно расскажем

4. Размерность текст энкодера оригинального тако = 512. При добавлении новых модулей нам было важно, чтобы по скорости все было не хуже, поэтому, добавив topic embedding и word labels embedding, нам пришлось уменьшить text encoder. Мы уменьшили его до 384, и к нему конкатим дополнительные эмбеддинги (2 по 64). Все фичи делились на 5 бинов по 20%. Среди фичей — громкость (не честная, а просто std вейвформы слова, но этого хватает), скорость (тут сложнее: у нас есть средние длительности произнесения каждой буквы, и мы считаем ожидаемую длительность произнесения слова и фактическую; фича loudness — это отношение действительной к ожидаемой), и три фичи про pitch (наклоны и среднее). Word labels predictor для каждого слова предсказывает бин для каждой из 5 фичей (то есть размерность его выхода [1, num_tokens, 5]), потом для каждой фичи есть свой эмбеддинг слой (размерностями где-то 8, где-то 16), мы их конкатим и получаем финальные 64. Ну и в сумме получается 512 :) И сразу отвечу на возможный вопрос: конкатить оказывается лучше, чем суммировать

Все дикторы работают по-разному, но в среднем это один час хороших данных за 4-5 часов работы диктора в студии

Про воспроизводимость: конечное качество вокодера зависит не только от самого вокодера, но и просто от голоса, на котором он обучается. LPCNet например на мужских голосах работает хуже, чем на женских (разница между ground truth и кописинтезом для мужских голосов на слух больше), или на одном голосе лучше LPCNet, а на другом — WaveGlow. Но еще и результаты из статей иногда не воспроизводятся, ParallelWavegan например у нас совсем плохо озвучивал
Про GAN и в том числе MelGAN можете прочитать ответ выше. Мы много чего пробовали, но там проблемы с воспроизводимостью. В наших экспериментах single speaker LPCNet работает наиболее качественно из тех вокодеров, что могут держать реалтайм на 1 ядре цпу. С мультиспикером еще что-то пробовали, но работает хуже. А вообще про вокодеры тоже напишем статью, там было много подводных камней типа замены подсчета pitch от алгоритма Ына на Reaper
привет! Синтез можно послушать в устройствах Сбера (SberBox и SberPortal) и в мобильных приложениях СберБанк Онлайн и Сбер Салют
Это уже баян. Дата-сатанисты уже уходят, дата-сталинисты не все поймут. А в одс на новый год обещали подарки от дата-санта-клауса
«В идеальном мире ежедневный прирост стоимости финансовых активов будет укладываться в нормальное распределение»

Ну только не нормальное, а логнормальное. Дальше не вчитывался
Пост навеян конкурсом на каггле?
Кстати, всегда удивлялся, почему люди, которые рассказывают нам о том, как миру нужны [профессиянейм], сами занимаются популяризацией/преподаванием/лекциями, а не [профессиянейм]
так, я пошел качать эмулятор сеги
Увидел 282 в названии и подумал, что про тут про насилие. Затем увидел про CSS и окончательно в этом убедился
Ну едрить вы закликбейтили
Поздравляем! Вы стали автором 1000000000000000000000000-го поста про блокчейн и бетховен! Чтобы забрать приз ЖМИ!!!
А как синтез речи в яндексе происходит? Насколько я знаю, есть два с половиной подхода: компоновать заранее записанные фонемы, генерировать спектрограмму, и работающий в 100 раз медленнее реалтайма wavenet. Минус первого — безэмоциональность, минус второго — «железность» звука. Что яндекс делает в этом направлении?
А сравнение фрйемворков на каких-нибудь бенчмарках кто-нибудь проводил?
По заголовку подумал, что пост про майнинг
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity