Spaces:
Sleeping
Sleeping
import gradio as gr | |
import speech_recognition as sr | |
from pydub import AudioSegment | |
from io import BytesIO | |
import tempfile | |
def transcribe_audio(audio_input): | |
recognizer = sr.Recognizer() | |
if isinstance(audio_input, tuple) and len(audio_input) == 2: | |
audio_data_bytes = audio_input[1] | |
else: | |
raise ValueError("Expected audio_input to be a tuple with audio data bytes.") | |
# Load audio as raw data | |
try: | |
audio_segment = AudioSegment.from_file(BytesIO(audio_data_bytes), format="mp3") | |
except Exception as e: | |
return f"Error loading audio file: {e}" | |
# Save as WAV to a temporary file | |
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as wav_file: | |
audio_segment.export(wav_file.name, format="wav") | |
wav_file_path = wav_file.name | |
# Transcribe the audio | |
try: | |
with sr.AudioFile(wav_file_path) as source: | |
audio_data = recognizer.record(source) | |
text = recognizer.recognize_google(audio_data) | |
return text | |
except sr.UnknownValueError: | |
return "Google Speech Recognition could not understand audio" | |
except sr.RequestError as e: | |
return f"Could not request results from Google Speech Recognition service; {e}" | |
# Gradio Interface | |
iface = gr.Interface( | |
fn=transcribe_audio, | |
inputs="audio", | |
outputs="text", | |
title="Voice to Text Converter", | |
description="Upload an audio file and get the transcribed text." | |
) | |
iface.launch() | |