Views
No views yet
pip install git+https://github.com/MahmoudAshraf97/ctc-forced-aligner.git1import torch
2from ctc_forced_aligner import (
3 load_audio,
4 load_alignment_model,
5 generate_emissions,
6 preprocess_text,
7 get_alignments,
8 get_spans,
9 postprocess_results,
10)
11
12audio_path = "your/audio/path"
13text_path = "your/text/path"
14language = "iso" # ISO-639-3 Language code
15device = "cuda" if torch.cuda.is_available() else "cpu"
16batch_size = 16
17
18
19alignment_model, alignment_tokenizer = load_alignment_model(
20 device,
21 dtype=torch.float16 if device == "cuda" else torch.float32,
22)
23
24audio_waveform = load_audio(audio_path, alignment_model.dtype, alignment_model.device)
25
26
27with open(text_path, "r") as f:
28 lines = f.readlines()
29text = "".join(line for line in lines).replace("\n", " ").strip()
30
31emissions, stride = generate_emissions(
32 alignment_model, audio_waveform, batch_size=batch_size
33)
34
35tokens_starred, text_starred = preprocess_text(
36 text,
37 romanize=True,
38 language=language,
39)
40
41segments, scores, blank_token = get_alignments(
42 emissions,
43 tokens_starred,
44 alignment_tokenizer,
45)
46
47spans = get_spans(tokens_starred, segments, blank_token)
48
49word_timestamps = postprocess_results(text_starred, spans, stride, scores)