grokaem себя @grokaem_seby Channel on Telegram

grokaem себя

@grokaem_seby


A bunch of things that I encounter during my journey as NLP/Audio developer

grokaem себя (Russian)

grokaem себя (грокаем себя) - это канал в Telegram, созданный молодым разработчиком NLP. Здесь вы найдете небольшую подборку вещей, с которыми я сталкиваюсь во время своего пути как молодой специалист в области естественного языка: математика, глубокое обучение, машинное обучение, Python и истории. Если вы интересуетесь темами NLP, хотите узнать больше о разработке искусственного интеллекта, а также быть в курсе последних тенденций в этой области, то канал grokaem себя идеально подойдет вам. Здесь вы сможете подписаться на увлекательные истории, изучить математические основы, освоить глубокое обучение и машинное обучение на простых и понятных примерах, а также узнать как применять язык программирования Python в вашей работе. Присоединяйтесь к нашему каналу grokaem себя и начните свое погружение в мир искусственного интеллекта прямо сейчас!

grokaem себя

22 Jan, 12:09


Так как я за открытый research, прикладываю source записи, чтобы вы также могли их юзать 🦕

grokaem себя

22 Jan, 12:05


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

Так как париться с красивыми постами (а они когда-то были?) мне не хочется, будут посты более расслабленные и легкие. Вот давайте послушаем новые примеры с нового подхода, который я поставила.

В этот раз это смесь russian и english (total 268h) так как заметила сильный forgetting для английского при обучении чисто на русском.

До этого были эксперименты с IPA и ударениями. Сейчас русский стоит только с ударениями от ruaccent, ударения с пометкой на +. Хочется рассказать о том, как работает расширение, что не так с длинными записями и как сделать condition на source lang != target lang. А также про то, как я собственно проверяю модели, выбираю данные и колдую над генерацией без изменения моделей.

#grokaem_audio

grokaem себя

07 Jan, 13:47


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

grokaem себя

07 Jan, 09:39


Github repo, которое автоматически обновляется каждые 12 часов статьями из TTS сферы

link

#grokaem_audio

grokaem себя

31 Dec, 11:58


ДЕКАБРЬ 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

grokaem себя

31 Dec, 11:58


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

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

grokaem себя

30 Dec, 15:39


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.

grokaem себя

29 Dec, 17:54


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

grokaem себя

29 Dec, 17:53


Одна из моих болей и проблем — это долгое чтение статей. Если мне статья искренне интересна, я могу читать её по меньшей мере часа 2, запрыгивая в детали и утопая в синдроме ссылки Википедии. Эту проблему нужно решать, так как начитанность важна и нужна. Из раза в раз я пытаюсь себя научить читать быстро, моя цель — это 25 минут на поверхностную статью и час на хорошую и глубокую. Вот сегодня час у меня ушёл на чтение поста от Gonzo-обзоров, из текста я не поняла техники подробно, села читать отдельно и делать свои технические заметки. Они внизу.

Рассказывайте, как вы читаете статьи?

У меня поверх всегда помогает музыка этих двух плейлистов (один, два)

grokaem себя

28 Dec, 12:00


SpiritLM - попытка сделать SpeechLM на HuBERT фичах.

#grokaem_audio

0️⃣Основа: взяли LLAMA2, добавили HuBERT на аудио. Их двоих мы соединяем с помощью техники interleaving - это когда мы рандомно семплим span для аудио, а потом рандомно семплим для текста и соединяем. Пример в комментариях.

1️⃣ Также авторы пробуют добавить экспрессивности, так как HuBERT фичи по дефолту несут только семантику. Для этого ко всем токенам также добавляют pitch токены и style токены в соответствующие timestamps. Pitch токены мы получили от отдельной модели VQ-VAE. Style токены мы получаем от speechprop модели. И тут они хотят избавиться от speaker информации, для этого они файнтюнят модель на style токенах от Expresso и поверх считают k-means, с k=100.

Теперь обратимся к результатам: тут их много и все плохие)))

- да, interleaving - это ключ к успеху, кроме того, он дает буст для S→T
- кроме всего прочего interleaving лучше чем ASR+TTS подход (берешь пары полных предложений от HuBERT и от текста и просто соединяешь); world-level transcription (пословно соединять текст и HuBERT токены)
- подход с экспрессивностью все портит кроме экспрессивности лол
- S->T гораздо сильнее чем T->S


3️⃣ Также авторы создали benchmark, чтобы проверять экспрессивность речи. Проверяют просто - берут промт и проверяют, что результат от модели дает такой же лейбл, как дается и промту.

code
demo
paper

grokaem себя

16 Dec, 11:54


UniAudio (rejected ICLR)
UniAudio 1.5 (не сильно много различий, два дополнительных лосса, чтобы улучшить capture semantics)

#grokaem_audio

видео объяснение
paper
demos

Продолжаем нашу тему с emergent sound generation. Сегодня о UniAudio. Несмотря на то, что не было показано, что у модели есть emergent abilities, мы можем предположить, что они есть или хотя бы мы можем соединить генерацию двух дорожек от одной модели) (авторы сильно постарались не дать нормальный код (просто весь код), так что я и проверить не смогла😐)


Одна из самых назойливых мыслей, когда мы работаем с LM для аудио - давайте аудио станет тоже просто integers. Ee мы обсуждали в канале ни раз. Авторы UniAudio собственно не изобрели велосипед.

