voice-to-text / app.py
QuickLearnerAI's picture
Update app.py
c43e0ba verified
Raw History Blame Contribute Delete
1.66 kB
import speech_recognition as sr
import gradio as gr
# 🎯 Speech to Text function with chunking for large audio
def speech_to_text(audio_file):
r = sr.Recognizer()
text_result = []
with sr.AudioFile(audio_file) as source:
while True:
# প্রতি 60 সেকেন্ডে ভাগ করা হচ্ছে
audio = r.record(source, duration=60)
if not audio.get_raw_data(): # ডেটা না থাকলে লুপ শেষ
break
try:
chunk_text = r.recognize_google(audio, language="en-US")
text_result.append(chunk_text)
except sr.UnknownValueError:
text_result.append("❌ [Unrecognized audio]")
except sr.RequestError as e:
text_result.append(f"⚠️ API Error: {e}")
break
return " ".join(text_result).strip()
# Gradio wrapper
def stt_gradio(audio):
if audio is None:
return "No audio provided"
return speech_to_text(audio)
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("## 🎤 English Speech to Text (Short & Long Audio Supported)")
audio_input = gr.Audio(
label="🎙️ Record or Upload Audio",
type="filepath",
sources=["microphone", "upload"], # ✅ মাইক্রোফোন + আপলোড
format="wav",
streaming=False
)
text_output = gr.Textbox(label="📝 Transcribed Text", lines=10)
submit_btn = gr.Button("Convert")
submit_btn.click(fn=stt_gradio, inputs=audio_input, outputs=text_output)
if __name__ == "__main__":
demo.launch()