import tempfile
import gradio as gr
import os
from espeak_phonemizer import Phonemizer

MAX_TXT_LEN = 325

fonemitzador = Phonemizer("ca")

request_count = 0

def phonemiser(text):
    if len(text) > MAX_TXT_LEN:
        text = text[:MAX_TXT_LEN]
        print(f"Input text was cutoff since it went over the {MAX_TXT_LEN} character limit.")
    print(text)

    # synthesize

    fonemes = fonemitzador.phonemize(text, keep_clause_breakers=True)

    global request_count
    request_count += 1
    print(f"Requests: {request_count}")
    return fonemes

description="""
Aquesta aplicació fa servir l'últim estat de l'espeak millorat per Carme Armentano del BSC
https://github.com/projecte-aina/espeak-ng

NOTA: El model de col·lectivat treballa amb grafemes pel que no fa servir espeak com a fonemitzador. Festival conté les seves pròpies normes fonètiques.
"""
article= ""

iface = gr.Interface(
    inputs=[
        gr.Textbox(
            label="Text",
            value="L'Èlia i l'Alí a l'aula.  L'oli i l'ou.  Lulú olorava la lila.",
        ),
        gr.Dropdown(label="dialect", choices="")
    ],
    outputs=[
        gr.Markdown(label="Fonemes")
    ],

    title="Comparativa de síntesi lliure en català️",
    description=description,
    article=article,
    allow_flagging="never",
    layout="vertical",
    live=False,
    examples=[
        ["Duc pà sec al sac, m'assec on sóc i el suco amb suc", "ona", "ona"],
        ["Un plat pla blanc, ple de pebre negre n’era. Un plat blanc pla, ple de pebre negre està", "ona", "ona"],
        ["Visc al bosc i busco vesc i visc del vesc que busco al bosc", "ona", "ona"],
        ["Una polla xica, pica, pellarica, camatorta i becarica va tenir sis polls xics, pics, pellarics, camacurts i becarics. Si la polla no hagués sigut xica, pica, pellarica, camatorta i becarica, els sis polls no haurien sigut xics, pics, pellarics, camacurts i becarics.", "ona", "ona"]
    ]
)
iface.launch(server_name="0.0.0.0", server_port=7860)