RVQ: residual vector quantization: Когда у нас есть предобученные вектора на каждый слой квантизатора. Чтобы закодировать один фрейм, мы считаем L2 расстояние к векторам этого слоя и сохраняем индекс. Таким образом мы получаем для одного семпла матрицу, где для каждой временной точки у нас integer vector. Для transformer мы эту матрицу просто заflattenим.

Однако после такой квантизации у нас на каждый timestep будем n_q (количество слоев квантизации), соотвественно на выходе мы получим T*n_q значений. Однако мы знаем природу нашего сигнала и можем сказать, что у нас есть высокая локальная inter зависимость между фреймами, так как сами фреймы изначально не ядерно обособленные.

Поэтому и потому что просто тяжело считать, авторы предлагают 🏐multi-scale transformer🏐. Если мы просуммируем вектора из наших RVQ, мы должны получить embedding этого фрейма. Авторегрессионно мы будем предсказывать следующий такой же засуммированный эмбеддинг. Однако тут два вопроса: а) как нам потом генерить? Ведь у нас нет какой-то общей репрезентации для общего засуммированного токена, здесь мы работаем в continuous space. б) засуммировав весь audio frame мы теряем грануальные dependencies. Это не есть хорошо.

Поэтому авторы предлагают поставить поверх local transformer, он будет авторегрессионно предсказывать те самые индексы из нашего RVQ, так что мы сможем декодировать. А на вход мы будем подавать как раз то скрытое состояние из global transformer. Тем самым мы переложили ответственность за inter-dependencies на local transformer, a для глобального перешли со сложности T * n_q в T.

-——
🏄🏻‍♀️good things🏄🏻‍♀️

- deterministic latent space because of the tokenization -> собственно то, что хотели - то и получили, аудио - это чиселки, но это obvious
- shared info between different types of audio → audio codec models effectively capture the shared information, cause we have the working principle of neural codes where similar information will be allocated the same token id = мы не разделяли звуки, песни, речь и тд и тп, на все у нас один RVQ, как следствие мы получаем токены, которые шарят одну информацию несмотря на то, что по природе сигналы были разные.
- multi-scale saves space - даже если мы будем увеличивать количество code books, мы не будем сильно терять по времени и качеству в сравнении с flattening, parallel, coarse first и delay генерациями (картинка 2, таблица 4)

grokaem себя

12 Dec, 20:40


ClearerVoice-Studio

#grokaem_audio

code

Новенький инструмент для:
- enhancement,
- speaker separation,
- target speaker extraction

Также отдельно представляется код для тренировки всех моделей, а также подсчет скоров. Из необычных поддержка множества метрик по reverbation, DNSMOS (speech quality, background noise quality, overall quality, P808_MOS.

Для моих семплов для speaker separation и target speaker extractions сработало очень плохо, но я проверяла на русском. Возможно, будет работать гораздо лучше с английским.

😎Про enhancement😎
А вот enhancement сработал на удивление приятно и быстро. Но сегодня посмотрим на него еще и с другом стороны - не навреди.

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

Бенчи по моделям

grokaem себя

08 Dec, 17:13


* я грубо буду мешать английский и русский *

#grokaem_audio
paper

0️⃣Начинаем с датасета.

Ранее наиболее частотный способ создания для датасета был audio understanding models, главная цель тут - сделать diverse датасет.

Dataset generation pillars:
1. free-form instructions with llms - just describe the audio, controllable sentence generation with templates and keywords
2. absolute and relative - changes motivated by gpt4-o, generated the same way as 1.
3. audio understanding models - convert speech attributes predicted by another model into nlp descriptions
4. transmuting datasets - try to find the datasets where one factor is static and the other is changed and reuse for other transformations tasks (instrument synthesis dataset to use as an instrument transformation task)
5. audio processing tasks - praat and pedalboard with controlled modifications for specific alterations, e.g. “increase F0 variance slightly”.

⇒ 50K hours of only opensource datasets

На выходе у нас относительно много diverse данных, но что и важно - скриптов, которые могут генерить динамически инструкции.

1️⃣ Model

1. text is encoded with byT5 tokenizer free
2. audio - melspectrogram
3. main model is a t5 transformer trained with Optimal Transport conditional flow matching

Главный изюм статьи 😊 это compositional classifier guidance 😊. В обычном classifier free guidance мы берем скор без кондишиона и суммируем с разницей, если кондишен будет существовать. Здесь мы сделаем абсолютно то же самое, только будем работать со всеми conditions, которые нам доступны. Также авторы добавляют отдельно весь на весь condition, который юзер может выставлять и сам на каждый фрейм. Таким образом мы можем добавлять контроль на композицию всех семплов в длине. Картинки формул в комментариях.

2️⃣ Про результаты

Хоть по метрикам все не так хорошо, по черипикнутым примерам все очень приятно.

ПОСЛУШАТЬ ВСЕ

TTS: singing voice samples - higher WER and SVS comes from higher difficulty for generative model and speech transcription model. High cosine similarity for CLAP.

TTA: text to audio, outperforms generalist models for FD, FAD.

Transformations - когда мы как-то меняем аудио (это различные переходы, аля enhancement)
- bandwidth extension - recreate missing content from audio that is low pass filtered and downsampled, fugatto is always the second to the last…
- speech to emotion - transform a person’s emotion in speech into another emotion, preserving speaker identity. super high WER, top2 accuracy is high, speaker similarity is really bad
- MIDI2Audio is really bad in terms of metrics, but the model has never seen midi

Event composition - whether changing the scores for ComposableART influences the output
Тут мне понравился метод отслеживания, а работает ли эта штука на самом деле - мы считаем CLAP scores, к ивенту, который нам нужен.

it works efficiently both for the удаление состояния [negation] of attributes and for their [composition]. The same scores can be used for CLAP scores on the temporal guidance for instruction sequences. И на них мы видим, что темпорально уменьшая или увеличивая вес, CLAP скоры также соответственно меняются.

grokaem себя

08 Dec, 16:44


Одна из research практик наших research seminars - это постер презентации. В последний раз это было весело, но я не запостила все статьи, о которых рассказывала в контексте continual learning. В этот раз моя тема - это LLM для Audio. Ключевых статей будет 4, но также будут поверхностные, рядом стоящие статейки.

Начнем с горячего - Fugatto от NVIDIA.

Задача больший generalist моделей - это решать n количество задач, обучаться легко на различных данных и scale efficiently на всех этих датасетах. Перед тем как начать про Fugatto скучная преамбула:

Cейчас много LLM подходов, начиная с адаптеров для LLAMA-like от whisper, заканчивая conversational моделями. Во многих из такого рода подходов мы выигрываем за счет и из-за языковой модели. В этой серии постов мы говорим о Audio моделях, которые могут генерировать не только речь, но и звуки. Это необходимо, чтобы речь звучала натурально. За аксиому мы подразумеваем intelligibility речи. Но что такое натурально? Для себя (и для постера) я разделяю это понятие на:
👍
1. speaking factors - просодия, эмоции, произношение
2. paralinguistic factors - человеко-физические состояния плач, смех, дыхание, глотание
3. non-speech factors - стабильные и нестабильные шума других организмов и явление, включая reverb о стены
👍

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

grokaem себя

05 Dec, 12:56


НОЯБРЬ 2024

SPEECH & AUDIO
0. FishAudio 1.5 paper, weights, demo
1. OuteTTS - TTS чисто на language modeling weights, blogpost (Qwen-2.5)
2. Помните популярный в прошлых месяцах Illuminate, который позволяет генерить discussion по статьям? Небольшой обзор без серьезных деталей о нем: AudioLM с токенами от SoundStream, ну и "pretrained it on hundreds of thousands of hours of speech data". В эту же тему вышла модель от hertz-dev (VAE + LM decoder).
3. Fugatto 1 от nvidia с immersive TTS и вообще почти foundation модель, семплы, статья

😐 NLP и DL 😐
0. Статья от Anthropic про то, как оценивать модели: observed average -> theoretical average
1. Bloomberg о multipage multi-modal RAG, M3DocRAG. Работает на visual embeddings, multi-retrieveral paper обещают, что работает на open-domain вопросах. В эту же тему voyage мультимодальные эмбеддинги, представляете если брать одну модель на все модальности будет хорошо
2. Новый метод от Stanford Aioli (чесночный соус) для решения проблемы правильного микса разных доменов при тренировке, вводят новый метод Linear Mixing Optimization, paper
3. Один за всех или обзор на The Super Weight in Large Language Models

other:
0. Вышла cuPyNumeric от nvidia для parallel compute у numpy
1. Прекрасный курс по диффузиям. В эту же сферу лонгрид про параллели между диффузиями и эволюцией

grokaem себя

05 Nov, 22:07


короткий обзор

DeSTA2 - descriptive speech-text alignment approach
link

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

SLM - Speech Language Model - модель, которая по входу аудио может дать ответ и при этом может описать, что происходит. SLM ≠ ASR. Главное отличие - описание. Например, From the 5-second audio clip, I can hear a female English speaker says “The food is really good” in a happy tone. Все не в кавычках - способности LLM. Однако необходимо как-то понять, а что именно звучит. Так есть новые бенчи, например, AIR-Bench

Из (по сути уже известных) находок:

0️⃣ LLM хороши в форматировании, поэтому всю важную информацию добавим через паттерн ”[00:00:00-00:00:03] How are you? (Gender: Female, Emotion: Happy...)”.. Это необходимо при создании датасета. Это мы итак знаем в NLP, но в том же Prompt-TTS на такое не сильно обращали внимание.
1️⃣ Как взять описания? Нужно получить описания речи (аля мужчина, семьянин, 40 лет) Вместо того, чтобы тянуть 10 больших моделей для этого давайте возьмем одну. Qformer как просто адаптер поставим на speech, чтобы получить speech features с intermediate layers и вставим их как seed prompt в LLM и будем учиться их правильно аггрегировать. То есть: мы просто создали одну модель, которая декодирует несколько параметров сразу и при этом делает это не как лейбл, а просто как текст.

#grokaem_audio

grokaem себя

05 Nov, 14:14


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

1. Ссылка на мои записи этой зимы. Там я использовала схему
task sample
- task description
- task tips I use
- the code with explanation
- time and memory complexity


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

Блоки, которые я люблю делать:
1. arrays
2. hashing
3. two pointers
4. sliding window
5. stack

какие я не люблю, но надо:
6. linked list
7. trees
8. dynamic programming

Хорошие ссылки:
Набор важных топиков, которые классно покрыть (+ примеры задач)
100 задач по типам для two pointers
Алгоритмы динамического программирования
Neetcode roadmap
Его же канал
Канал крутого чувака, которого я раньше часто смотрела

Но самая главная recommendation - это explore карточки самого Leetcode, они оказались супер классными, concise ю ноу

Что используете вы?

grokaem себя

03 Nov, 16:15


ОКТЯБРЬ 2024

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

NLP
1. Вышла Aya Expanse - mutlilingual (23 languages)
2. Метод с late chunking для RAG вместо/с contextualized

AUDIO
1. Вышел F5-TTS, про фишку у него писала постом выше. Также рекомендую к прочтению. В эту же тему MaskGCT
2. DMDSpeech от StyleTTS
3. MoonShine для ASR
4. Voice-conversation model GLM-4-Voice
5. MOSEL multilingual датасет на 950K часов

random
1. Про nvidia-smi output, в эту же тему про почему nvidia-smi нельзя доверять
2. Интересная статья для decodec с диффузиями
3. У gonzo-ML появился канал с gonzo подкастами и "онлайн" разборами статей

grokaem себя

15 Oct, 11:42


про alignment в tts

Если в текстах мы работаем всегда в одной модальности, то с речью у нас две последовательности (аудио aka спектрограмма и текст). Прямого соотношения между которыми - нет. Попробуйте взять любую спектрограмму и сказать, где какая фонема звучит. Именно на задаче alignment и сделаем фокус.

И тут мне нравится мысль из небезызвестного ТРИЗ о стадиях идеального объекта:

🧩
«Система сама выполняет эту функцию»
«Системы нет, а ее функции выполняются»
«Функция вообще не нужна»

🧩

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

Важная заметка на полях, здесь я не разделяю NAR и AR системы, however мы можем сказать, что в AR alignment проблема может решаться относительно легче.

Система: модель или алгоритм.
Задача системы: сделать идеальное соответствие между спетрограммой и текстом.

1️⃣Стадия 1: система существует.
Glow-TTS (11.2020), модель на основе flow-matching. В ней предложили monotonic alignment (система) - алгоритм на основе концепции динамического программирования со сложностью O(T_text * T_mel). Сильно, да? В общем и целом он должен занимать примерно 2% времени обучения. Нехило. Важно, что кроме самой системы при тренировки, нам нужен еще и duration predictor на инференсе. В том же VITS, MatchaTTS также используется monotonic alignment.

Совсем недавно его улучшили с super monotonic alignment search, но не поздняк ли уже метаться?

Сюда же я осмелюсь отнести FastSpeech 2 с duration predictor в сравнении с golden MFA (Montreal Forced Alignment).

2️⃣Стадия 2: системы нет.
Позволю себе упрощение: критерием, что системы нет можно считать, что отсутствует отдельная функция потерь. Если в том же FastSpeech 2 мы добавляли отдельный блок для duration, то в более старом Tacotron 2 у нас был location sensitive attention, никаких таргетов. Для TTS систем это удобно, так как мы априорно знаем, что зависимости монотонны (мы не можем сказать фонему n, ссылаясь на фонему n + k). Тот же nvidia в этом году стрехнули пыль с FastSpeech 2 в статье T5TTS , ссылаясь на advantages in seq-seq transformer based models и добавили prior "regularization" на cross-attention, чтобы сделать его монотонным. Однако у них мы можем сказать, что система все таки существует, так как поверх они добавляют CTCLoss, чтобы поддерживать мотонность alignment'а.

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

3️⃣Стадия 3: функция вообще не нужна.
А что если вообще не думать о проблеме? Именно это и сделали в Embarassingly Easy TTS. Мы не затроним сегодня flow matching часть, это объемная тема. Что они сделали с alignment? Особо не парились: берем c - characters transcription размерности M. Берем наш mel-filter bank features размерности T. И просто добавляем к (T-M) filler tokens до полной T длины. А что так можно было? Похоже да. Мы оставили текст таким какой он есть, не растягивали, не дублировали, не делали буквально ничего. Наверное можно ждать много статей по ablation studies такого подхода и анализ attention у трансформера, как это было с подходами у T5TTS. По этому же подходу пошли F5TTS, которые только тренируют на diffusion.

Как и всегда, жду ваши поправки и комментарии❤️

#grokaem_audio

grokaem себя

07 Oct, 07:34


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

#grokaem_seby_thoughts

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

И вот проблема с которой я столкнулась: появляется идея - я ее записываю и забываю, а что хотел сказать автор? Ну проверишь ты это и что?

Поэтому новый паттерн для всех гипотез, которые у меня появляются:
🏔
Гипотеза:
Результат, который я ожидаю:
Как проверить:

🏔

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

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

grokaem себя

05 Oct, 06:43


Я на какой-то период перестала сидеть в чатах, но вернула эту привычку. Один из любимых чатов от канала Speech Recognition. Длинные ответы нужно бы постить и тут.

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

#grokaem_audio

Про предобработку:

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

1. Denoise - использую почти всегда старый добрый demucs.api. Он удобен, если у вас например, есть задача сначала отделить музыку, а потом вернуть ее обратно. Вместо demucs можете попробовать MVSEP. Не могу сказать, что я увидела много разницы с demucs, но это типо их расширение.


2. Дальше я всегда делаю enhance перед любой TTS, так как пару раз уже проверяла, что качество всегда будет лучше (как mos, так и objective metrics). Однако, если вы будет потом просто сравнивать мелспеки, помните, что вы сделали enhance.

Для быстрых кейсов я юзаю resemble-enhance, у него я ставлю их denoise, а потом enhance только на vocals от demucs. Качество мне нравится. Плюс они делают поддержку подсчета на gpu.

Однако если вы прям запарились и нужно качество лучше по enhance, то советую ребят MP-SENet, у них хорошая модель с двумя енкодерами и для phase и для магнитуды. Также можно натренировать (я проверяла), все збс воспроизводится и тренеруется недолго.

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

код от resemble-enhance, он у них в app.py
def enhance_audio(audio_path, save_path, solver="midpoint",
nfe=64, tau=0.5, device="cuda", target_sr=16000):
solver = solver.lower()
nfe = int(nfe)
lambd = 0.9

dwav, sr = torchaudio.load(audio_path)
dwav = dwav.mean(dim=0)

wav1, new_sr = denoise(dwav, sr, device)
wav2, new_sr = enhance(dwav, sr, device, nfe=nfe, solver=solver, lambd=lambd, tau=tau)

wav2 = wav2.cpu().unsqueeze(0)

if new_sr != target_sr:
resampler = torchaudio.transforms.Resample(new_sr, target_sr)
wav2 = resampler(wav2)

torchaudio.save(save_path, wav2, target_sr)

grokaem себя

03 Oct, 14:14


XCodec: Codec Does Matter: Exploring the semantic shortcoming of codec for ALM

paper
code - у них нет нормального примера на HF, но все легко запускается через inference.py

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

Если мы будем погружаться, то этим мы занимались всегда - те самый скрытые представления чем вам не токены? Просто теперь нам нужно число, а не вектор. Для этого существуют codecs - про encodec вот тут.

Мы можем смотреть на них как на квантизаторы. Перешли из m аудио семлов в n точек. По сути это схоже и с любым другим преобразованием. Изначально, как я понимаю, использовали их больше для музыки и звуков. И как следствие - мы выучивали low-level acoustic fluctuations. Однако для end-to-end систем нам нужно понимать, о чем идет речь.

🤓
Поэтому добавляют так называемые semantic tokens - токены, которые несут семантический смысл, спасибо кэп. А где мы учим семантику? В SST, который собираемся потом переносить на asr - это всякие hubert, wav2vec.

🤓
Поход 1. Делаем дистилляцию на первые, вторые, n-ные слои. В SpeechTokenizer - это cosine loss между первым RVQ слоем и HuBERT фичами. Это будет работать из-за каскадности RVQ. Такой же подход предложен у Moshi.

🤓
Подход 2. Добавлять семантические фичи explicitly - а именно перед RVQ. Можно, конечно просто взять HuBERT и фичи аудио энкодера, но как-то это не fancy🎩. Поэтому сделаем отдельный Encoder - Decoder, который будет брать на вход фичи HuBERT, потом они идут в semantic encoder (convs). И тут мы ловим фичи с audio encoder, конкатим от линейной проекции и вот теперь подаем в RVQ. Что также интересно: мы же не зря сделали encoder-decoder для semantic features? Будем подавать выход от RVQ в semantic decoder, чтобы как раз восстановить наши исходные фичи от HuBERT c MSE loss. И тут как раз моя ирония в начале падает, так как этот encoder-decoder и нужен нам, чтобы найти "правильные" semantic features, которые помогут и акустику восстановить, и семантику как у HuBERT оставить. А правильные они, потому что они идут в RVQ, над которым мы и пыжимся.

В комментариях пример восстановления записи.

#grokaem_audio #grokaem_papers

grokaem себя

02 Oct, 16:08


СЕНТЯБРЬ 2024 🍁

Как-то у меня получилось негусто собрать, месяц был странный

NLP:
1. Вышла LLAMA 3.2, on device, multimodal (image, text)
2. Вышла OpenAI O1 с позиции а порассуждай, пост В эту же песню вот этот пост о подходах к рассуждениям (DaG, IoT...)
3. Интересный пост о MoNE - мультиэксперте с нарезкой по глубине и по размерности эмбеддинга.
4. Есть теория, что pixtral (мультимодал text, image) основана на технологии с MoNE
5. Apple выложила insights по sigmoid self-attention.

AUDIO:
1. Вышла Moshi - multimodal conversational (text, audio)
2. IPA фономенизатор для русского
3. Был interspeech
4. Вышла FishSpeech, многим она не понравилась, но мне семплы были по душе
5. Вышла статья от авторов StyleTTS, будет небольшой обзор

grokaem себя

26 Sep, 07:18


🥸 36. Объясните маскирование в attention.
👩🏻‍💻 Если говорить кратко, то в encoder transformer части мы используем только self-attention, в decoder части в первом transformer блоке мы используем также self-attention с маскированием, а вот во втором cross attention.

Мы можем разделить два понимания маскирования. Если например у нас есть паддинги, мы все равно будем их маскировать в attention и encoder. Почему? Если у нас последовательности разной длины и вы используете padding, то в attention части нам не нужно брать 'влияние' padding токенов.
masked softmax implementation

В causal attention мы используем другой вид маскирования, мы маскируем только будущие токены. Почему? Потому что в causal language modelling мы делаем предсказания только на основе предыдущих примеров.

интерактивная визуализация для bert и gpt эмбеддингов
статья про интерпретацию

🥸37. Какая размерность у матриц self-attention?
👩🏻‍💻Размерность матрицы self-attention зависит от числа входных элементов и параметров модели. Обычно она имеет форму (seq_length, seq_length), где seq_length - это длина последовательности, для которой применяется механизм self-attention. Таким образом, если у нас есть seq_length элементов во входной последовательности, мы имеем квадратную матрицу размером seq_length x seq_length.

Внутри файла и в notion ответы на следующие вопросы:
🥸 34. Сравните RNN и attention. Когда лучше использовать каждый из них?
🥸35. Напишите attention с нуля.
🥸38. В чем разница между BERT и GPT в рамках подсчета attention?
🥸39. Какая размерность у эмбединового слоя в трансформере?

🥸40. Почему эмбеддинги называются контекстуальными? Как это работает?
🥸41. Что используется в трансформере layer norm или batch norm и почему?
🥸42. Зачем в трансформерах PreNorm и PostNorm?
🥸43. Объясните разницу между soft и hard (local/global) attention?
🥸44. Объясните multihead attention.
🥸45. Какие другие виды механизмов внимания вы знаете? На что направлены эти модификации?
🥸46. На сколько усложнится self-attention при увеличении числа голов?


notion
файл в комментариях

grokaem себя

26 Sep, 07:17


🥸 - взрослый дядя собеседующий
👩🏻‍💻 - я и вы

🥸 32. Как считаете attention? (доп. для какой задачи его предложили? и почему?)
👩🏻‍💻Attention intro

You compare the query with the keys to get scores/weights for the values (Сравниваем query с keys, чтобы получить веса для обновления values)

- key - относительно кого считаем, исходный текст на языке оригинала
- query - для кого считаем, переведенный текст на таргет языке
- value - на чем мы считаем, снова исходный текст

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


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

1. dot product - базовая и самая используемая функция: просто перемножаем)
допом можно делать scaled dot product - это когда вы перед тем, как добавлять softmax, нормализуете на квадратный корень от dimension эмбеддингов. Это нужно для стабилите, когда dimension большой))

