Spaces:
Runtime error
Runtime error
import cv2 | |
import easyocr | |
import numpy as np | |
from gtts import gTTS | |
import os | |
import pygame | |
import gradio as gr | |
# Initialize OCR reader and TTS system | |
reader = easyocr.Reader(['tr']) | |
pygame.mixer.init() | |
def capture_and_process(): | |
# Open webcam, capture frame, and save it | |
capture = cv2.VideoCapture(0) | |
ret, frame = capture.read() | |
capture.release() | |
if not ret: | |
return "Failed to capture image", None | |
# Save the captured image | |
filename = 'captured_image.png' | |
cv2.imwrite(filename, frame) | |
# Run OCR on the saved image | |
results = reader.readtext(filename) | |
# Prepare text-to-speech for each detected text | |
detected_text = [] | |
for result in results: | |
if result[1].strip() == "": | |
continue | |
text = result[1] | |
detected_text.append(text) | |
# Convert text to speech and play it | |
tts = gTTS(text=text.lower(), lang='tr') | |
tts.save("output.mp3") | |
pygame.mixer.music.load("output.mp3") | |
pygame.mixer.music.play() | |
# Wait until the speech is done | |
while pygame.mixer.music.get_busy(): | |
pygame.time.Clock().tick(10) | |
# Return the captured image and detected text | |
return detected_text, frame[..., ::-1] # Convert BGR to RGB for display in Gradio | |
# Gradio interface | |
interface = gr.Interface( | |
fn=capture_and_process, | |
inputs=None, | |
outputs=[gr.outputs.Textbox(label="Detected Text"), gr.outputs.Image(type="numpy", label="Captured Image")], | |
live=True | |
) | |
# Launch the app | |
if __name__ == "__main__": | |
interface.launch() | |