Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import torchaudio | |
| from transformers import AutoModelForSpeechSeq2Seq, PreTrainedTokenizerFast | |
| # Load model and tokenizer globally with pinned revision | |
| model = AutoModelForSpeechSeq2Seq.from_pretrained( | |
| 'usefulsensors/moonshine-tiny', | |
| revision="main", | |
| trust_remote_code=True | |
| ) | |
| tokenizer = PreTrainedTokenizerFast.from_pretrained( | |
| 'usefulsensors/moonshine-tiny', | |
| revision="main" | |
| ) | |
| def transcribe_audio(audio_path): | |
| if audio_path is None: | |
| return "Please provide an audio input." | |
| try: | |
| # Load and resample audio | |
| audio, sr = torchaudio.load(audio_path) | |
| if sr != 16000: | |
| audio = torchaudio.functional.resample(audio, sr, 16000) | |
| # Get transcription | |
| tokens = model(audio) | |
| transcription = tokenizer.decode(tokens[0], skip_special_tokens=True) | |
| return transcription | |
| except Exception as e: | |
| return f"Error processing audio: {str(e)}" | |
| # Create Gradio interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## Audio Transcription App") | |
| with gr.Tabs(): | |
| with gr.TabItem("Upload Audio"): | |
| audio_file = gr.Audio( | |
| sources=["upload"], | |
| type="filepath", | |
| label="Upload Audio File" | |
| ) | |
| output_text1 = gr.Textbox( | |
| label="Transcription", | |
| placeholder="Transcription will appear here..." | |
| ) | |
| upload_button = gr.Button("Transcribe Uploaded Audio") | |
| upload_button.click( | |
| fn=transcribe_audio, | |
| inputs=audio_file, | |
| outputs=output_text1 | |
| ) | |
| with gr.TabItem("Record Audio"): | |
| audio_mic = gr.Audio( | |
| sources=["microphone"], | |
| type="filepath", | |
| label="Record Audio" | |
| ) | |
| output_text2 = gr.Textbox( | |
| label="Transcription", | |
| placeholder="Transcription will appear here..." | |
| ) | |
| record_button = gr.Button("Transcribe Recorded Audio") | |
| record_button.click( | |
| fn=transcribe_audio, | |
| inputs=audio_mic, | |
| outputs=output_text2 | |
| ) | |
| gr.Markdown(""" | |
| ### Instructions: | |
| 1. Choose either 'Upload Audio' or 'Record Audio' tab | |
| 2. Upload an audio file or record using your microphone | |
| 3. Click the respective 'Transcribe' button | |
| 4. Wait for the transcription to appear | |
| """) | |
| if __name__ == "__main__": | |
| demo.launch() |