CoolFace
Modelpublic

Or4kool/wolof_asr

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
0likes33downloads
Model Card

Wolof ASR (wav2vec2 CTC)

Fine-tuned wav2vec2 CTC model for transcribing Wolof speech to text.

Model details

  • —Architecture: wav2vec2 CTC (AutoModelForCTC)
  • —Task: Automatic speech recognition (ASR)
  • —Language: Wolof (wo)
  • —Sample rate: 16 kHz mono
  • —Output: Plain text transcription

Expected input format

FieldRequirement
Audio formatWAV, FLAC, OGG, MP3, M4A (decoded server-side)
ChannelsMono preferred (stereo is averaged to mono)
Sample rateAny (resampled to 16 kHz automatically)
DurationUp to 60 seconds per request
EncodingRaw bytes, base64, multipart upload, or HTTPS URL

Quick start

python
from transformers import AutoModelForCTC, AutoProcessor
import librosa

model_id = "Or4kool/wolof_asr"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForCTC.from_pretrained(model_id)
model.eval()

audio, sr = librosa.load("sample.wav", sr=16000, mono=True)
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")

with torch.no_grad():
    logits = model(inputs.input_values).logits

predicted_ids = torch.argmax(logits, dim=-1)
text = processor.batch_decode(predicted_ids)[0]
print(text)

Pipeline usage

python
from transformers import pipeline

asr = pipeline(
    "automatic-speech-recognition",
    model="Or4kool/wolof_asr",
)
print(asr("sample.wav")["text"])

API service (this repository)

This model powers the myagro-audio service. Example requests:

JSON (base64)

bash
curl -X POST https://your-endpoint/transcribe \
  -H "Content-Type: application/json" \
  -d '{
    "audio_base64": "<base64-audio>",
    "language": "wol",
    "return_timestamps": false
  }'

Multipart file upload

bash
curl -X POST https://your-endpoint/transcribe/upload \
  -F "file=@sample.wav" \
  -F "language=wol" \
  -F "return_timestamps=true"

Batch (RunPod-friendly)

json
{
  "input": {
    "items": [
      {"id": "clip-1", "audio_base64": "..."},
      {"id": "clip-2", "audio_base64": "..."}
    ],
    "return_timestamps": false
  }
}

Response format

json
{
  "text": "transcribed wolof text",
  "language": "wol",
  "duration_seconds": 2.5,
  "request_id": "uuid",
  "inference_ms": 120.4,
  "words": [
    {"word": "example", "start": 0.12, "end": 0.48}
  ]
}

words is optional and only included when return_timestamps=true.

Limitations

  • —Best performance on clear, close-mic speech at 16 kHz
  • —Word timestamps are approximate CTC alignments, not forced alignments
  • —Not intended for real-time streaming transcription
  • —Long-form audio should be split into chunks under 60 seconds

Training data

Citation

bibtex
@misc{or4kool-wolof-asr,
  author = {Samuel Oriaku},
  title = {Wolof ASR wav2vec2 CTC},
  year = {2026},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/Or4kool/wolof_asr}}
}

Uploading this card to Hugging Face

bash
huggingface-cli login
huggingface-cli upload Or4kool/wolof_asr huggingface_model_card/README.md README.md