Downloads · 30 days
455
9% of all-time downloads
MilesPurvis/english-accent-classifier
english-accent-classifier is a machine learning model from MilesPurvis. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
Fine-tuned Wav2Vec2 model for classifying English accents across 6 accent classes.
Downloads · 30 days
455
9% of all-time downloads
All-time downloads
5K
Public
Parameters
94.6M
378 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors378 MB · 100%
From the Hugging Face model README
Fine-tuned Wav2Vec2 model for classifying English accents across 6 accent classes.
This model is a fine-tuned version of dima806/english_accents_classification on the Mozilla Common Voice 23.0 dataset. It classifies English speech into one of six accent categories:
This model builds upon dima806/english_accents_classification, which was trained on ~577k samples from Mozilla Common Voice across 5 accent classes (US, England, Indian, Australia, Canada).
Fine-tuning Details:
Available samples in Common Voice 23.0:
dima806/english_accents_classification (pre-trained on ~577k samples)pip install transformers librosa torch
import torch
import librosa
from transformers import Wav2Vec2FeatureExtractor, Wav2Vec2ForSequenceClassification
# Load model
model_name = "MilesPurvis/english-accent-classifier"
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(model_name)
model = Wav2Vec2ForSequenceClassification.from_pretrained(model_name)
model.eval()
# Load audio
audio, sr = librosa.load("audio.wav", sr=16000)
# Process
inputs = feature_extractor(audio, sampling_rate=16000, return_tensors="pt", padding=True)
# Predict
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.softmax(logits, dim=-1)[0]
pred_id = torch.argmax(probs).item()
# Get accent and confidence from model config
predicted_accent = model.config.id2label[pred_id]
confidence = probs[pred_id].item()
print(f"Predicted Accent: {predicted_accent}")
print(f"Confidence: {confidence:.1%}")
For longer audio files, segment the audio for better accuracy:
import subprocess
import tempfile
import numpy as np
def segment_audio(audio_path, segment_duration=10):
"""Segment audio using ffmpeg"""
# Implementation details...
pass
# Process each segment and aggregate results
segments = segment_audio("long_audio.wav")
predictions = []
for segment in segments:
audio, sr = librosa.load(segment, sr=16000)
inputs = feature_extractor(audio, sampling_rate=16000, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.softmax(logits, dim=-1)[0]
predictions.append(probs)
# Aggregate predictions across segments
avg_probs = torch.stack(predictions).mean(dim=0)
final_pred_id = torch.argmax(avg_probs).item()
final_accent = model.config.id2label[final_pred_id]
final_confidence = avg_probs[final_pred_id].item()
print(f"Final Predicted Accent: {final_accent}")
print(f"Confidence: {final_confidence:.1%}")
The model provides reliable accent classification with:
If you use this model in your research, please cite:
@misc{accent-classifier-6class,
author = {Miles Purvis},
title = {English Accent Classifier (6 Classes)},
year = {2025},
publisher = {HuggingFace},
url = {https://huggingface.co/MilesPurvis/english-accent-classifier}
}
This model is licensed under the MIT License. Please ensure compliance with the licenses of the base model and training data.
For questions or issues, please open an issue in the model repository.