feat: ASRX hybrid pipeline, identity history, worker fixes, checkpoint system
This commit is contained in:
35
scripts/asrx_self/whisper_local.py
Normal file
35
scripts/asrx_self/whisper_local.py
Normal file
@@ -0,0 +1,35 @@
|
||||
"""
|
||||
Whisper Local - uses faster-whisper for per-segment transcription
|
||||
"""
|
||||
|
||||
import numpy as np
|
||||
|
||||
|
||||
def load_model(size="small"):
|
||||
from faster_whisper import WhisperModel
|
||||
return WhisperModel(size, device="cpu", compute_type="int8")
|
||||
|
||||
|
||||
def transcribe_segment(wav, sample_rate, start_sec, end_sec, model):
|
||||
start_sample = int(start_sec * sample_rate)
|
||||
end_sample = int(end_sec * sample_rate)
|
||||
if start_sample >= len(wav):
|
||||
return {"text": "", "language": "", "lang_prob": 0.0, "segments": []}
|
||||
segment_wav = wav[start_sample:min(end_sample, len(wav))]
|
||||
|
||||
segments_generator, info = model.transcribe(segment_wav, language=None)
|
||||
|
||||
text = ""
|
||||
lang_prob = info.language_probability if info else 0.0
|
||||
language = info.language if info else ""
|
||||
|
||||
segs = list(segments_generator)
|
||||
for seg in segs:
|
||||
text += seg.text + " "
|
||||
|
||||
return {
|
||||
"text": text.strip(),
|
||||
"language": language,
|
||||
"lang_prob": lang_prob,
|
||||
"segments": segs,
|
||||
}
|
||||
Reference in New Issue
Block a user