Spaces:
Runtime error
Runtime error
| import difflib | |
| import gradio as gr | |
| from transformers import pipeline | |
| from tokenizers.pre_tokenizers import Whitespace | |
| from tokenizers.normalizers import BertNormalizer | |
| audio_input = gr.inputs.Audio(source='microphone', label='Read the passage', type="filepath") | |
| text_input = gr.inputs.Textbox(label='Sample passage') | |
| text_output = gr.outputs.Textbox(label='Output') | |
| highlighted_text_output = gr.outputs.HighlightedText(color_map={"+": "green", "-": "pink"}) | |
| speech_to_text = pipeline('automatic-speech-recognition') | |
| sm = difflib.SequenceMatcher(None) | |
| splitter = Whitespace() | |
| normalizer = BertNormalizer() | |
| def preprocess(s): | |
| return [i[0] for i in splitter.pre_tokenize_str(normalizer.normalize_str(s))] | |
| def diff_texts(text1, text2): | |
| d = difflib.Differ() | |
| return [ | |
| (token[2:], token[0] if token[0] != " " else None) | |
| for token in d.compare(preprocess(text1), preprocess(text2)) | |
| ] | |
| def func(audio, text): | |
| # print(audio) | |
| # print(text) | |
| results = speech_to_text(audio)['text'].lower() | |
| text = text.lower() | |
| sm.set_seqs(preprocess(results), preprocess(text)) | |
| r = f""" | |
| Original passage: | |
| {text} | |
| What we heard: | |
| {results} | |
| Ratio: | |
| {sm.ratio()} | |
| """ | |
| d = diff_texts(results, text) | |
| return r, d | |
| title = "Reading Practice Application" | |
| description = """ | |
| This application is a POC for reading practice. | |
| It compares some input text against an audio recording. | |
| The intention is to help individuals with reading challenges identify how to improve their reading. | |
| """ | |
| gr.Interface( | |
| func, | |
| inputs=[audio_input, text_input], | |
| outputs=[text_output, highlighted_text_output], | |
| title=title, | |
| description=description, | |
| examples=[["sample.wav", "the quick brown fox jumped over the lazy dog"]] | |
| ).launch(debug=True) | |