File size: 2,882 Bytes
57ea1c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from scipy.io import wavfile
from logic import score_audio
  

CHOICES     = ['2305', '2304', '195', '1956', '2302', '2301', '2299', '2300', '2298', '2297'] # '2860', 

QUESTIONS = ['What are breakfast, lunch, and dinner examples of?', 
             'What do we call a collection of large quantity?',
             'How many days does it take for a full moon to occur?',
             'What do you use in a non-verbal communication with expressions to convey a message effectively?',
             'What do we call the behavior of not buying products from an exact company as a way of protesting?',
             'What do we call a small soft creature with a hard round shell on its back that moves very slowly?',
             'What do you call a place with lodging, food, and other services for travelers?',
             'What is the term for a large, luxurious car, often driven by a chauffeur?',
             'What is the term for a journey, especially a long one, involving travel by sea or in space?',
             'What do we call a short trip taken for pleasure, usually lasting a day?'
             ]

ANSWERS = ['Meal', 'Bulk', 'Thirty', 'Body language / sign language', 'Boycott', 'Snail', 'Hotel', 'Limousine', 
           'Voyage', 'Excursion']

PAIRED_QUESTIONS = {ch: {'Q': q, 'A': a}for ch, q, a in zip(CHOICES, QUESTIONS, ANSWERS)}

def get_paired_text(value):
    result = PAIRED_QUESTIONS.get(value, '')
    return result

def get_single_text(value):
    result = PAIRED_QUESTIONS.get(value, '')
    return result['Q']

def analyze_audio(audio, true_result):
# Write the processed audio to a temporary WAV file
    if audio is None or true_result is None:
      return 'the audio is missing'
    temp_filename = 'temp_audio.wav'
    wavfile.write(temp_filename, audio[0], audio[1])

    true_result = get_paired_text(true_result)['A']
    result = score_audio(temp_filename, true_result)
    transcription = result['transcription']
    score   = result['score']
    
    result_markdown = f"""# Test score : {score} / 1
    
    # Predicted Answer
    
    ## {transcription}
    
    # True Answer
    
    ## {true_result}
    """
    return result_markdown


with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            with gr.Row():
                drp_down = gr.Dropdown(choices=CHOICES, scale=2)
                show_text_btn = gr.Button("Select", scale=1)
            read_text = gr.Markdown(label='Answer this question')
            show_text_btn.click(get_single_text, inputs=drp_down, outputs=read_text)
            audio_area = gr.Audio(label='Answer')
            analyize_audio_btn = gr.Button("Submit", scale=1)
        with gr.Column():
            capt_area = gr.Markdown(label='CAPT Scores')
            analyize_audio_btn.click(analyze_audio, inputs=[audio_area, drp_down], outputs=capt_area)
demo.launch()