Spaces:
Runtime error
Runtime error
Download app.py from sobonphon/Tool-ASR-Generate: direct link, hf CLI and curl.
- Browser
- Download file 2.32 kB
-
https://huggingface.co/spaces/sobonphon/Tool-ASR-Generate/resolve/main/app.py
- Command line
-
hf download hf://spaces/sobonphon/Tool-ASR-Generate/app.py
-
curl -L -o app.py https://huggingface.co/spaces/sobonphon/Tool-ASR-Generate/resolve/main/app.py
2.32 kB
| import spaces | |
| import torch | |
| import gradio as gr | |
| from transformers import WhisperForConditionalGeneration, WhisperProcessor | |
| MODEL_ID = "phonsobon/Whisper-Small-Khmer-continued" | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| torch_dtype = torch.float16 if device == "cuda" else torch.float32 | |
| processor = WhisperProcessor.from_pretrained(MODEL_ID) | |
| model = WhisperForConditionalGeneration.from_pretrained( | |
| MODEL_ID, torch_dtype=torch_dtype | |
| ) | |
| model.to(device) | |
| model.eval() | |
| def transcribe(audio_path): | |
| if audio_path is None: | |
| return "Please provide an audio input." | |
| import librosa | |
| speech, sr = librosa.load(audio_path, sr=16000) | |
| inputs = processor( | |
| speech, sampling_rate=16000, return_tensors="pt" | |
| ) | |
| input_features = inputs.input_features.to(device=device, dtype=torch_dtype) | |
| forced_decoder_ids = processor.get_decoder_prompt_ids( | |
| language="khmer", task="transcribe" | |
| ) | |
| with torch.no_grad(): | |
| predicted_ids = model.generate( | |
| input_features, | |
| forced_decoder_ids=forced_decoder_ids, | |
| max_new_tokens=444, | |
| ) | |
| transcription = processor.batch_decode( | |
| predicted_ids, skip_special_tokens=True | |
| )[0] | |
| return transcription.strip() | |
| with gr.Blocks(title="ASR - Project") as demo: | |
| gr.Markdown( | |
| """ | |
| # ASR - Project | |
| Khmer speech-to-text using **phonsobon/Whisper-Small-Khmer-continued** | |
| (fine-tuned Whisper-Small for Khmer), running on ZeroGPU. | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(): | |
| audio_input = gr.Audio( | |
| sources=["microphone", "upload"], | |
| type="filepath", | |
| label="Audio Input (Khmer speech)", | |
| ) | |
| transcribe_btn = gr.Button("Transcribe", variant="primary") | |
| with gr.Column(): | |
| output_text = gr.Textbox( | |
| label="Transcription", | |
| lines=6, | |
| show_copy_button=True, | |
| ) | |
| transcribe_btn.click( | |
| fn=transcribe, | |
| inputs=audio_input, | |
| outputs=output_text, | |
| ) | |
| gr.Examples( | |
| examples=[], | |
| inputs=audio_input, | |
| label="Examples (add sample audio files here)", | |
| ) | |
| if __name__ == "__main__": | |
| demo.queue().launch() |