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

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

15 ответов

23 просмотра
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?

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

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

Так а кто может спарсить всех участников чата? Идишники
Magic
18
да пофиг на капчу зашел в чат и молчишь при этом ты нонейм? пошел вон
Magic
17
Гайз, а как отправлять с вейпора пуши на андроид? ) Меня вот осенило )))
Serg
6
Как думаете, будут макбуки на WWDC?
Dmytro
6
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
13
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Включил эту опцию. Осталось два варнинга из всех (все одинаковые - a term is constructed, but never used) lager:warning("~p is not a map (~s:~s:~s)", [Body, Class, Sub, Type]...
Δημήτηρ
3
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
10
Нужно магазин с тильды на опен кат перенести Есть кто умеет? В лс
Magic
6
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
Карта сайта