2. additive attention он же concat, soft and global (Bahdanau attention) - родоначальник attention, скор считается с помощью дополнительной фидфорвад сети
одна из имплементаций

история от Андрея Карпатова, как ему Bahdanau рассказал, как он придумал attention

3. Luong-Attention он же general, location based и любимый dot product (они все разные)
Немного про различия


🥸 33. Сложность attention? Сравните с сложностью в RNN?
👩🏻‍💻Computation:

Attention: вычислительная сложность O(n² * d), где n — длина последовательности, d — размерность эмбеддингов.
RNN: O(n * d²), где n — длина последовательности, d — размерность hidden state.
Attention сложнее при больших последовательностях, но имеет преимущество за счет параллелизации вычислений. RNN, напротив, обрабатывает последовательность шаг за шагом, что может быть выгоднее для длинных последовательностей, но из-за проблемы исчезающего градиента теряет в эффективности.

В дополнение, self-attention работает быстрее, когда длина последовательности меньше размерности эмбеддингов. Источник для глубокого погружения — Transformer arXiv.

grokaem себя

26 Sep, 07:17


Когда я долго не пишу, это значит что-то из трех: я забила хер, мне херово, я занимаюсь чем-то охереть важным

В этом месяце третье и выливается оно во второе, но где-то между я дописала ответы на вопросы для части с attention. И вот я уже где-то на экваторе всех ответов и вопросов. Многое я хочу переписать, написать лучше, удалить. Но перфекционизма не занимать и доработки будут идти постепенно.

