|
import gradio as gr |
|
import pandas as pd |
|
from jiwer import wer |
|
import re |
|
import os |
|
|
|
REGEX_YAML_BLOCK = re.compile(r"---[\n\r]+([\S\s]*?)[\n\r]+---[\n\r]") |
|
|
|
|
|
def parse_readme(filepath): |
|
"""Parses a repositories README and removes""" |
|
if not os.path.exists(filepath): |
|
return "No README.md found." |
|
with open(filepath, "r") as f: |
|
text = f.read() |
|
match = REGEX_YAML_BLOCK.search(text) |
|
if match: |
|
text = text[match.end() :] |
|
return text |
|
|
|
|
|
def compute(input): |
|
preds = input['prediction'].tolist() |
|
truths = input['truth'].tolist() |
|
print(truths, preds, type(truths)) |
|
err = wer(truths, preds) |
|
print(err) |
|
return err |
|
|
|
|
|
description = """ |
|
To calculate WER: |
|
|
|
* Type the `prediction` and the `truth` in the respective columns in the below calculator. |
|
* You can insert multiple predictions and truths by clicking on the `New row` button. |
|
* To calculate the WER after inserting all the texts, click on `Submit`. |
|
""" |
|
|
|
demo = gr.Interface( |
|
fn=compute, |
|
inputs=gr.components.Dataframe( |
|
headers=["prediction", "truth"], |
|
col_count=2, |
|
row_count=1, |
|
label="Input" |
|
), |
|
outputs=gr.components.Textbox(label="WER"), |
|
description=description, |
|
title="WER Calculator", |
|
article=parse_readme("README.md") |
|
) |
|
|
|
demo.launch() |
|
|