Clonar voces con Python es una de las miles de cosas que se pueden hacer con la Inteligencia Artificial. En este caso, utilizaremos el paquete de software llamado Tortoise TTs. Se trata de un paquete de software libre y compatible con el lenguaje de programación python, con el que poder clonar voces, en base a entrenamientos propios, con archivos de audio.

Para empezar vamos a ir a Google Collab, crear un cuaderno y darle a la parte superior, para cambiar el entorno de ejecución al tipo: GPU.
Tras hacer esto, añadir el siguiente código:
# the scipy version packaged with colab is not tolerant of misformated WAV files.
# install the latest version.
!pip3 install -U scipy
!git clone https://github.com/jnordberg/tortoise-tts.git
%cd tortoise-tts
!pip3 install -r requirements.txt
!pip3 install transformers==4.19.0 einops==0.5.0 rotary_embedding_torch==0.1.5 unidecode==1.3.5
!python3 setup.py install
Se presiona el botón de reproducir y más tarde, pegamos un nuevo código:
import torch
import torchaudio
import torch.nn as nn
import torch.nn.functional as F
import IPython
from tortoise.api import TextToSpeech
from tortoise.utils.audio import load_audio, load_voice, load_voices
# This will download all the models used by Tortoise from the HuggingFace hub.
tts = TextToSpeech()
Le damos otra vez a reproducir y comenzará a instalar todos los archivos necesarios, para poder ejecutar el software.
Tras finalizar la descarga e instalación de los archivos necesario, nos disponemos a ejecutar el siguiente código. Si no salta ningún error, todo va bien. A pesar de que todavía no escuches nada. Este será el texto que se reproducirá con la voz que quieres clonar.
# This is the text that will be spoken.
text = "Thanks for reading this article. I hope you learned something."
# Pick a "preset mode" to determine quality. Options: {"ultra_fast", "fast" (default), "standard", "high_quality"}. See docs in api.py
preset = "fast"
Ahora agregaremos una de las partes más importantes del código, que es la de subir los archivos en formato .WAV para realizar el entrenamiento. Para grabar la voz que se desea clonar, es recomendable utilizar Audacity, marcar las frecuencias (22050 Hz) en la parte inferior. Antes de hacer la exportación.
Nombre para archivos: audio_sample_1.wav, audio_sample_2.wav, audio_sample_3.wav, etc…
# Optionally, upload use your own voice by running the next two cells. I recommend
# you upload at least 2 audio clips. They must be a WAV file, 6-10 seconds long.
CUSTOM_VOICE_NAME = "ejemplo1"
import os
from google.colab import files
custom_voice_folder = f"tortoise/voices/{CUSTOM_VOICE_NAME}"
os.makedirs(custom_voice_folder)
for i, file_data in enumerate(files.upload().values()):
with open(os.path.join(custom_voice_folder, f'{i}.wav'), 'wb') as f:
f.write(file_data)
Y finalmente, añadimos y ejecutamos el siguiente código para realizar el entrenamiento y reproducir la voz:
# Generate speech with the custotm voice.
voice_samples, conditioning_latents = load_voice(CUSTOM_VOICE_NAME)
gen = tts.tts_with_preset(text, voice_samples=voice_samples, conditioning_latents=conditioning_latents,
preset=preset)
torchaudio.save(f'generated-{CUSTOM_VOICE_NAME}.wav', gen.squeeze(0).cpu(), 24000)
IPython.display.Audio(f'generated-{CUSTOM_VOICE_NAME}.wav')
#Descargar audio en tu equipo:
from google.colab import files; files.download(f'generated-{CUSTOM_VOICE_NAME}.wav')
Y por cierto, no olvides seguirme a instagram: https://instagram.com/javierfinance
Vídeo.
- Inteligencia Artificial para cámaras de seguridad - noviembre 6, 2023
- Los mejores Bootcamps de Data Science (Ranking) - septiembre 27, 2023
- ¿Cómo limpiar datos con Pandas? [Código Python] - septiembre 4, 2023
¡Excelente! Todo funcionó muy bien, excepto porque, si bien podemos alimentar con una voz en español, la pronunciación es con fonemas en inglés. ¿Habrá algún módulo para cargar pronunciación en español? Saludos desde Perú