Views
No views yet
pip install faster-whisper1from faster_whisper import WhisperModel
2import datetime
3import os
4
5#Confirmed that this code works in faster-whisper 1.02 , numpy 1.23.5 , onnxruntime 1.14.1
6#This code will not work if numpy's version exceed 2.0.0 and vad_filter=True
7
8def transcribe_audio(input_file, output_file):
9 model_size = "XA9/faster-whisper-large-v2-cantonese-2"
10 model = WhisperModel(model_size, device="cpu", compute_type="default")
11 segments, info = model.transcribe(input_file, word_timestamps=True, initial_prompt = None,
12 beam_size=5, language="yue", max_new_tokens=128, condition_on_previous_text=False,
13 vad_filter=False, vad_parameters=dict(min_silence_duration_ms=500))
14
15 sub_list = []
16 srt_content = ""
17 srt_number = 0
18 for segment in segments:
19 print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
20 start_time_str = format_to_srt(segment.start)
21 end_time_str = format_to_srt(segment.end)
22 sub_text = replace_special_chars(segment.text)
23 sub_entry = f"{start_time_str} --> {end_time_str}\n{sub_text}\n\n"
24 sub_list.append(sub_entry) # Add formatted subtitles to list
25
26 for sub in sub_list: # Add subtitle's index number
27 srt_content = srt_content + str(srt_number) + "\n" + sub
28 srt_number = srt_number + 1
29
30 with open(output_file, 'w', encoding="utf-8") as srt_file:
31 srt_file.write(srt_content)
32
33 print("")
34 print("Saved: " + os.path.abspath(output_file))
35
36def replace_special_chars(text): # remove space and "! " if the first letter is space or "! "
37 # Check if the text starts with "!" or " " and ends with " "
38 if (text.startswith("! ") or text.startswith(" ")):
39 # Replace the special characters with an empty string
40 text = text.replace("!", "").replace(" ", "", 1) # Only replace the first occurrence
41 return text
42
43
44def format_to_srt(seconds): #Convert seconds to SRT's timecode
45 dt = datetime.datetime(1, 1, 1) + datetime.timedelta(seconds=seconds)
46 formatted_time = "{:02d}:{:02d}:{:02d},{:03d}".format(dt.hour, dt.minute, dt.second, dt.microsecond//1000)
47 return formatted_time
48
49
50transcribe_audio("audio.mp3", "audio.srt")
511pip install faster-whisper
2pip install stable-ts1import stable_whisper
2
3model = stable_whisper.load_faster_whisper('XA9/faster-whisper-large-v2-cantonese-2', device='cpu', compute_type='default')
4result = model.transcribe_stable('audio.mp3', language='yue', initial_prompt=None,regroup=False, vad=False, condition_on_previous_text=False)
5result.to_srt_vtt('audio.srt', word_level=False)ct2-transformers-converter --model Scrya/whisper-large-v2-cantonese --output_dir faster-whisper-large-v2-cantonese-2 --copy_files preprocessor_config.json --quantization float16