Views
No views yet
1import soundfile as sf
2import torch
3
4from transformers import Wav2Vec2CTCTokenizer, Wav2Vec2Tokenizer, Wav2Vec2Processor, \
5 Wav2Vec2ForCTC
6
7
8def get_tokenizer(model_path: str) -> Wav2Vec2CTCTokenizer:
9 return Wav2Vec2Tokenizer.from_pretrained(model_path)
10
11
12def get_processor(model_path: str) -> Wav2Vec2Processor:
13 return Wav2Vec2Processor.from_pretrained(model_path)
14
15
16def load_model(model_path: str) -> Wav2Vec2ForCTC:
17 return Wav2Vec2ForCTC.from_pretrained(model_path)
18
19
20model_id = "Alvenir/wav2vec2-base-da-ft-nst"
21
22model = load_model(model_id)
23model.eval()
24tokenizer = get_tokenizer(model_id)
25processor = get_processor(model_id)
26
27audio_file = "<path/to/audio.wav>"
28
29audio, _ = sf.read(audio_file)
30
31input_values = processor(audio, return_tensors="pt", padding="longest", sampling_rate=16_000).input_values
32with torch.no_grad():
33 logits = model(input_values).logits
34
35predicted_ids = torch.argmax(logits, dim=-1)
36transcription = processor.batch_decode(predicted_ids)
37print(transcription)
38| Dataset | WER Greedy | WER with 3-gram Language Model |
|---|---|---|
| NST test | 15,8% | 11.9% |
| alvenir-asr-da-eval | 19.0% | 12.1% |
| common_voice_80 da test | 26,3% | 19,2% |