jonathanagustin's picture
Upload folder using huggingface_hub
c26dbd3 verified
import os
import logging
import gradio as gr
from huggingface_hub import InferenceClient
# Configure logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s | %(levelname)s | %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
logger = logging.getLogger(__name__)
# Environment variables for configuration
HF_TOKEN = os.environ.get("HF_TOKEN", "")
MODEL_ID = os.environ.get("MODEL_ID", "openai/whisper-large-v3-turbo")
logger.info(f"HF_TOKEN configured: {bool(HF_TOKEN)}")
logger.info(f"MODEL_ID: {MODEL_ID}")
client = InferenceClient(token=HF_TOKEN) if HF_TOKEN else InferenceClient()
logger.info("InferenceClient initialized")
def transcribe(audio) -> str:
"""Transcribe audio file or recording."""
logger.info(f"transcribe() called | audio={audio}")
if audio is None:
logger.warning("No audio provided")
return "🎀 Record or upload audio first!"
try:
logger.info(f"Calling automatic_speech_recognition | model={MODEL_ID}")
result = client.automatic_speech_recognition(audio, model=MODEL_ID)
logger.info(f"Transcription: {len(result.text)} chars")
return result.text
except Exception as e:
logger.error(f"API error: {e}")
return f"❌ Error: {e}"
logger.info("Building Gradio interface...")
with gr.Blocks(title="Whisper Transcriber") as demo:
gr.Markdown("# πŸŽ™οΈ Whisper Transcriber\nRecord your voice or upload an audio file to get a transcription.")
with gr.Row(equal_height=True):
with gr.Column():
mic = gr.Audio(sources=["microphone"], type="filepath", label="🎀 Record")
with gr.Column():
upload = gr.Audio(sources=["upload"], type="filepath", label="πŸ“ Upload")
output = gr.Textbox(label="Transcription", lines=4, interactive=False)
with gr.Row():
btn_mic = gr.Button("Transcribe Recording", variant="primary")
btn_upload = gr.Button("Transcribe Upload", variant="secondary")
btn_mic.click(transcribe, inputs=mic, outputs=output)
btn_upload.click(transcribe, inputs=upload, outputs=output)
demo.queue()
logger.info("Starting Gradio server...")
demo.launch()