Spaces:
Sleeping
Sleeping
| # app.py | |
| from pyharp import * | |
| import torch | |
| import whisper | |
| import numpy as np | |
| import tempfile | |
| import soundfile as sf | |
| import gradio as gr | |
| # ----------------------------- | |
| # Load Whisper model | |
| # ----------------------------- | |
| MODEL_NAME = "base" # options: tiny, base, small, medium, large | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| print(f"Loading Whisper model ({MODEL_NAME}) on {device}...") | |
| model = whisper.load_model(MODEL_NAME, device=device) | |
| # ----------------------------- | |
| # Helper: transcribe waveform | |
| # ----------------------------- | |
| def transcribe_waveform(waveform: np.ndarray, sample_rate: int) -> str: | |
| # Convert stereo → mono | |
| if waveform.ndim == 2: | |
| waveform = np.mean(waveform, axis=0) | |
| # Whisper expects audio file OR 16k waveform | |
| # Easiest + safest: write temp WAV file | |
| with tempfile.NamedTemporaryFile(suffix=".wav") as tmp: | |
| sf.write(tmp.name, waveform, sample_rate) | |
| result = model.transcribe(tmp.name) | |
| return result["text"].strip() | |
| # ----------------------------- | |
| # PyHARP process function | |
| # ----------------------------- | |
| def process_fn(audio_path, params=None): | |
| result = model.transcribe(audio_path) | |
| return {"transcript": result["text"].strip()} | |
| # ----------------------------- | |
| # Build PyHARP endpoint | |
| # ----------------------------- | |
| import gradio as gr | |
| if __name__ == "__main__": | |
| with gr.Blocks() as demo: | |
| model_card = ModelCard( | |
| name="Whisper Speech-to-Text", | |
| description="OpenAI Whisper STT with PyHARP", | |
| author="Aydin", | |
| tags=["speech", "transcription"] | |
| ) | |
| input_components = [ | |
| gr.Audio(type="filepath", label="Input Audio") | |
| ] | |
| output_components = [ | |
| gr.Textbox(label="Transcription") | |
| ] | |
| build_endpoint( | |
| model_card, | |
| input_components, | |
| output_components, | |
| process_fn | |
| ) | |
| demo.queue() | |
| demo.launch() |