import gradio as gr import requests import json import os BASE_URL = "https://api.jigsawstack.com/v1" headers = { "x-api-key": os.getenv("JIGSAWSTACK_API_KEY") } def transcribe_audio(input_type, audio_url, file_store_key, language): """Transcribe audio using JigsawStack Speech-to-Text API""" if input_type == "Audio URL" and not audio_url: return "Error: Please provide an audio URL.", "" if input_type == "File Store Key" and not file_store_key: return "Error: Please provide a file store key.", "" try: payload = {} if input_type == "Audio URL": payload["url"] = audio_url.strip() if input_type == "File Store Key": payload["file_store_key"] = file_store_key.strip() if language: payload["language"] = language response = requests.post( f"{BASE_URL}/ai/transcribe", headers=headers, json=payload ) response.raise_for_status() result = response.json() if not result.get("success"): error_msg = f"Error: API call failed - {result.get('message', 'Unknown error')}" return error_msg, "" transcribed_text = result.get("text", "") return "Transcription completed successfully!", transcribed_text except requests.exceptions.RequestException as e: return f"Request failed: {str(e)}", "" except Exception as e: return f"An unexpected error occurred: {str(e)}", "" with gr.Blocks() as demo: gr.Markdown("""
Transcribe video and audio files with ease leveraging Whisper large V3 AI model.
Supported formats: MP3, WAV, M4A, FLAC, AAC, OGG, WEBM. Max file size: 100MB, Max duration: 4 hours.