| Tarea | Computadora portátil |
|---|---|
| Whisper_vits_japanese (conjunto de datos de Ella incorporado) |
Este proyecto utiliza el proyecto Whisper de Google como el procesador de datos VITS. Al modificar el Transcribe.py del proyecto Whisper, genera el archivo SRT correspondiente para el audio (el PR eliminado se usa aquí y el PR ya no se encuentra, por lo que no se puede hacer referencia al autor original). Al mismo tiempo, el límite de Whisper solo puede leer unos pocos archivos de audio está relajado hasta el punto en que puede atravesar todos los archivos de audio en la carpeta. Whisper puede emitir SRT para hacer posible la entrada de audio largo, y los usuarios ya no necesitan cortar el audio en piezas, o incluso transferir el texto de audio largo. Confiamos directamente en Whisper para el reconocimiento de voz y la preparación de datos, cortamos automáticamente en audio corto, generamos automáticamente archivos de transcripción y luego los enviamos al proceso de capacitación VITS. Teniendo en cuenta que el sonido seco de audio a largo plazo es más fácil de obtener, las barreras de entrada VITS se reducen considerablemente nuevamente.
El proceso de procesamiento es más o menos el siguiente: el archivo SRT reconocido por Whisper será procesado por Auto.py. El proceso de procesamiento se refiere a Tobiasrordorf/SRT-to-CSV-and-Audio-Split: divide los archivos de audio largos basados en subtitle-info en el archivo SRT (transcripción guardada en CSV) (github.com). El archivo de audio se convierte primero en 22050Hz y 16 bits, y luego las marcas de tiempo del archivo SRT con el mismo nombre y la transcripción de reconocimiento de voz se convierten en un archivo CSV. El archivo CSV tiene la hora de inicio y el tiempo de finalización de cada segmento del audio, así como las rutas de transcripción y archivo de audio correspondientes. Luego, el paquete de audiencias se usa para dividir el audio largo de acuerdo con la hora de inicio y la hora de finalización, y los archivos de audio con sufijos se generan en el orden de las cortes, como A_0.WAV y A_1.WAV, etc. Todos los audio en rodajas se almacenarán en la carpeta SLICE_AUDIO, y luego el archivo de txt con "ruta | traducción requerida por los ritmos se generará en la carpeta de filelistas. El flujo de datos posterior se puede conectar directamente a la parte VITS.
El limpiador Vits y el símbolo que uso ahora es Cjangcjengh/Vits: VITS Implementación de japonés, chino, coreano y sánscrito (github.com) como la versión inicial del período de la creación de Dios. Ahora su almacén ha actualizado más limpiadores y símbolos, pero soy una persona muy nostálgica, y extraño el momento en que todos llegaron a Vits al principio, así que todavía uso la versión original. VITS tiene dos preprocesos principales, uno es Monotonic Aline y el otro es Preprocess.py, y luego puede comenzar Train.py. Puse todos los procesos en whisper-vits-japanese.ipynb, y solo necesito hacerles clic en paso a paso para ejecutar. Lo único que necesita que el usuario cambie es reemplazar mi ruta de cremallera de audio con su propia zip de audio, y el resto de las piezas no necesitan ser modificadas. Finalmente, también agregué las instrucciones para guardar el modelo y los archivos procesados en el disco de red, y para restaurar el último último punto de control desde el disco de red durante la próxima capacitación.
Simplemente nombre el formato de archivo de audio SpeakerID_XXXX.WAV y cárguelo a la carpeta de audio. Luego siga los pasos generales para ejecutarlo. Cuando se realice el procesamiento de audio, ejecute el archivo auto_ms.py, y el archivo txt se generará automáticamente, con la ruta de formato | speakerID | text.
Nota: Si usa auto_ms.py para generar TXT, debe modificarlo al código en el paso de alineación y conversión de texto: (porque el text_index no es 1 sino 2 cuando se capacita para varias personas)
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))