Быть честной, я не знаю где это опубликовать для моих читатей в рф (ни notion, ни medium уже не работает) - наверное соберусь с силами и перенесу на гитхаб.

grokaem себя

01 Sep, 13:14


С 1 сентября! Лишь недавно осознала, что в детстве родители пытались выстроить связь: 1 сентября - начало учебного года - праздник. Это вам пицца в Сеньоре Помидоре, тортик и банты.

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


АВГУСТ 2024

🎒NLP🎒
0. Вышел REFT - PEFT для representation fine-tuning, узнала тут, а код тут
1. Интересная статья MobileLLM, paper c подходами к уменьшению моделей без квантизации, но поддержки и бусту качества с помощью: embeddings sharing, immediate block-wise layer sharing, deeper networks over wider networks
3. Вышла ColPali, sota для поиска документов, анализирует также визуальные фрагменты, узнала тут
4. Новая мультимодальная модель от meta с diffusion, которая предиктит сразу discreate text tokens и картинки paper

🎒AUDIO🎒
0. Вышла WavTokenizer, codec модель по качеству в опережающая Encoder, DAC, SpeechTokenizer и при этом квантующая в 75 токенов. paper
1. Люди начали тюнить LLAMA 3.1 с audio input
2. Вышла Language Model Can Listen While Speaking, пайплайн с LLM для двухканального слушания, перебивки и tts.
3. В эту же песню вышел Qwen2-Audio code, для хорошего понимания советую прочитать обзор codec моделей
4. SimpleSpeech, paper, non-autoregressive TTS на диффузии и без alignment
5. Желтый AI провел конфу Turbo ML conf, выступления уже на youtube
6. Новая модель для utterance speaker recognition от русскоговорящих ребят paper
Большинство статей с канала Speech Technology

