feat: mvp

This commit is contained in:
h
2026-02-01 16:07:59 +01:00
commit 4ef769597a
20 changed files with 3566 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
import subprocess
from rich.console import Console
from dubbing.steps.base import PipelineStep
console = Console()
class ExtractAudioStep(PipelineStep):
name = "Extract audio"
def is_cached(self) -> bool:
return self.paths.source_audio.exists()
def clean(self) -> None:
if self.paths.source_audio.exists():
self.paths.source_audio.unlink()
async def run(self) -> None:
console.print("[cyan]Extracting audio from video...[/]")
subprocess.run(
[
"ffmpeg",
"-y",
"-i",
str(self.paths.source_video),
"-vn",
"-acodec",
"libmp3lame",
"-q:a",
"2",
str(self.paths.source_audio),
],
capture_output=True,
check=True,
)
console.print("[green]✓ Audio extracted[/]")