File size: 5,103 Bytes
7dbde5a 734a7ea ce63f6f d29fa84 5a4ac64 734a7ea 5a4ac64 8e57d14 5a4ac64 be00192 c510f60 be00192 8e57d14 43ce49e c510f60 43ce49e 8e57d14 43ce49e 8e57d14 43ce49e fe67771 8e57d14 43ce49e 8e57d14 43ce49e 5a4ac64 8e57d14 b1e229a 0e8c610 8e57d14 d6d3fa1 0e8c610 8e57d14 d6d3fa1 0e8c610 8e57d14 b1e229a 0e8c610 fe67771 0e8c610 fe67771 6a8d513 d6d3fa1 0e8c610 8e57d14 b1e229a aab3ee4 ff91a06 b8881c6 aab3ee4 8e57d14 5a4ac64 716237b 734a7ea deb8ef3 ea0e1cd 716237b deb8ef3 716237b 734a7ea deb8ef3 ea0e1cd 716237b 8e57d14 716237b d29fa84 5a4ac64 d29fa84 5a4ac64 fe67771 5a4ac64 734a7ea 5a4ac64 |
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
import gradio as gr
import util
import tts
import asr
# Front-End
with gr.Blocks() as app:
with gr.Row():
# Input Column
with gr.Column(scale=1):
# Script
with gr.Row():
script_choice = gr.Dropdown(
choices=["Uyghur Arabic", "Uyghur Latin"],
label="1. Select Uyghur Script",
value="Uyghur Arabic",
interactive=True
)
# Text
with gr.Group():
with gr.Row():
input_text = gr.Textbox(
label="2. Enter Uyghur Text in Chosen Script (or Click a Button Below to Generate Text)",
placeholder="Enter Uyghur text here...",
)
# Add buttons for generating short and long texts
with gr.Row():
generate_short_btn = gr.Button("Generate Short Text")
generate_long_btn = gr.Button("Generate Long Text")
# Translations
with gr.Group():
with gr.Row():
translation_text = gr.Textbox(
label="(Optional) Translate Uyghur Text",
placeholder="Translated text here...",
)
# Add buttons for generating short and long texts
with gr.Row():
with gr.Column():
translate_choice = gr.Dropdown(
choices=util.translation_choices,
label="Select Translation Langauge",
value="english",
interactive=True
)
translate_btn = gr.Button("Translate")
# TTS
with gr.Group():
with gr.Row():
example_audio = gr.Audio(label="(Optional) Generate AI Pronunciation for Text")
with gr.Row():
tts_btn = gr.Button("Generate AI Pronunciation")
# ASR
with gr.Group():
with gr.Row():
user_audio = gr.Audio(
label="3. Record or Upload Your Pronunciation",
sources=["microphone", "upload"],
type="filepath",
)
with gr.Row():
check_btn = gr.Button("Check My Pronunciation")
# Output Column
with gr.Column(scale=1):
# ASR Transcripts
with gr.Group():
with gr.Row():
transcript_ugArab_box = gr.Textbox(
label="User Transcript (Arabic Script)",
placeholder="ASR transcription of user audio..."
)
with gr.Row():
transcript_ugLatn_box = gr.Textbox(
label="User Transcript (Latin Script)",
placeholder="ASR transcription of user audio..."
)
# IPA
with gr.Group():
with gr.Row():
correct_phoneme_box = gr.Textbox(
label="Correct Phonemes",
placeholder="IPA representation of the Correct pronunciation..."
)
with gr.Row():
user_phoneme_box = gr.Textbox(
label="User Phonemes",
placeholder="IPA representation of the user pronunciation..."
)
# Feedback
with gr.Group():
with gr.Row():
match_box = gr.Markdown(
"""<h4>Pronunciation Feedback</h4>\n
Matching and mismatched characters will be visualized here...
"""
)
with gr.Row():
score_box = gr.Textbox(
label="Phonetic Score",
placeholder="Your pronunciation score as a percentage..."
)
# Bind functions to buttons
generate_short_btn.click(
util.generate_short_text,
inputs=[script_choice],
outputs=[input_text]
)
generate_long_btn.click(
util.generate_long_text,
inputs=[script_choice],
outputs=[input_text]
)
translate_btn.click(
util.translate_text,
inputs=[input_text, script_choice, translate_choice],
outputs=[translation_text]
)
tts_btn.click(
tts.generate_audio,
inputs=[input_text, script_choice],
outputs=[example_audio]
)
check_btn.click(
asr.check_pronunciation,
inputs=[input_text, script_choice, user_audio],
outputs=[transcript_ugArab_box, transcript_ugLatn_box, correct_phoneme_box, user_phoneme_box, match_box, score_box]
)
# Main
if __name__ == "__main__":
app.launch() |