File size: 3,750 Bytes
7dbde5a
734a7ea
ce63f6f
d29fa84
5a4ac64
734a7ea
5a4ac64
 
 
 
 
be00192
 
 
 
 
 
 
 
716237b
be00192
 
716237b
 
 
 
5a4ac64
deab4af
0bb57fd
716237b
5a4ac64
 
466dd36
5a4ac64
 
 
293f2a1
5a4ac64
 
 
 
0e8c610
b1e229a
0e8c610
 
2dddc43
d6d3fa1
0e8c610
 
 
2dddc43
d6d3fa1
0e8c610
 
d6d3fa1
b1e229a
0e8c610
d6d3fa1
 
 
0e8c610
 
 
 
d6d3fa1
0e8c610
 
b1e229a
 
2dddc43
b1e229a
 
 
 
 
 
5a4ac64
 
716237b
734a7ea
deb8ef3
ea0e1cd
716237b
deb8ef3
716237b
734a7ea
deb8ef3
ea0e1cd
716237b
 
 
d29fa84
5a4ac64
 
 
 
 
d29fa84
5a4ac64
d6d3fa1
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
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):
            with gr.Row():
                script_choice = gr.Dropdown(
                    choices=["Uyghur Arabic", "Uyghur Latin"],
                    label="1. Select Input Script",
                    value="Uyghur Arabic",
                    interactive=True
                )
            with gr.Row():
                input_text = gr.Textbox(
                    label="2. Input Uyghur Text to Pronounce or Generate Text with Buttons below",
                    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")
            with gr.Row():
                example_audio = gr.Audio(label="3. Click \"Generate Example Pronunciation\"")
            with gr.Row():
                tts_btn = gr.Button("Generate Example Pronunciation")
            with gr.Row():
                user_audio = gr.Audio(
                    label="4. Record/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):
            # Group transcripts together
            with gr.Group():
                with gr.Row():
                    transcript_ugArab_box = gr.Textbox(
                        label="User Transcript (Uyghur Arabic)",
                        placeholder="ASR transcription of user audio..."
                    )
                with gr.Row():
                    transcript_ugLatn_box = gr.Textbox(
                        label="User Transcript (Uyghur Latin)",
                        placeholder="ASR transcription of user audio..."
                    )
            
            # Group machine and user pronunciation
            with gr.Group():
                with gr.Row():
                    machine_pronunciation_box = gr.Textbox(
                        label="Machine Pronunciation",
                        placeholder="IPA representation of the machine pronunciation..."
                    )
                with gr.Row():
                    user_pronunciation_box = gr.Textbox(
                        label="User Pronunciation",
                        placeholder="IPA representation of the user pronunciation..."
                    )

            with gr.Group():
                with gr.Row():
                    match_box = gr.html(
                        label="Phonetic Match",
                    )
                with gr.Row():
                    score_box = gr.Textbox(
                        label="Phonetic Score",
                    )

    # 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]
    )
    
    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, machine_pronunciation_box, user_pronunciation_box, match_box, score_box]
    )

# Main
if __name__ == "__main__":
    app.launch()