Spaces:
Running
Running
| # app.py | |
| import streamlit as st | |
| import tempfile | |
| from utils import VoiceCloner | |
| def main(): | |
| st.title("Clonaci贸n de Voz en Espa帽ol") | |
| st.write(""" | |
| Esta aplicaci贸n de ejemplo utiliza **Coqui TTS** (YourTTS) para | |
| realizar clonaci贸n de voz en espa帽ol mediante zero-shot. | |
| """) | |
| # Creamos una instancia del clonador de voz | |
| voice_cloner = VoiceCloner() | |
| # Entrada de texto | |
| text_input = st.text_area("Ingresa el texto a reproducir:", "") | |
| # Carga de archivo de audio (WAV o MP3) | |
| uploaded_audio = st.file_uploader("Sube una nota de voz o audio de referencia", type=["wav", "mp3"]) | |
| # Bot贸n para generar la voz clonada | |
| if st.button("Generar voz clonada"): | |
| # Validaciones b谩sicas | |
| if not text_input: | |
| st.warning("Por favor, ingresa un texto.") | |
| elif not uploaded_audio: | |
| st.warning("Por favor, sube un archivo de audio de referencia.") | |
| else: | |
| # Guardamos temporalmente el audio subido | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp: | |
| tmp.write(uploaded_audio.read()) | |
| reference_audio_path = tmp.name | |
| # Definimos un archivo de salida | |
| output_path = "cloned_voice.wav" | |
| # Llamamos a la funci贸n que clona la voz | |
| result_audio_path = voice_cloner.clone_voice( | |
| text=text_input, | |
| reference_audio_path=reference_audio_path, | |
| output_path=output_path | |
| ) | |
| st.success("隆Voz clonada generada con 茅xito!") | |
| # Leemos el audio generado y lo reproducimos | |
| with open(result_audio_path, "rb") as audio_file: | |
| audio_bytes = audio_file.read() | |
| st.audio(audio_bytes, format="audio/wav") | |
| if __name__ == "__main__": | |
| main() | |