HirCoir commited on
Commit
09d0fa0
1 Parent(s): abf8910

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -32
app.py CHANGED
@@ -1,12 +1,13 @@
1
- import argparse
2
  import subprocess
3
  import os
4
- import sys
5
  import random
6
  import string
7
- import gradio as gr
8
  import tempfile
9
  import re
 
 
 
10
 
11
  def filter_text(text):
12
  # Expresión regular para permitir solo letras de la A a la Z en mayúsculas y minúsculas,
@@ -20,42 +21,38 @@ def filter_text(text):
20
  def convert_text_to_speech(parrafo, model):
21
  parrafo_filtrado = filter_text(parrafo)
22
 
23
- # Determinar el directorio base dependiendo de si se ejecuta desde el código fuente o desde el ejecutable congelado
24
- if getattr(sys, 'frozen', False):
25
- # La aplicación se está ejecutando desde un ejecutable congelado
26
- bundle_dir = getattr(sys, '_MEIPASS', os.path.abspath(os.path.dirname(sys.argv[0])))
27
- else:
28
- # La aplicación se está ejecutando desde el código fuente
29
- bundle_dir = os.path.abspath(os.path.dirname(__file__))
30
-
31
  # Generar un nombre de archivo aleatorio
32
  random_name = ''.join(random.choices(string.ascii_letters + string.digits, k=8)) + '.wav'
33
  output_file = os.path.join('.', random_name)
34
 
35
  # Construir la ruta al archivo piper
36
- piper_exe = os.path.join(bundle_dir, 'piper') # Cambia 'piper.exe' por el nombre del ejecutable en Linux
37
-
38
- # Verificar si la ruta es válida
39
- if os.path.isfile(piper_exe):
40
- # Ejecutar el comando para generar el archivo de audio
41
- comando = f'echo "{parrafo_filtrado}" | {piper_exe} -m {model} -f {output_file}' # Cambia el comando según la sintaxis de la herramienta en Linux
42
- subprocess.run(comando, shell=True, executable='/bin/bash')
43
-
44
- # Devolver la ruta al archivo de audio generado
45
- return output_file
46
- else:
47
- return "El archivo piper no se encontró en el directorio correcto."
48
-
49
- # Función para cargar y reproducir el archivo de audio en Gradio
50
- def play_audio(parrafo, model):
51
- output_file = convert_text_to_speech(parrafo, model)
52
  with open(output_file, 'rb') as audio_file:
53
  audio_content = audio_file.read()
 
 
 
 
54
  return audio_content
55
 
56
- # Crear la interfaz de Gradio
57
- input_text = gr.Textbox(label="Introduce el texto")
58
- model_options = ["es_MX-cortanav3-high.onnx"] # Agrega aquí más modelos si es necesario
59
- select_model = gr.Dropdown(model_options, label="Selecciona el modelo")
 
 
 
 
 
 
 
 
60
 
61
- gr.Interface(play_audio, inputs=[input_text, select_model], outputs=gr.Audio(), flagging_options=None).launch()
 
 
1
+ from flask import Flask, request, send_file
2
  import subprocess
3
  import os
 
4
  import random
5
  import string
 
6
  import tempfile
7
  import re
8
+ import base64
9
+
10
+ app = Flask(__name__)
11
 
12
  def filter_text(text):
13
  # Expresión regular para permitir solo letras de la A a la Z en mayúsculas y minúsculas,
 
21
  def convert_text_to_speech(parrafo, model):
22
  parrafo_filtrado = filter_text(parrafo)
23
 
 
 
 
 
 
 
 
 
24
  # Generar un nombre de archivo aleatorio
25
  random_name = ''.join(random.choices(string.ascii_letters + string.digits, k=8)) + '.wav'
26
  output_file = os.path.join('.', random_name)
27
 
28
  # Construir la ruta al archivo piper
29
+ piper_exe = 'piper' # Cambia 'piper' por el nombre del ejecutable en Linux
30
+
31
+ # Ejecutar el comando para generar el archivo de audio
32
+ comando = f'echo "{parrafo_filtrado}" | {piper_exe} -m {model} -f {output_file}' # Cambia el comando según la sintaxis de la herramienta en Linux
33
+ subprocess.run(comando, shell=True, executable='/bin/bash')
34
+
35
+ # Leer el contenido del archivo generado
 
 
 
 
 
 
 
 
 
36
  with open(output_file, 'rb') as audio_file:
37
  audio_content = audio_file.read()
38
+
39
+ # Eliminar el archivo generado
40
+ os.remove(output_file)
41
+
42
  return audio_content
43
 
44
+ @app.route('/text_to_audio', methods=['POST'])
45
+ def text_to_audio():
46
+ data = request.get_json()
47
+ parrafo = data['parrafo']
48
+ model = data['model']
49
+
50
+ audio_content = convert_text_to_speech(parrafo, model)
51
+
52
+ # Convertir el audio a base64
53
+ audio_base64 = base64.b64encode(audio_content).decode('utf-8')
54
+
55
+ return {'audio_base64': audio_base64}
56
 
57
+ if __name__ == '__main__':
58
+ app.run(debug=True)