Всем привет! Для обучения TTS модели я использую чистый Vits.

Кто знает, с чем связана такая ситуация. Дан датасет: набор .wav файлов и соответствующий .csv файл. Перед обучением модели исходное множество данных разбивается на train и validate. В ходе обучения для каждого задействованного .wav файла создается файл со спектрограммой .spec.pt. А теперь вопрос: почему в обучении (валидации) модели участвуют не все .wav файлы? Почему для существенной доли .wav файлов не появляются соответствующие .spec.pt файлы? Независимо от размера датасета, примерно треть всех .wav файлов не участвует в обучении модели. Почему так?

15 ответов

68 просмотров
Alexey-Bazarov Автор вопроса

А, спасибо! Но в целом это не решает мою задачу. Всё равно есть такие .wav файлы, которые явно перечислены в train.csv, но для которых нет .spec.pt. И самое главное, таких файлов довольно много — грубо говоря треть всего датасета... А я под валидацию отдаю 20% всех файлов...

Alexey Bazarov
А, спасибо! Но в целом это не решает мою задачу. В...

Надо смотреть, почему они пропали. Может быть формат был не тот, и поэтому пропустили файлы при извлечении признаков. В нормальной базе должны быть все файлы.

Alexey-Bazarov Автор вопроса
Nikolay V. Shmyrev
Надо смотреть, почему они пропали. Может быть форм...

Я тоже так думал, но нигде не могу найти сообщений об ошибках. В коде Vits при неверном samplerate выбрасывается исключение... Но ни в логе, ни в консольном выводе исключений я не нашел... Я сделаю по-другому. Когда закончится мое текущее обучение, я удалю из датасета все "хорошие" файлы и оставлю только "плохие". Наверно Vits либо должен-таки их обработать, либо явно напишет, почему он не может этого сделать...

Если это репа с VITS отдельная, а не та, что в Nemo, то там есть ограничители по времени сэмплов. Причём какие-то хитрые, там список вида [200, 400, … 1000] и т.д. и проверяется, кажется, и максимальная, и минимальная длина (в кадрах спектрограммы). В общем, то, что в эти границы не влезает, выбрасывается. Может быть, поэтому не для всех файлов спектрограммы есть.

Korovsky
Если это репа с VITS отдельная, а не та, что в Nem...

Это я про эту репу говорю: https://github.com/jaywalnut310/vits

Кстати, да, про длину текста я забыла. Я помню, что сталкивалась с этими ограничениями и, кажется, что-то правила (наверное, ограничение по длине текста). В общем-то всё это можно настраивать по себя, хотя оно максимально странно сделано, прямо захардкожено. Там где-то был пулл реквест, где предлагалось настройки boundaries перенести в конфиг, наверное, можно так и сделать для удобства. Подозреваю, что большинство здесь присутствующих используют для VITS какую-то другую репу.

Alexey-Bazarov Автор вопроса
Korovsky
Кстати, да, про длину текста я забыла. Я помню, чт...

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

Alexey Bazarov
Огромное спасибо! В общем, во-первых, wav-файлы дл...

А с чего именно 10 секунд? Просто интересно... Я и на 30 обучал.

Alexey-Bazarov Автор вопроса
Tarasfrompir V
А с чего именно 10 секунд? Просто интересно... Я и...

См. выше мои сообщения. В чистом виде Vits отсекает тексты длиннее 190 символов и звуковые файлы длиннее 10 секунд. Ну точнее там проверяется не длительность в секундах, а вот такая формула: wav_length = file_size / (wav_channels * Bytes per dim) spec_length = wav_length // (2 * self.hop_length) И вот spec_length должно попадать в интервал от 32 до 1000. Не знаю, почему именно такие константы, но по умолчанию в исходниках vits именно так. Чтобы обработать мой текущий датасет, я сам увеличил максимальную длину текста до 250 символов, а длительность спектрограмм увеличил до 1200. Еще раз говорю, я использую чистый Vits. А вы из какого репозитория взяли исходники?

Alexey Bazarov
См. выше мои сообщения. В чистом виде Vits отсекае...

А можешь скинуть код, где менял? То же хочу проверить, в моей версии как это реализовано

Alexey-Bazarov Автор вопроса
Aigiz K
А можешь скинуть код, где менял? То же хочу провер...

Файл data_utils.py class TextAudioLoader(torch.utils.data.Dataset): def init(self, audiopaths_and_text, hparams): .......... .......... #self.max_text_len = getattr(hparams, "max_text_len", 190) self.max_text_len = getattr(hparams, "max_text_len", 250) Файл train.py train_sampler = DistributedBucketSampler( train_dataset, hps.train.batch_size, #[32,300,400,500,600,700,800,900,1000], [32,300,400,500,600,700,800,900,1000, 1100, 1200], .......... ..........

Alexey-Bazarov Автор вопроса

Какая у тебя версия? Где брал?

Aigiz K
да, то же самое. спасибо

А какой результат учебы при таких параметрах отбора? Синтез и время обучения? Какие характеристики gpu?

Похожие вопросы

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта