Automatic Speech Recognition
Transformers
Safetensors
Amharic
wav2vec2-bert
amharic
speech-recognition
ctc
leyu
Instructions to use caesar-abrham/Chaka-ASR with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use caesar-abrham/Chaka-ASR with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="caesar-abrham/Chaka-ASR")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForCTC processor = AutoProcessor.from_pretrained("caesar-abrham/Chaka-ASR") model = AutoModelForCTC.from_pretrained("caesar-abrham/Chaka-ASR", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 1,707 Bytes
0e80266 047d4ce 0e80266 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | """Transcribe a short WAV or FLAC recording with Chaka-ASR."""
import argparse
from math import gcd
import numpy as np
import soundfile as sf
import torch
from scipy.signal import resample_poly
from transformers import AutoProcessor, AutoModelForCTC
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("audio", help="Path to a WAV or FLAC recording")
parser.add_argument("--revision", default="main", help="Model commit or branch")
args = parser.parse_args()
audio, sample_rate = sf.read(args.audio, dtype="float32", always_2d=True)
audio = audio.mean(axis=1)
if audio.size == 0:
raise ValueError("Audio recording is empty")
if not np.isfinite(audio).all():
raise ValueError("Audio contains non-finite samples")
processor = AutoProcessor.from_pretrained("caesar-abrham/Chaka-ASR", revision=args.revision)
model = AutoModelForCTC.from_pretrained("caesar-abrham/Chaka-ASR", revision=args.revision)
target_rate = processor.feature_extractor.sampling_rate
if sample_rate != target_rate:
divisor = gcd(sample_rate, target_rate)
audio = resample_poly(audio, target_rate // divisor, sample_rate // divisor).astype("float32")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device).eval()
inputs = processor(audio, sampling_rate=target_rate, return_tensors="pt")
inputs = {key: value.to(device) for key, value in inputs.items()}
with torch.inference_mode():
predicted = model(**inputs).logits.argmax(dim=-1)
print(processor.batch_decode(predicted.cpu())[0])
if __name__ == "__main__":
main()
|