GuilleMulasss commited on
Commit
1d6d8f9
1 Parent(s): 9d74270

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -53
app.py CHANGED
@@ -1,53 +1,52 @@
1
- import gradio as gr
2
- from transformers import pipeline
3
- from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech
4
- from datasets import load_dataset
5
- import torchaudio
6
- import torch
7
-
8
-
9
- # Cargar el modelo de traducción
10
- translator = pipeline("translation", model="Helsinki-NLP/opus-mt-es-en")
11
- synthesiser = pipeline("text-to-speech", "microsoft/speecht5_tts")
12
-
13
- # Cargar voces preentrenadas
14
- embeddings_dataset = load_dataset("Matthijs/cmu-arctic-xvectors", split="validation")
15
-
16
-
17
- # Función principal
18
- def translate_and_speak(text):
19
- # Traducir de español a inglés
20
- translated = translator(text, src_lang="es", tgt_lang="en")[0]["translation_text"]
21
-
22
- # Usar una voz preentrenada
23
- speaker_embeddings = torch.tensor(embeddings_dataset[7306]["xvector"]).unsqueeze(0)
24
-
25
- # Generar audio
26
- speech = synthesiser(translated, forward_params={"speaker_embeddings": speaker_embeddings})
27
-
28
- # Extraer waveform y sampling_rate del resultado
29
- waveform = torch.tensor(speech["audio"]) # Convertir a tensor de PyTorch
30
- sampling_rate = speech["sampling_rate"]
31
-
32
- # Guardar el audio temporalmente
33
- output_path = "output.wav"
34
- torchaudio.save(output_path, waveform.unsqueeze(0), sample_rate=sampling_rate) # Unsqueeze para añadir batch dimension
35
-
36
- return translated, output_path
37
-
38
-
39
- # Crear la interfaz
40
- interface = gr.Interface(
41
- fn=translate_and_speak,
42
- inputs=gr.Textbox(label="Texto en Español"),
43
- outputs=[
44
- gr.Textbox(label="Texto Traducido (Inglés)"),
45
- gr.Audio(label="Audio Generado (Inglés)")
46
- ],
47
- title="Traductor y Generador de Voz",
48
- description="Escribe un texto en español y este será traducido al inglés y leído en voz alta usando IA."
49
- )
50
-
51
- # Lanzar la aplicación
52
- if __name__ == "__main__":
53
- interface.launch()
 
1
+ import gradio as gr
2
+ from transformers import pipeline
3
+ from datasets import load_dataset
4
+ import torchaudio
5
+ import torch
6
+
7
+
8
+ # Cargar el modelo de traducción
9
+ translator = pipeline("translation", model="Helsinki-NLP/opus-mt-es-en")
10
+ synthesiser = pipeline("text-to-speech", "microsoft/speecht5_tts")
11
+
12
+ # Cargar voces preentrenadas
13
+ embeddings_dataset = load_dataset("Matthijs/cmu-arctic-xvectors", split="validation")
14
+
15
+
16
+ # Función principal
17
+ def translate_and_speak(text):
18
+ # Traducir de español a inglés
19
+ translated = translator(text, src_lang="es", tgt_lang="en")[0]["translation_text"]
20
+
21
+ # Usar una voz preentrenada
22
+ speaker_embeddings = torch.tensor(embeddings_dataset[7306]["xvector"]).unsqueeze(0)
23
+
24
+ # Generar audio
25
+ speech = synthesiser(translated, forward_params={"speaker_embeddings": speaker_embeddings})
26
+
27
+ # Extraer waveform y sampling_rate del resultado
28
+ waveform = torch.tensor(speech["audio"]) # Convertir a tensor de PyTorch
29
+ sampling_rate = speech["sampling_rate"]
30
+
31
+ # Guardar el audio temporalmente
32
+ output_path = "output.wav"
33
+ torchaudio.save(output_path, waveform.unsqueeze(0), sample_rate=sampling_rate) # Unsqueeze para añadir batch dimension
34
+
35
+ return translated, output_path
36
+
37
+
38
+ # Crear la interfaz
39
+ interface = gr.Interface(
40
+ fn=translate_and_speak,
41
+ inputs=gr.Textbox(label="Texto en Español"),
42
+ outputs=[
43
+ gr.Textbox(label="Texto Traducido (Inglés)"),
44
+ gr.Audio(label="Audio Generado (Inglés)")
45
+ ],
46
+ title="Traductor y Generador de Voz",
47
+ description="Escribe un texto en español y este será traducido al inglés y leído en voz alta usando IA."
48
+ )
49
+
50
+ # Lanzar la aplicación
51
+ if __name__ == "__main__":
52
+ interface.launch()