from flask import Flask, request, send_file
from flask.views import MethodView
from hparams import hparams, hparams_debug_string
import argparse
import os
from util import audio
from synthesizer import Synthesizer
from flask_cors import CORS
import io
import numpy as np
import math
from synthesize_helper import synthesize_helper, replace_acronym, custom_splitter
app = Flask(__name__)
CORS(app)
use_synthesize_helper = False
html_body = '''
Demo
'''
synthesizer = Synthesizer()
class Mimic2(MethodView):
def get(self):
text = request.args.get('text')
text = " ".join(replace_acronym(custom_splitter(text)))
if text:
if use_synthesize_helper:
wav = synthesize_helper(text, synthesizer)
# wav, _ = synthesizer.synthesize(text)
audio = io.BytesIO(wav)
return send_file(audio, mimetype="audio/wav")
else:
wav, _ = synthesizer.synthesize(text)
return send_file(wav, mimetype="audio/wav")
class UI(MethodView):
def get(self):
return html_body
ui_view = UI.as_view('ui_view')
app.add_url_rule('/', view_func=ui_view, methods=['GET'])
mimic2_api = Mimic2.as_view('mimic2_api')
app.add_url_rule('/synthesize', view_func=mimic2_api, methods=['GET'])
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--checkpoint', required=True,
help='Full path to model checkpoint')
parser.add_argument('--port', type=int, default=3000)
parser.add_argument('--hparams', default='',
help='Hyperparameter overrides as a comma-separated list of name=value pairs')
parser.add_argument(
'--gpu_assignment', default='0',
help='Set the gpu the model should run on')
parser.add_argument(
'--synthezier_helper', default=False, action="store_false",
help='uses the synthesize helper during sythesis'
)
args = parser.parse_args()
use_synthesize_helper = args.synthezier_helper
os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu_assignment
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
hparams.parse(args.hparams)
print(hparams_debug_string())
synthesizer.load(args.checkpoint)
app.run(host='0.0.0.0', port=args.port)