| Задача | Блокнот |
|---|---|
| Whisper_vits_japanese (встроенный набор данных Ella) |
Этот проект использует проект Google Whisper в качестве процессора данных VITS. Изменение транскрибибеточного. В то же время предел шепота может читать только несколько аудиофайлов, расслаблен до такой степени, что он может пройти все аудиофайлы в папке. Whisper может вывести SRT, чтобы сделать ввод длинного аудио, и пользователям больше не нужно разрезать аудио на куски или даже транслировать текст длинного аудио. Мы непосредственно полагаемся на шепот для распознавания речи и подготовки данных, автоматически нарезать короткое аудио, автоматически генерировать файлы транскриптов, а затем отправлять их в процесс обучения VITS. Учитывая, что долгосрочный аудио сухой звук легче получить, входные барьеры VITS снова значительно снижаются.
Процесс обработки примерно следующим образом: файл SRT, распознанный Whisper, будет обрабатываться Auto.py. Процесс обработки относится к TobiaSrordorf/Srt-to-CSV и Audio-Split: разделить длинные аудиофайлы на основе Subtitle-Info в файле SRT (транскрипт, сохраненный в CSV) (github.com). Аудио -файл сначала преобразуется в 22050 Гц и 16 бит, а затем временные метки файла SRT с тем же именем, а транскрипт распознавания речи преобразуется в файл CSV. Файл CSV имеет время начала и время окончания каждого сегмента аудио, а также соответствующие пути транскрипта и аудиофайл. Затем пакет аудиозегментов используется для разделения длинного аудио в соответствии с временем начала и окончания, а аудиофайлы с суффиксами генерируются в порядке срезов, таких как A_0.WAV и A_1.WAV и т. Д. Все нарезанные звук будут храниться в папке Slice_Audio, а затем в TXT -файле с «Path | Translation» будет установлен FILELISTOR. Последующий поток данных может быть непосредственно подключен к части VIT.
Очистка и символ VITS, которые я использую сейчас, - это Cjangcjengh/Vits: VITS реализация японского, китайского, корейского и санскрита (github.com) в качестве первоначальной версии периода создания Бога. Теперь его склад обновил больше чистящих средств и символов, но я очень ностальгический человек, и я скучаю по времени, когда все пришли в Vits в начале, поэтому я все еще использую оригинальную версию. VITS имеет две основные предварительные обработки: один - монотонное выравнивание, а другой - pref -Rocess.py, а затем вы можете начать train.py. Я помещаю все процессы в Whisper-vits-japanese.ipynb, и мне просто нужно нажать их шаг за шагом. Единственное, что нужно, чтобы пользователь изменил, - это заменить мой аудио -путем Zip на собственном аудио -молнии, а остальные детали не должны быть изменены. Наконец, я добавил инструкции для сохранения модели и обработанных файлов на сетевой диск, а также восстановить последнюю последнюю контрольную точку с сетевого диска во время следующего обучения.
Просто назовите аудиофайл формат speakerid_xxxx.wav и загрузите его в папку аудио. Затем выполните общие шаги, чтобы запустить его. Когда обработка звука будет выполнена, запустите файл auto_m.py, и файл TXT будет автоматически сгенерирован с помощью пути формата | Speakerid | Text.
ПРИМЕЧАНИЕ. Если вы используете auto_ms.py для генерации txt, вы должны изменить его на код на шаге выравнивания и преобразования текста: (потому что Text_index - это не 1, а 2 при обучении для нескольких людей)
python preprocess.py --text_index 2 --text_cleaners japanese_cleaners --filelists /content/whisper-vits-japanese/filelists/train_filelist.txt /content/whisper-vits-japanese/filelists/val_filelist.txt
python train_ms.py -c configs/ms.json -m ms
hps = utils.get_hparams_from_file("./configs/ms.json")
net_g = SynthesizerTrn(
len(symbols),
hps.data.filter_length // 2 + 1,
hps.train.segment_size // hps.data.hop_length,
n_speakers=hps.data.n_speakers,
**hps.model).cuda()
_ = net_g.eval()
_ = utils.load_checkpoint("/root/autodl-tmp/logs/ms/G_29000.pth", net_g, None)
stn_tst = get_text("ごめんね優衣", hps)
with torch.no_grad():
x_tst = stn_tst.cuda().unsqueeze(0)
x_tst_lengths = torch.LongTensor([stn_tst.size(0)]).cuda()
sid = torch.LongTensor([11]).cuda() //11指speakerId为11,如果有12个n_speaker,编号就从0-11
audio = net_g.infer(x_tst, x_tst_lengths, sid=sid, noise_scale=.667, noise_scale_w=0.8, length_scale=1)[0][0,0].data.cpu().float().numpy()
ipd.display(ipd.Audio(audio, rate=hps.data.sampling_rate, normalize=False))