🎒RANDOM🎒
0. Открыла для себя канал SpeechAI Pro, иногда там про бизнесовые штуки, которые я скипаю, а иногда короткие ревью докладов
1. Интересный подход для knowledge distillation.
2. Также статьи, которые я планирую прочитать или читаю можно наблюдать тут в notion page

grokaem себя

30 Aug, 07:26


PEDALBOARD

Какие эффекты? Их много, но мне важно было сделать а-ля эффект большого зала и микрофона. Для второго я поиграю с chorus effect и reverb, а для первого будут добавлять equalizers и distortion.

Подробнее (удивительно) написано в документации. Но конечно, я не аудио инженер, я просто натюнила с claude примеры.

И вот какой мне +- подошел:
        board = Pedalboard([
Compressor(threshold_db=-15, ratio=2, attack_ms=5, release_ms=50),
HighpassFilter(cutoff_frequency_hz=85),
LowShelfFilter(cutoff_frequency_hz=200, gain_db=-2),
HighShelfFilter(cutoff_frequency_hz=4000, gain_db=1.5),
Distortion(drive_db=0.7),
Reverb(room_size=0.6, damping=0.4, wet_level=0.2, dry_level=0.8),
Gain(gain_db=-1)
])


Not the best, but still better than before.

Я все еще в поисках speech restoration сетки, чтобы возвращаться из чистой записи в грязную, знаете такие?

