HirCoir's picture
Update app.py
631c13e verified
raw
history blame
No virus
2.04 kB
from flask import Flask, render_template, request, jsonify
from io import BytesIO
import base64
import subprocess
import os
import random
import string
import re
app = Flask(__name__)
def filter_text(text):
filtered_text = re.sub(r'[^\w\s,.\(\):\u00C0-\u00FF]', '', text)
filtered_text = filtered_text.replace('\n', ' ')
filtered_text = filtered_text.replace('(', ',').replace(')', ',')
return filtered_text
def convert_text_to_speech(parrafo, model):
parrafo_filtrado = filter_text(parrafo)
bundle_dir = os.path.abspath(os.path.dirname(__file__))
print("Cargando carpeta Modelos desde:", os.path.join(bundle_dir, 'Models'))
random_name = ''.join(random.choices(string.ascii_letters + string.digits, k=8)) + '.wav'
output_file = os.path.join('.', random_name)
piper_exe = os.path.join(bundle_dir, './piper.exe')
print("Ejecutando piper.exe desde:", piper_exe)
if os.path.isfile(piper_exe):
comando = f'echo {parrafo_filtrado} | "{piper_exe}" -m {model} -f {output_file}'
subprocess.run(comando, shell=True)
return output_file
else:
return "El archivo piper.exe no se encontró en el directorio correcto."
@app.route('/')
def index():
model_folder = 'Models'
bundle_dir = os.path.abspath(os.path.dirname(__file__))
print("Cargando carpeta Modelos desde:", os.path.join(bundle_dir, model_folder))
model_options = [file for file in os.listdir(model_folder) if file.endswith('.onnx')]
return render_template('index.html', model_options=model_options)
@app.route('/convert', methods=['POST'])
def convert_text():
text = request.form['text']
model = request.form['model']
output_file = convert_text_to_speech(text, model)
with open(output_file, 'rb') as audio_file:
audio_content = audio_file.read()
audio_base64 = base64.b64encode(audio_content).decode('utf-8')
return jsonify({'audio_base64': audio_base64})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=7860)