Spaces:
Running
Running
File size: 2,389 Bytes
51e2649 631c13e 0dd2770 631c13e 811ad8f e5aa50a 811ad8f 0dd2770 631c13e 0dd2770 6daaf10 0dd2770 811ad8f 2bb9c7e 631c13e 5e3bfe7 51e2649 5e3bfe7 811ad8f 5e3bfe7 631c13e 2bb9c7e 631c13e 0fc3b2e 631c13e 51e2649 811ad8f 51e2649 811ad8f 51e2649 30bf56e 631c13e 51e2649 631c13e 77a39e7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
from flask import Flask, render_template, request, jsonify, after_this_request
from io import BytesIO
import base64
import subprocess
import os
import random
import string
import re
app = Flask(__name__)
# Define the folder where files are saved
file_folder = '/home/app/'
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)
random_name = ''.join(random.choices(string.ascii_letters + string.digits, k=8)) + '.wav'
output_file = os.path.join(file_folder, random_name)
app.logger.info("Audio file created at: %s", output_file)
piper_exe = os.path.join(file_folder, 'piper') # Adjusted the path for piper
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 "The piper.exe file was not found in the correct directory."
@app.route('/')
def index():
model_folder = file_folder # Adjusted the model folder to file_folder
model_options = [file for file in os.listdir(model_folder) if file.endswith('.onnx')]
# Log the contents of the current folder
app.logger.info("Contents of current folder: %s", os.listdir(file_folder))
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)
@after_this_request
def remove_file(response):
try:
os.remove(output_file)
app.logger.info("Audio file deleted: %s", output_file)
except Exception as error:
app.logger.error("Error deleting file: %s", error)
return response
with open(output_file, 'rb') as audio_file:
audio_content = audio_file.read()
audio_base64 = base64.b64encode(audio_content).decode('utf-8')
response = jsonify({'audio_base64': audio_base64})
return response
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860, debug=False)
|