Spaces:
Sleeping
Sleeping
File size: 6,110 Bytes
7dbde5a 734a7ea ce63f6f d29fa84 5a4ac64 734a7ea 79353f4 334daaa b317d81 96bfe7a b317d81 da59a0f 334daaa 5a4ac64 8e57d14 5a4ac64 be00192 c510f60 be00192 8e57d14 43ce49e 6d02aca 43ce49e 8e57d14 b80e2d5 8e57d14 43ce49e a95ac22 43ce49e a95ac22 8e57d14 43ce49e a95ac22 43ce49e 5a4ac64 8e57d14 b1e229a 0e8c610 0adf640 d6d3fa1 0e8c610 0adf640 d6d3fa1 0e8c610 8e57d14 b1e229a 0e8c610 fe67771 0e8c610 fe67771 0adf640 d6d3fa1 0e8c610 8e57d14 b1e229a aab3ee4 ff91a06 b8881c6 aab3ee4 8e57d14 490ac96 169f9bf 490ac96 5a4ac64 716237b 734a7ea deb8ef3 ea0e1cd 716237b deb8ef3 716237b 734a7ea deb8ef3 ea0e1cd 716237b 8e57d14 ec77e62 716237b d29fa84 5a4ac64 d29fa84 5a4ac64 fe67771 5a4ac64 734a7ea 5a4ac64 739808f e97ae37 |
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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
import gradio as gr
import util
import tts
import asr
# Front-End
with gr.Blocks() as app:
# Title and Article
with gr.Row():
gr.Markdown(
"""
<h1 style="text-align: center; font-size: 28px; color: #4A90E2;">
Uyghur Pronunciation Checker
</h1>
<p style="text-align: center; font-size: 16px; color: #555;">
This app is designed to help users practice Uyghur pronunciation.
</p>
To learn more about Uyghur speech technology, please check out my [blog post](https://ixxan.github.io/blog/low-resource-speech-uyghur) and this other [demo](https://huggingface.co/spaces/ixxan/uyghur-speech-models).
"""
)
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. Click Buttons to Generate Text or Enter Text in Selected Script",
placeholder="Uyghur text goes here...",
)
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():
# translate_choice = gr.Dropdown(
# choices=util.translation_choices,
# label="(Optional) Select Translation Langauge and Translate",
# value="english",
# interactive=True
# )
# translate_btn = gr.Button("Translate")
# with gr.Row():
# translation_text = gr.Textbox(
# label=" Translated Uyghur Text",
# placeholder="Translated text will appear here...",
# )
# TTS
with gr.Group():
with gr.Row():
example_audio = gr.Audio(label="3. Generate Example Pronunciation")
with gr.Row():
tts_btn = gr.Button("Generate Example Pronunciation")
# ASR
with gr.Group():
with gr.Row():
user_audio = gr.Audio(
label="4. 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="Your Pronunciation Transcript (Arabic Script)",
placeholder="ASR transcription of user audio..."
)
with gr.Row():
transcript_ugLatn_box = gr.Textbox(
label="Your Pronunciation 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="Your 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..."
)
# Note Section
with gr.Row():
gr.Markdown(
"""
<p style="text-align: center; font-size: 14px; color: #888;">
Notes: There may be same lags in processing the microphone recording, please make sure to listen to your recordings before submitting with "Check My Pronunciation" button.
</p>
"""
)
# 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.queue(default_concurrency_limit = 2, max_size=20) # <-- Sets up a queue with default parameters
app.launch() |