import gradio as gr import os HF_TOKEN = os.getenv('HF_TOKEN') callback = gr.HuggingFaceDatasetSaver(HF_TOKEN, "paulbauriegel/voice-coe-demo") sentences = \ {'en':[ "In winter, the dry leaves fly around in the air.", "The good old man broke through the ice with his horse and fell into the cold water.", "He always eats the eggs without salt and pepper.", "Good to know. Now I can fix the appointment.", "We find this approach is particularly effective at learning speech to text translation.", "Ever wonder what your Representative has been up to?", "The Wenker sheets are the data basis for Georg Wenker's language atlases", "At least she gets 7000 dollars in damages" ], 'de':[ "Im Winter fliegen die trocknen Blätter durch die Luft herum.", "Der gute alte Mann ist mit dem Pferde durch´s Eis gebrochen und in das kalte Wasser gefallen.", "Er isst die Eier immer ohne Salz und Pfeffer.", "Gut zu wissen. Jetzt kann ich den Termin vereinbaren.", "Wir haben festgestellt, dass dieser Ansatz besonders effektiv beim Erlernen der Sprache-zu-Text Übersetzung ist.", "Haben Sie sich jemals gefragt, was Ihr Abgeordneter so treibt?", "Die Wenkerbogen stellen die Datengrundlage für Georg Wenkers Sprachatlanten dar", "Zumindest bekommt sie 7000 Dollar Schmerzensgeld", ]} with gr.Blocks(title='Voice CoE Data Collection') as demo: _ = gr.HTML('

CoE Voice Data Collection

') lang = gr.Dropdown( ["de", "en"], value='en', interactive=True, label="Choose your language", ) client_ip = gr.Label("", label="User-IP", visible=False) with gr.Row(): #outputs = gr.components.Textbox(label=) label_0 = gr.Label(sentences['en'][0], label="") audio_0 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): #outputs = gr.components.Textbox(label=) label_1 = gr.Label(sentences['en'][1], label="") audio_1 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): #outputs = gr.components.Textbox(label=) label_2 = gr.Label(sentences['en'][2], label="") audio_2 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): #outputs = gr.components.Textbox(label=) label_3 = gr.Label(sentences['en'][3], label="") audio_3 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): #outputs = gr.components.Textbox(label=) label_4 = gr.Label(sentences['en'][4], label="") audio_4 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): #outputs = gr.components.Textbox(label=) label_5 = gr.Label(sentences['en'][5], label="") audio_5 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): #outputs = gr.components.Textbox(label=) label_6 = gr.Label(sentences['en'][6], label="") audio_6 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): #outputs = gr.components.Textbox(label=) label_7 = gr.Label(sentences['en'][7], label="") audio_7 = gr.Audio(source="microphone", type="filepath", label="Record sample") with gr.Row(): acc = gr.Dropdown( ["yes", "no", "maybe"], label="Do you have an accent in the spoken language", ) with gr.Row(): agree = gr.Checkbox(value=False, label='I agree that my data is stored and analysed by the iHub CoE Voice Team') with gr.Row(): btn = gr.Button("Submit data") thx = gr.HTML('') # lang.change(lambda x: {label_0: sentences[x][0], label_1: sentences[x][1], label_2: sentences[x][2], label_3: sentences[x][3], label_4: sentences[x][4], label_5: sentences[x][5], label_6: sentences[x][6], label_7: sentences[x][7], }, lang, [label_0, label_1, label_2, label_3, label_4, label_5, label_6, label_7]) # This needs to be called at some point prior to the first call to callback.flag() callback.setup([client_ip, lang, audio_0, audio_1, audio_2, audio_3, audio_4, audio_5, audio_6, audio_7, acc], "flagged_data_points") # We can choose which components to flag -- in this case, we'll flag all of them def submit_data(client_ip, lang, audio_0, audio_1, audio_2, audio_3, audio_4, audio_5, audio_6, audio_7, acc, agree, request: gr.Request): if not agree: return '

No data has been submitted

' else: client_ip_d = {'ip': request.client.host} callback.flag([client_ip_d, lang, audio_0, audio_1, audio_2, audio_3, audio_4, audio_5, audio_6, audio_7, acc]) return '

Thank you for submitting you data

' btn.click(submit_data, [client_ip, lang, audio_0, audio_1, audio_2, audio_3, audio_4, audio_5, audio_6, audio_7, acc, agree], thx, preprocess=False) demo.launch()