#grokaem_audio

grokaem себя

30 Aug, 07:25


Преамбула:

Как-то раз мы обсуждали, что по сути когда мы генерим что-то с TTS системой, мы не должны ожидать, что речь будет похожа на исходную. Например, если у вас речь в большой комнате, то сгенерированная скорее всего не будет звучать с эхо эффектом. Это ведет наше повествование в две ветви:
- audio language models - про них еще поговорим и говорили тут и тут и почти тут
- а как мы мерить будем качество?
- а что мы вообще хотим?

Если с тем, что хотим, мы разобрались - губу закатали и просто хотим приятную речь, то вот с сравнением нужно быть осторожнее. Например, если вы не берете MOS (для экспериментов это), то вы можете сравнить спектрограммы. Но тут способов облажаться дохрена: alignment, speaker conditions, length, audio power, но допустим вы удовлетворили все условия, какой-нибудь максимально наивный MSE будет очень высоким, как раз из-за "спецэффектов".

Так сижу я и атакую одну FAD систему, получается хреново. В рамках FAD это значит, что система работает и распознает мои записи как сгенерированные. Чтобы ее обмануть я могу:
- улучшить TTS
- улучшить voice conversion
- понять, а в чем еще сорс и мои записи различаются (?)

И тут нам везет, ведь работать мы можем в две стороны:
(грязный - с спецэффектам, чистый - без спецэффектов только речь)
Изначально у меня: грязный source VS чистый generated

И я могу:
- почистить source и будет: чистый source VS чистый generated
- загрязнить generated и будет: грязный source VS грязный generated

Почистить можно с demucs, speech enhancement, speech restoration. А вот загрязнить можно с аугментациями, про них я писала в этом посте.

Но грязнить мы должны ВСЕГДА по умному, тупые аугментации для умных сеток - время обучения на ветер. Поэтому буду пытаться воссоздать setting исходных записей. Для этого я буду использовать библиотеку от spotify pedalboard.

grokaem себя

29 Aug, 07:54


Визуализация initialization methods

Почти всегда в самом начале изучают initialization methods для сеток. Наткнулась на классную визуализацию методов, чтобы понять, что начнет обучаться, что нет и тд. На примере простой классификации на два класса и mnist. Тыкаете методы инициализации и то, как будет меняться лосс и распределения весов.

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

Принято считать:
1. A too-large initialization leads to exploding gradients
2. A too-small initialization leads to vanishing gradients

Популярные методы основываются на разделении с uniform и normal distribution.
- Xavier/Glorot initialization
- Kaiming He
- LeCun
- Orthogonal Initialization

Как обычно, нет идеального метода, хоть и считается, что Xavier например лучше для tanh & sigmoid activations, а Kaiming He для ReLU.

Небольшая статья с плюсами и минусами для remote sensing.

Похожая визуализация для regularization.

#grokaem_ml

grokaem себя

24 Aug, 20:02


Спасибо, что лайкаете узконаправленные посты ❤️ А не только всякие ссылки

grokaem себя

24 Aug, 19:45


LAYER-WISE ANALYSIS OF A SELF-SUPERVISED SPEECH REPRESENTATION MODEL
статья

Задача: понять, учит ли Wav2Vec слова в SST.

Метод:
Подход похож на Zero Resource Speech Benchmark, только считать его будем по слоям. Такое мы видели у Voita например, в MI для NLP.

Считают:
- CCA (canonical correlation analysis)
- MI (mutual information) - определяем лейбл через подготовленные кластеры
- Word discrimination
- Word Similarity - достаем эмбеддинги слов - считаем cosine similarity с скрытым состоянием

