grokaem себя
رفتن به کانال در Telegram
A bunch of things that I encounter during my journey as NLP/Audio developer
نمایش بیشتر2 338
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-57 روز
+1130 روز
در حال بارگیری داده...
کانالهای مشابه
ابر برچسبها
هیچ دادهای
مشکلی وجود دارد؟ لطفاً صفحه را تازه کنید یا با مدیر پشتیبانی ما تماس بگیرید.
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
مه '25
مه '25
+22
در 0 کانالها
آوریل '25
+37
در 0 کانالها
Get PRO
مارس '25
+38
در 0 کانالها
Get PRO
فوریه '25
+55
در 1 کانالها
Get PRO
ژانویه '25
+76
در 2 کانالها
Get PRO
دسامبر '24
+56
در 0 کانالها
Get PRO
نوامبر '24
+58
در 2 کانالها
Get PRO
اکتبر '24
+79
در 3 کانالها
Get PRO
سپتامبر '24
+78
در 1 کانالها
Get PRO
اوت '24
+80
در 2 کانالها
Get PRO
ژوئیه '24
+61
در 0 کانالها
Get PRO
ژوئن '24
+41
در 2 کانالها
Get PRO
مه '24
+61
در 0 کانالها
Get PRO
آوریل '24
+87
در 2 کانالها
Get PRO
مارس '24
+95
در 1 کانالها
Get PRO
فوریه '24
+123
در 1 کانالها
Get PRO
ژانویه '24
+340
در 7 کانالها
Get PRO
دسامبر '23
+327
در 12 کانالها
Get PRO
نوامبر '23
+75
در 1 کانالها
Get PRO
اکتبر '23
+52
در 0 کانالها
Get PRO
سپتامبر '23
+75
در 0 کانالها
Get PRO
اوت '23
+68
در 0 کانالها
Get PRO
ژوئیه '23
+72
در 0 کانالها
Get PRO
ژوئن '23
+84
در 0 کانالها
Get PRO
مه '23
+180
در 0 کانالها
Get PRO
آوریل '23
+75
در 0 کانالها
Get PRO
مارس '23
+89
در 0 کانالها
Get PRO
فوریه '23
+410
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 17 مه | 0 | |||
| 16 مه | 0 | |||
| 15 مه | +1 | |||
| 14 مه | 0 | |||
| 13 مه | +1 | |||
| 12 مه | +2 | |||
| 11 مه | +4 | |||
| 10 مه | +2 | |||
| 09 مه | +1 | |||
| 08 مه | +1 | |||
| 07 مه | +3 | |||
| 06 مه | +1 | |||
| 05 مه | 0 | |||
| 04 مه | +1 | |||
| 03 مه | +3 | |||
| 02 مه | 0 | |||
| 01 مه | +2 |
پستهای کانال
Meta новая модель для оценки аудио
paper
code
Выше я писала о том, что часто я фильтрую и анализирую аудио данные по различным метрикам. Их делят на subjective и objective, где objective больше про технические характеристики, а subjective должна быть похожа на идеальный MOS. Автоматические MOS нужны, так как это позволяет честно сравнивать модели между собой.
Meta попытались решить проблему в эту стороны. Что сделали?
Одну transformer модель для определения 4 метрик:
🐢🐢🐢
1. Product Quality - технические аспекты качества
2. Production Complexity - сколько компонент в аудио
3. Content Enjoyment - аля mos, emotional impact, artistic skills, expression and etc
4. Content Usefulness - сколь подходящий для контента (будешь ли юзать у себя на ютуб канале этот звук)
🐢🐢🐢
Что мне понравилось, так они посмотрели на 2 способа использования метрик (смотрели только PQ - product quality):
- фильтрация данных, которые потом пойдут на обучение
- добавление в промт для description моделей как их AudioBox
И о вау вау, фильтрация проигрывает. Тут сложный саркастический комментарий, так как с одной стороны мы получаем меньше данных с фильтрацией, что объясняет, почему для промта все лучше (у промта не отняли данные). Но фильтрация же даст максимально чистые классные данные! Я бы сказала, что в большом количестве "грязные" данные - это аугментация))
| 2 | tts.pdf | 1 572 |
| 3 | Ранее я писала о статьях с emergent TTS, вчера защитила постер и мой research output - лучше всех для этих целей flow matching и compositional classifier free guidance. Но drawback - user experience, так как хочется все таки описать просто текстом то, что ты хочешь услышать.
fugatto пост
spiritlm пост
uniaudio пост
notion page с другими статьями | 1 449 |
| 4 | +1 generation_source_examples.zip | 1 854 |
| 5 | Так как я за открытый research, прикладываю source записи, чтобы вы также могли их юзать 🦕 | 1 728 |
| 6 | +3 eng_rus_translation.wav | 1 624 |
| 7 | Моя жизнь за последние пару месяцев стала более занятой, менее нервозной и менее продуктивной на посты. Одна из штук, которыми я занималась и занимаюсь - это F5TTS для русского.
Так как париться с красивыми постами (а они когда-то были?) мне не хочется, будут посты более расслабленные и легкие. Вот давайте послушаем новые примеры с нового подхода, который я поставила.
В этот раз это смесь russian и english (total 268h) так как заметила сильный forgetting для английского при обучении чисто на русском.
До этого были эксперименты с IPA и ударениями. Сейчас русский стоит только с ударениями от ruaccent, ударения с пометкой на +. Хочется рассказать о том, как работает расширение, что не так с длинными записями и как сделать condition на source lang != target lang. А также про то, как я собственно проверяю модели, выбираю данные и колдую над генерацией без изменения моделей.
#grokaem_audio | 1 508 |
| 8 | 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 513 |
| 9 | Github repo, которое автоматически обновляется каждые 12 часов статьями из TTS сферы
link
#grokaem_audio | 1 519 |
| 10 | ДЕКАБРЬ 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 | 2 425 |
| 11 | Этот год был насыщенным на события, на мой как профессиональный, так и личностный рост. Огромным этапом для меня стал переезд в Германию, который дался мне морально очень тяжело. Однако он притянул кучу разных как сложных, так и очень приятных событий. Пока что я нахожусь тут, как и всегда рада знакомствам. Надеюсь, что и следующий год принесет вам много как шипучка заряжающих событий, чтобы через месяцы и годы они обмазывали душу как теплый хлебушек маслом. И, конечно, пусть следующий год вернет нам всем мира и любви друг к другу.
Для хоть какого-то новогоднего настроения отправляю вам вид из моего родного города, где я уже слишком давно не была. Надеюсь, что эта фотография поднимет и вам новогоднее настроение, как подняла его и мне. Присылайте ваши новогодние фотокарточки в комментариях) | 1 248 |
| 12 | 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. | 1 156 |
| 13 | 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 | 1 095 |
| 14 | Одна из моих болей и проблем — это долгое чтение статей. Если мне статья искренне интересна, я могу читать её по меньшей мере часа 2, запрыгивая в детали и утопая в синдроме ссылки Википедии. Эту проблему нужно решать, так как начитанность важна и нужна. Из раза в раз я пытаюсь себя научить читать быстро, моя цель — это 25 минут на поверхностную статью и час на хорошую и глубокую. Вот сегодня час у меня ушёл на чтение поста от Gonzo-обзоров, из текста я не поняла техники подробно, села читать отдельно и делать свои технические заметки. Они внизу.
Рассказывайте, как вы читаете статьи?
У меня поверх всегда помогает музыка этих двух плейлистов (один, два) | 1 010 |
| 15 | 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 | 1 173 |
| 16 | UniAudio (rejected ICLR)
UniAudio 1.5 (не сильно много различий, два дополнительных лосса, чтобы улучшить capture semantics)
видео объяснение
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) | 1 517 |
| 17 | +3 mpsenet.wav | 1 812 |
| 18 | ClearerVoice-Studio
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 сработал на удивление приятно и быстро. Но сегодня посмотрим на него еще и с другом стороны - не навреди.
Подарили мне тут данные из игр (да вот такие подарки). Я прогоняю через мой базовый пайплайн, про который мы говорили вот тут и не слышу речи вовсе. Неожиданно и не приятно.
Бенчи по моделям | 1 714 |
| 19 | * я грубо буду мешать английский и русский *
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 скоры также соответственно меняются. | 1 855 |
| 20 | Одна из 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 о стены
👍
Главная цель - усидеть на всех трех стульях…. мне кажется, что самое сложное - это не отдельно взятый стул, а усидеть на всех трех. Для этого нам понадобится либо очень жирная модель, либо очень ловкая. Сегодня о ловкой. | 1 484 |
