--- license: mit --- # Teochew Whisper Medium This model is a fine-tuned version of the Whisper medium model to recognize the Teochew language (潮州话), a language in the Min Nan family spoken in southern China. For a detailed documentation of how this model was trained, please refer to this video: https://www.youtube.com/watch?v=JH_78KmP4Zk ## Training Data The model was fine-tuned on approximately 35 hours of audio data derived from Teochew language movies, TV shows, and comedies. ## Evaluation Metrics On our private test set, we obtained the following Word Error Rate (WER) metrics: - Careful Speech: 0.31 - Conversational Speech: 0.68 Known Limitations: this model has been trained on short audio clips and may struggle with audio that is longer than 10 seconds. ## Example code The following script downloads the model and starts a demo using Gradio to run the model: ``` import torch import torchaudio from transformers import WhisperProcessor, WhisperForConditionalGeneration import gradio as gr DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu") WHISPER_SAMPLE_RATE = 16000 processor = WhisperProcessor.from_pretrained("openai/whisper-medium") model = WhisperForConditionalGeneration.from_pretrained( "efficient-nlp/teochew-whisper-medium" ).to(DEVICE) def preprocess_audio(audio_path: str) -> torch.Tensor: audio, sample_rate = torchaudio.load(audio_path) # Resample if necessary if sample_rate != WHISPER_SAMPLE_RATE: resampler = torchaudio.transforms.Resample( orig_freq=sample_rate, new_freq=WHISPER_SAMPLE_RATE ) audio = resampler(audio) # Convert to mono if audio.shape[0] > 1: audio = torch.mean(audio, dim=0) return audio.squeeze() def transcribe(audio_path: str) -> str: audio_input = preprocess_audio(audio_path) input_features = processor( audio_input, sampling_rate=WHISPER_SAMPLE_RATE, return_tensors="pt", language="Chinese", ).input_features.to(DEVICE) predicted_ids = model.generate(input_features) transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0] return transcription iface = gr.Interface( fn=transcribe, inputs=gr.Audio(type="filepath"), outputs="text", title="Teochew Speech Recognition", ) iface.launch() ```