steps.py
Language Python1.4 KB43 lines
"""The real model-backed steps, wired to pipeline.process's callables.Imports of WhisperX and torch happen inside the steps, so the rest of thepackage (and its tests) run without them."""from __future__ import annotationsimport tempfilefrom pathlib import Pathfrom . import audiofrom .secrets import get_secretdef transcriber(opts):if opts.engine == "deepinfra":from .engines import deepinfratoken = get_secret("DEEPINFRA_TOKEN")def run(wav: Path, source: Path, o):# Upload FLAC, not the WAV: same audio, about half the bytes.with tempfile.TemporaryDirectory(prefix="tp-up-") as tmp:flac = audio.to_flac16k(wav, Path(tmp) / "audio.flac")return deepinfra.transcribe(flac, token, language=o.language)return runif opts.engine == "local":from .engines import localreturn lambda wav, source, o: local.transcribe(wav, language=o.language, model=o.model)raise ValueError(f"Unknown engine {opts.engine!r}: use local or deepinfra.")def aligner(opts):from .align import alignreturn lambda result, wav, o: align(result, wav)def diarizer(opts):if not opts.diarize:return Nonefrom .diarize import diarizetoken = get_secret("HF_TOKEN")return lambda result, wav, o: diarize(result, wav, token, o.min_speakers, o.max_speakers)