Одна из моих болей и проблем — это долгое чтение статей. Если мне статья искренне интересна, я могу читать её по меньшей мере часа 2, запрыгивая в детали и утопая в синдроме ссылки Википедии. Эту проблему нужно решать, так как начитанность важна и нужна. Из раза в раз я пытаюсь себя научить читать быстро, моя цель — это 25 минут на поверхностную статью и час на хорошую и глубокую. Вот сегодня час у меня ушёл на чтение поста от Gonzo-обзоров, из текста я не поняла техники подробно, села читать отдельно и делать свои технические заметки. Они внизу.
Рассказывайте, как вы читаете статьи?
У меня поверх всегда помогает музыка этих двух плейлистов (один, два)
Рассказывайте, как вы читаете статьи?
У меня поверх всегда помогает музыка этих двух плейлистов (один, два)
❤8❤🔥1🔥1
Byte Latent Transformer: Patches Scale Better Than Tokens
О том, как уйти от токенизации.
code
paper
🧸 Этап 1 - раздели на патчи. Формально из последовательности x = [x1, x2, … xn] мы уходим в последовательность [y1, y2, ym] m < n, m - number of patches, где на каждый x_i делаем предсказание является ли он началом нового патча.
🧸 Теперь нужно выбрать функцию, которая расставит нам этот лейбл. По сути для наивной токенизации мы делаем похожую штуку (если это не Byte Level), а какой-то wordpiece, только patches - это просто токен для нас, который при этом создается динамически.
🧸 На выбор представлены функции:
1. strided patching every k bytes - просто разделим на фиксированные патчи, как n-grams
2. space patching - создаем новый patch, когда встречаем space like byte.
3. entropy patching - создаем новый patch если сложно (high entropy) предсказать следующий токен в сравнении с предсказанием на всю последовательность (global entropy threshold) или предыдущих (relative to the previous entropy). Мне нравится второй из-за мотивации нахождения пойнта, который разбивает монотонность генерации.
——
🧸 Архитектурно мы просто раздробили этап “токенизации”, где сначала процессим наши эмбеддинги с маленьким трансформером, который динамически создаем нам patches, а потом с большим, который берет на вход patches и их же предсказывает, отдает обратно в маленький декодер и он предсказывает байтовые представления.
Берем маленький трансформер, он передает последовательность битов в последовательность патчей. Для этого сначала эмбеддинги аугментируются с encoder hash n-gram embeddings, проходят обычные трансформерные слои. Дальше мы используем cross-attention, но уже на patches, где используем маску на key, val, а на queries делаем pooling относительно локального патча. Интересно, что слои трансформера используют local block causal attention mask, что позволяет каким-то patches пересекаться (!)
В local decoder все также, только теперь byte representation это queries, а patches - это key values.
🧸 Весь мед такого подхода - это возможность когда-то делать динамическое аллоцирование памяти и ресурсов. Также это решает проблему накопленной ошибки от токенизации в целом. Подробнее про причины [тут].
#grokaem_nlp
О том, как уйти от токенизации.
code
paper
1. strided patching every k bytes - просто разделим на фиксированные патчи, как n-grams
2. space patching - создаем новый patch, когда встречаем space like byte.
3. entropy patching - создаем новый patch если сложно (high entropy) предсказать следующий токен в сравнении с предсказанием на всю последовательность (global entropy threshold) или предыдущих (relative to the previous entropy). Мне нравится второй из-за мотивации нахождения пойнта, который разбивает монотонность генерации.
——
Берем маленький трансформер, он передает последовательность битов в последовательность патчей. Для этого сначала эмбеддинги аугментируются с encoder hash n-gram embeddings, проходят обычные трансформерные слои. Дальше мы используем cross-attention, но уже на patches, где используем маску на key, val, а на queries делаем pooling относительно локального патча. Интересно, что слои трансформера используют local block causal attention mask, что позволяет каким-то patches пересекаться (!)
В local decoder все также, только теперь byte representation это queries, а patches - это key values.
#grokaem_nlp
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8❤🔥3👍2🔥2🥰1
Total-duration-aware duration modeling for text-to-speech systems
paper
#grokaem_audio
Про скорость в tts мы краем глаза смотрели тут. Одна из проблем того же dubbing - регулирование скорости: речь в исходном языке должна быть по длине как и в таргет. Для этого мы можем использовать post-processing, когда мы ускоряем весь семпл. Также можем довериться самой TTS модели (implicit) или каким-то образом передавать durations (explicit). Наша задача здесь - это сделать модель, которая и будет предсказывать durations на sequence фонем.
Для предсказания этих durations мы можем тренировать модель как regression с MSE, маскируя рандомно durations, также можем делать предсказание с flow-matching. Авторы предлагают два ключевых изменения:
👍
1. вместо просто маскирования также передавать и duration, который остался. Грубо говоря, мы замаскировали n durations, общая duration 30 frames, после маскирования осталось 22, тогда в модель вместе с маской мы передадим 8 на каждый из n durations (d_tgt).
2. также вместо просто трансформера авторы используют MaskGIT, который отличается итеративным предсказанием маскированных токенов: выбрал k с наибольшей уверенностью, вставил их в sequence, предсказал заново. Так и с нашей duration моделью - предсказали k durations, уменьшили коли-о фреймов, которые передаем с маской (d_tgt). И так пока d_tgt не будет равна 0.
👍
По метрикам MaskGIT делает менее крутой slope как и по WER, так и по Speaker similarity, если мы начинаем ускорять речь. Также авторы проверили Frechet Duration Distance с train и их подход выигрывает над regression и FM, но мне кажется это не столь честным так как в train speech rate +- всегда одинаковый.
Несмотря на более subtle slope, дроп все таки остается сильным wer ~2 → ~7, но и учили авторы только на примерах с скоростью 1x.
paper
#grokaem_audio
Про скорость в tts мы краем глаза смотрели тут. Одна из проблем того же dubbing - регулирование скорости: речь в исходном языке должна быть по длине как и в таргет. Для этого мы можем использовать post-processing, когда мы ускоряем весь семпл. Также можем довериться самой TTS модели (implicit) или каким-то образом передавать durations (explicit). Наша задача здесь - это сделать модель, которая и будет предсказывать durations на sequence фонем.
Для предсказания этих durations мы можем тренировать модель как regression с MSE, маскируя рандомно durations, также можем делать предсказание с flow-matching. Авторы предлагают два ключевых изменения:
1. вместо просто маскирования также передавать и duration, который остался. Грубо говоря, мы замаскировали n durations, общая duration 30 frames, после маскирования осталось 22, тогда в модель вместе с маской мы передадим 8 на каждый из n durations (d_tgt).
2. также вместо просто трансформера авторы используют MaskGIT, который отличается итеративным предсказанием маскированных токенов: выбрал k с наибольшей уверенностью, вставил их в sequence, предсказал заново. Так и с нашей duration моделью - предсказали k durations, уменьшили коли-о фреймов, которые передаем с маской (d_tgt). И так пока d_tgt не будет равна 0.
По метрикам MaskGIT делает менее крутой slope как и по WER, так и по Speaker similarity, если мы начинаем ускорять речь. Также авторы проверили Frechet Duration Distance с train и их подход выигрывает над regression и FM, но мне кажется это не столь честным так как в train speech rate +- всегда одинаковый.
Несмотря на более subtle slope, дроп все таки остается сильным wer ~2 → ~7, но и учили авторы только на примерах с скоростью 1x.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6❤🔥1🔥1😁1
Этот год был насыщенным на события, на мой как профессиональный, так и личностный рост. Огромным этапом для меня стал переезд в Германию, который дался мне морально очень тяжело. Однако он притянул кучу разных как сложных, так и очень приятных событий. Пока что я нахожусь тут, как и всегда рада знакомствам. Надеюсь, что и следующий год принесет вам много как шипучка заряжающих событий, чтобы через месяцы и годы они обмазывали душу как теплый хлебушек маслом. И, конечно, пусть следующий год вернет нам всем мира и любви друг к другу.
Для хоть какого-то новогоднего настроения отправляю вам вид из моего родного города, где я уже слишком давно не была. Надеюсь, что эта фотография поднимет и вам новогоднее настроение, как подняла его и мне. Присылайте ваши новогодние фотокарточки в комментариях)
Для хоть какого-то новогоднего настроения отправляю вам вид из моего родного города, где я уже слишком давно не была. Надеюсь, что эта фотография поднимет и вам новогоднее настроение, как подняла его и мне. Присылайте ваши новогодние фотокарточки в комментариях)
❤🔥27❤6🔥5
ДЕКАБРЬ 2024
🎄 Audio 🎄
1. Transformer-based audio autoencoder
2. Gemini сделали эмоциональный контекстуальный audio output
3. Streaming TTS CozyVoice
4. FishAudio 1.5
5. kits.ai singing voice conversion
🎄 NLP🎄
1. Byte-latent transformer
2. Large Concept Model от meta
3. ModernBert
4. Маленький курс от HF про маленькие llmки и их использование
🎄 Другое🎄
1. Монография для reinforcement learning
2. Классный список техник advanced DL
3. Куча ресурсов для foundation models
1. Transformer-based audio autoencoder
2. Gemini сделали эмоциональный контекстуальный audio output
3. Streaming TTS CozyVoice
4. FishAudio 1.5
5. kits.ai singing voice conversion
1. Byte-latent transformer
2. Large Concept Model от meta
3. ModernBert
4. Маленький курс от HF про маленькие llmки и их использование
1. Монография для reinforcement learning
2. Классный список техник advanced DL
3. Куча ресурсов для foundation models
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥11👍6🤡3❤2🔥2
Github repo, которое автоматически обновляется каждые 12 часов статьями из TTS сферы
link
#grokaem_audio
link
#grokaem_audio
GitHub
GitHub - liutaocode/TTS-arxiv-daily: Automatically Update Text-to-speech (TTS) Papers Daily using Github Actions (Update Every…
Automatically Update Text-to-speech (TTS) Papers Daily using Github Actions (Update Every 12th hours) - liutaocode/TTS-arxiv-daily
🐳11🔥9❤🔥2❤1
My train of thought before the meeting:
пост 1
пост 2
Мы продолжаем готовить постер-презентацию на тему Immersive TTS. Напоминая о задаче: нужно как-то генерировать и звук, и речь. Речь погруженная в жизнь не глазами лингвистов, а речь с background noise, с еще речью поверх и тд и тп.
Сегодня мы взглянем на вопрос с точки зрения архитектуры для combined approach - одна модель генерит все.
Как обычно базировать наше решение об архитектуре мы будем на том, от чего мы можем получить больше пользы:
a) LLM - не быть дураком, scalability и pre-trained models юзать хочется. Здесь может быть подход с LoRA или с RVQ. Для последнего мы стараемся transfer audio modality into textual space посредством единой encoder->decoder модели как у UniAudio 1.5. или отдельных голов трансформера как в UniAudio, или же получая токены как семантические, так и стилевые с других моделей как у SpiritLM
б) Diffusion, flow matching подходы - одни из лидирующий пусть и не самых стабильных подходов. Condition для таких моделей у нас может быть разный, как audio prompt, так и text prompt. Кроме того, если мы передаем target описание записи отдельно, при этом добавляя семантическую информацию - мы можем и регулировать влияние как первого, так и второго (VoiceLDM, dual classifier free guidance) или даже расширить на n-количество параметров (Fugatto).
Более того, для diffusion/flow based models игроки придумали не париться о кодировании записи, а использовать сразу CLAP эмбеддинги от pre-trained модели. Однако как показали Speak in the scene, лучше добавлять все таки classifier free guidance, так как condition только на тексте дает дроп.
Слушая примеры, я конечно отдам голос второму подходу. Но может быть мы все таки еще просто не умеем соединять audio и LM? А надо ли?
VoiceLDM: https://voiceldm.github.io/
Speak in the scene: https://ast-ldm.github.io/demo/
SpiritLM: https://speechbot.github.io/spiritlm/
#grokaem_audio
пост 1
пост 2
Мы продолжаем готовить постер-презентацию на тему Immersive TTS. Напоминая о задаче: нужно как-то генерировать и звук, и речь. Речь погруженная в жизнь не глазами лингвистов, а речь с background noise, с еще речью поверх и тд и тп.
Сегодня мы взглянем на вопрос с точки зрения архитектуры для combined approach - одна модель генерит все.
Как обычно базировать наше решение об архитектуре мы будем на том, от чего мы можем получить больше пользы:
a) LLM - не быть дураком, scalability и pre-trained models юзать хочется. Здесь может быть подход с LoRA или с RVQ. Для последнего мы стараемся transfer audio modality into textual space посредством единой encoder->decoder модели как у UniAudio 1.5. или отдельных голов трансформера как в UniAudio, или же получая токены как семантические, так и стилевые с других моделей как у SpiritLM
б) Diffusion, flow matching подходы - одни из лидирующий пусть и не самых стабильных подходов. Condition для таких моделей у нас может быть разный, как audio prompt, так и text prompt. Кроме того, если мы передаем target описание записи отдельно, при этом добавляя семантическую информацию - мы можем и регулировать влияние как первого, так и второго (VoiceLDM, dual classifier free guidance) или даже расширить на n-количество параметров (Fugatto).
Более того, для diffusion/flow based models игроки придумали не париться о кодировании записи, а использовать сразу CLAP эмбеддинги от pre-trained модели. Однако как показали Speak in the scene, лучше добавлять все таки classifier free guidance, так как condition только на тексте дает дроп.
Слушая примеры, я конечно отдам голос второму подходу. Но может быть мы все таки еще просто не умеем соединять audio и LM? А надо ли?
VoiceLDM: https://voiceldm.github.io/
Speak in the scene: https://ast-ldm.github.io/demo/
SpiritLM: https://speechbot.github.io/spiritlm/
#grokaem_audio
❤2🔥1
Моя жизнь за последние пару месяцев стала более занятой, менее нервозной и менее продуктивной на посты. Одна из штук, которыми я занималась и занимаюсь - это F5TTS для русского.
Так как париться с красивыми постами (а они когда-то были?) мне не хочется, будут посты более расслабленные и легкие. Вот давайте послушаем новые примеры с нового подхода, который я поставила.
В этот раз это смесь russian и english (total 268h) так как заметила сильный forgetting для английского при обучении чисто на русском.
До этого были эксперименты с IPA и ударениями. Сейчас русский стоит только с ударениями от ruaccent, ударения с пометкой на +. Хочется рассказать о том, как работает расширение, что не так с длинными записями и как сделать condition на source lang != target lang. А также про то, как я собственно проверяю модели, выбираю данные и колдую над генерацией без изменения моделей.
#grokaem_audio
Так как париться с красивыми постами (а они когда-то были?) мне не хочется, будут посты более расслабленные и легкие. Вот давайте послушаем новые примеры с нового подхода, который я поставила.
В этот раз это смесь russian и english (total 268h) так как заметила сильный forgetting для английского при обучении чисто на русском.
До этого были эксперименты с IPA и ударениями. Сейчас русский стоит только с ударениями от ruaccent, ударения с пометкой на +. Хочется рассказать о том, как работает расширение, что не так с длинными записями и как сделать condition на source lang != target lang. А также про то, как я собственно проверяю модели, выбираю данные и колдую над генерацией без изменения моделей.
#grokaem_audio
👍11❤🔥5🔥5
Так как я за открытый research, прикладываю source записи, чтобы вы также могли их юзать 🦕
🔥9❤🔥1
Ранее я писала о статьях с emergent TTS, вчера защитила постер и мой research output - лучше всех для этих целей flow matching и compositional classifier free guidance. Но drawback - user experience, так как хочется все таки описать просто текстом то, что ты хочешь услышать.
fugatto пост
spiritlm пост
uniaudio пост
notion page с другими статьями
fugatto пост
spiritlm пост
uniaudio пост
notion page с другими статьями
🔥20❤7👏3👍1🎉1
Дорогие подписчики 🩷
Сейчас я нахожусь в Америке и этим летом буду в таких городах как: Los Angeles, San Francisco, New York
Если вы находитесь рядом - я рада знакомству в личных сообщениях 🌟
Сейчас я нахожусь в Америке и этим летом буду в таких городах как: Los Angeles, San Francisco, New York
Если вы находитесь рядом - я рада знакомству в личных сообщениях 🌟
❤56🔥39🤯7
Моя стажировка в Apple подошла к концу🍏Здесь я была с февраля. Каталась на работу на велосипеде. Ела в Apple Park. Получила водительские права. Улучшила английский. Познакомилась с людьми.
Без оков privacy я могу смело возвращаться в канал. Это был длинный изматывающий путь, но он выполнен.
Когда-то мечты становятся целями, о которых страшно говорить. Вслух даже самой себе я сказала, что хочу в Apple, когда я со скрипом и слезами уезжала из РФ. Меньше чем через год я попала в Apple.
Для интересующихся мое менеджерское руководство очень классное и разрешило довольно обширное описание проекта, однако о деталях я не имею права говорить:
Developed a conversational text-to-speech system leveraging diffusion models. Built and scaled a 70,000-hour dataset, oversaw large-scale distributed training, and designed a model capable of generating interleaved and overlapping dialogue on two-stream manner.
Без оков privacy я могу смело возвращаться в канал. Это был длинный изматывающий путь, но он выполнен.
Когда-то мечты становятся целями, о которых страшно говорить. Вслух даже самой себе я сказала, что хочу в Apple, когда я со скрипом и слезами уезжала из РФ. Меньше чем через год я попала в Apple.
Для интересующихся мое менеджерское руководство очень классное и разрешило довольно обширное описание проекта, однако о деталях я не имею права говорить:
Developed a conversational text-to-speech system leveraging diffusion models. Built and scaled a 70,000-hour dataset, oversaw large-scale distributed training, and designed a model capable of generating interleaved and overlapping dialogue on two-stream manner.
🔥172❤45👍21❤🔥3🤗2