Сразу к результатам:
- Is Wav2Vec an autoencoder? Доказали, что SST training следует autoencoder style, где сначала до +- середины мы получаем скрытое состояние, которые отличаются от input features, а потом начинаем их восстанавливать в исходные и CCA растет.
- Согласно MI и word discrimination, средние (6-7) показывают наилучшую инфу о фонемах.
- Тот же тренд для средних слоев для word similarity как для малых, так и для больших моделей.

Question 1. Но мы же будет обучать модельку для ASR. Оказывается, что fine-tuning для ASR поможет нам уйти от autoencoder стиля и стабильно улучшать MI. Что по сути абсолютно логично, так как лосс меняется.

Question 2. Но если подготовленные веса для этих последних слоев такие плохие, мб и не будем их использовать? Оказалось, что если не инициализировать последние слои с SSF модели - результаты для WER буду лучше.

- Также показали, что для почти всех слоев растет высокая корреляция к Filter banks, предлагая подавать именно их.

Вопрос "а спикеры на каком слое тогда?" остается открытым или нет?

#grokaem_audio

grokaem себя

24 Aug, 19:45


Преамбула:
По сути дела self-supervised mode помогает нам в том, чтобы выучить природу предмета. Как для текста это семантика, синтаксис и что-то еще (я плохо слушала на парах). Почему бы не делать это для речи? Да, все логично - маскируй и предсказывай, не rocket science, you know. Но! Когда ты учишь gpt генерить текст, исходная задача SST - сгенерить текст никак не мешает в downstream задачке его классифицировать. А что с речью? Ну тоже проблем не должно быть, мы же говорим и все тут.

Downstream задача - automatic speech recognition. Просто предсказывай слово. Неважно где, шепотом или ором, медленно или быстро, зло или добро, та и я вообще его говорю или нет - просто предскажи. И вот лежит у меня на письменном столе wav2vec на SST, по вкусу вкусный, а на вкус? А на вкус могу ли я заиспользовать его для классификации спикера? А акцента? А ASR?

Безусловно, могу. Я вообще все могу, вопрос на сколько хорошо ;) И на что училась? А учу я просто self-supervised learning модель, где на первом этапе меня не так уж сильно интересует asr, меня интересует mutual info с "квантованой" репрезентацией от zi. При этом я за скобки выношу тот факт, что речь continuous, а мне нужны дискретные юниты, которые я учу. Но что они в себе несут?

Пусть даже если большинство downstream задач ортогональны upstream задаче, мы все еще используем эти модели, но знают ли они слова или нет?

grokaem себя

23 Aug, 20:39


FLEURS - (R)
paper

🐕🐕🐕
подводка:
В борьбе за натуральность есть два пути: много данных, но с шумом VS меньше данных, но чистые и звук также будет в конце чистый. Если вы пробовали использовать какие-то шумные данные, как condition для генерации, то вы часто получали кучу артифактов. Почему так? Потому что в большинстве случаев мы тренируемся с идеально чистыми студийными данными. Что грустно? Часто эти данные есть только на одном языке. Есть LibriTTS, из него сделали LibriTTS-R - датасет, который прошел speech restoration. Он на английском, то же самое можно сделать и мультилингвально.

🐕🐕🐕
FLEURS-R - датасет c 102 параллельными языками.

Что сделали? Используют speech restoration алгоритм Mipher поверх записей.

0. Подробнее про Mipher:
Mipher берет w2v-BERT, тащим их в Conformer-DF (extended Conformer with linear complexity attention). Но поверх этого мы несем также text и speaker фичи, потом генерим с WaveFit.

1. Для мультилингвальности меняем пару частей, просто кидаемся крутыми словами:
w2vBert -> USM (Universal Speech Model)
А вот text и speaker фичи убрали, потому что USM с обоими справлялась

🐕🐕🐕
Что мне было интересно, так это проверка:
В теории, когда мы генерим что либо с любой нейронкой - мы получаем "сгенерированные данные". То есть мы может увидить артифакты тут и там.

Поэтому делаем фильтрацию поверх:
- asr - тут мы следим за двумя вещами: не упал WER, а лучше, чтобы WER или/и CER подрос, как это случилось для 32%
- поверх мы считаем squid MOS, тут авторы говорят, что так и так squid не sensitive к linguistics -> юзаем его, людей спрашивать не будет. И действительно MOS на 0.2 лучше для чистых новых записей.
- Но как мы знаем - любой ASR датасет можно использовать как TTS, но для TTS нам всегда нужно качество лучше. Тогда получается: если сделали speech restoration, то и результаты будут лучше? Будут, да? Ну 3.89 VS 3.79 для MOS, и почти идентичные, а иногда и хуже результаты для CER.

Пример записей в комментариях.

grokaem себя

20 Aug, 09:17


я вам вопрос, а вы мне ответ

В чем различие между learning to initialize (meta-learning) и self-supervised learning, если в обоих случаях мы пытаемся выучить классные initial parameters?

grokaem себя

14 Aug, 19:47


Галопом по европам: Pre-train, prompt and predict. да 2021 год и что?

- что такое промтинг? какие виды answer бывают?
- какие претрейны у лм и под какие answer паттерны и задачи лучше подходят?
- методы prompt engineering и дискретный и continuous
- training strategies для prompts
- multi-prompts

Подойдет для освежить память, структурировать или подготовиться к экзамену)

link
github с тем же самым

#grokaem_nlp #grokaem_books