gaur3009 commited on
Commit
0da30bd
·
verified ·
1 Parent(s): c37dce2

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -0
app.py ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import gradio as gr
3
+ import speech_recognition as sr
4
+ import pyttsx3
5
+ import time
6
+ from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
7
+ from happytransformer import HappyTextToText, TTSettings # Using HappyTransformer
8
+
9
+ def load_models():
10
+ model_name = "prithivida/grammar_error_correcter_v1"
11
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
12
+ model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
13
+ happy_tt = HappyTextToText("T5", "prithivida/grammar_error_correcter_v1") # Using T5-based model
14
+ return tokenizer, model, happy_tt
15
+
16
+ def transcribe_audio(audio):
17
+ recognizer = sr.Recognizer()
18
+ with sr.AudioFile(audio) as source:
19
+ audio_data = recognizer.record(source)
20
+ try:
21
+ text = recognizer.recognize_google(audio_data)
22
+ return text
23
+ except sr.UnknownValueError:
24
+ return "Could not understand the audio."
25
+ except sr.RequestError as e:
26
+ return f"Speech recognition error: {e}"
27
+
28
+ def correct_grammar(text, tokenizer, model, happy_tt):
29
+ inputs = tokenizer.encode("gec: " + text, return_tensors="pt", max_length=128, truncation=True)
30
+ with torch.no_grad():
31
+ outputs = model.generate(inputs, max_length=128, num_return_sequences=1)
32
+ corrected_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
33
+
34
+ args = TTSettings(num_beams=5, min_length=1)
35
+ correction = happy_tt.generate_text("gec: " + text, args=args).text # Better correction method
36
+ grammar_score = 100 - abs(len(text) - len(correction)) # Scoring based on text change ratio
37
+
38
+ return corrected_text, grammar_score, correction
39
+
40
+ def gradio_interface(text):
41
+ tokenizer, model, happy_tt = load_models()
42
+ corrected_text, grammar_score, correction = correct_grammar(text, tokenizer, model, happy_tt)
43
+ return corrected_text, grammar_score, correction
44
+
45
+ def gradio_audio_interface(audio):
46
+ text = transcribe_audio(audio)
47
+ return gradio_interface(text)
48
+
49
+ def main():
50
+ iface = gr.Interface(
51
+ fn=gradio_interface,
52
+ inputs=gr.Textbox(placeholder="Enter a sentence..."),
53
+ outputs=["text", "number", "text"],
54
+ title="AI Grammar Checker",
55
+ description="Enter text to check grammar, get suggestions, and see a score."
56
+ )
57
+
58
+ audio_iface = gr.Interface(
59
+ fn=gradio_audio_interface,
60
+ inputs=gr.Audio(source="microphone", type="filepath"),
61
+ outputs=["text", "text", "number", "text"],
62
+ title="AI Grammar Checker (Audio)",
63
+ description="Speak to check grammar, get suggestions, and see a score."
64
+ )
65
+
66
+ gr.TabbedInterface([iface, audio_iface], ["Text Input", "Speech Input"]).launch()
67
+
68
+ if __name__ == "__main__":
69
+ main()