chore: remove unused imports and dead code
This commit is contained in:
1 parent
2474a3662a
commit
a72cf4ad9c
5 files changed
+6
-77
No files matched your search
+1
-2
@@ -159,11 +159,10 @@ def main():
|
|||||||
# Auto-launch verify_sync in full mode
|
# Auto-launch verify_sync in full mode
|
||||||
verify_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), "verify_sync.py")
|
verify_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), "verify_sync.py")
|
||||||
if os.path.exists(verify_script):
|
if os.path.exists(verify_script):
|
||||||
import subprocess as _sp
|
|
||||||
verify_cmd = [sys.executable, verify_script, "--config", args.config or "config.toml",
|
verify_cmd = [sys.executable, verify_script, "--config", args.config or "config.toml",
|
||||||
"--lag", f"{args.lag:.6f}", "--mode", "full"]
|
"--lag", f"{args.lag:.6f}", "--mode", "full"]
|
||||||
print(f"Launching verify: {' '.join(verify_cmd)}")
|
print(f"Launching verify: {' '.join(verify_cmd)}")
|
||||||
_sp.Popen(verify_cmd)
|
subprocess.Popen(verify_cmd)
|
||||||
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import shutil
|
|||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import whisper
|
import whisper
|
||||||
@@ -195,41 +194,6 @@ def get_lang_name(code: str) -> str:
|
|||||||
return LANG_NAMES.get(code, code.upper())
|
return LANG_NAMES.get(code, code.upper())
|
||||||
|
|
||||||
|
|
||||||
def apply_metadata(file_path: str, stream_idx: int, lang_code_3: str,
|
|
||||||
title: str, dry_run: bool = True) -> str:
|
|
||||||
"""
|
|
||||||
Apply language metadata to a specific audio stream.
|
|
||||||
Returns the ffmpeg command (for display) or runs it.
|
|
||||||
"""
|
|
||||||
# Use 3-letter ISO 639-2/B code for MKV
|
|
||||||
meta_key = f"metadata:s:a:{stream_idx}"
|
|
||||||
|
|
||||||
cmd = [
|
|
||||||
"ffmpeg", "-y",
|
|
||||||
"-i", file_path,
|
|
||||||
"-map", "0",
|
|
||||||
"-c", "copy",
|
|
||||||
f"{meta_key}:language={lang_code_3}",
|
|
||||||
f"{meta_key}:title={title}",
|
|
||||||
]
|
|
||||||
|
|
||||||
if dry_run:
|
|
||||||
return " ".join(cmd)
|
|
||||||
|
|
||||||
# Write to temp file, then replace
|
|
||||||
base, ext = os.path.splitext(file_path)
|
|
||||||
tmp_out = f"{tmp_out_base}{ext}"
|
|
||||||
cmd.append(tmp_out)
|
|
||||||
|
|
||||||
r = subprocess.run(cmd, capture_output=True, timeout=300)
|
|
||||||
if r.returncode != 0:
|
|
||||||
print(f" ERROR: ffmpeg metadata failed: {r.stderr.decode()[-200:]}", file=sys.stderr)
|
|
||||||
return ""
|
|
||||||
|
|
||||||
# Replace original
|
|
||||||
shutil.move(tmp_out, file_path)
|
|
||||||
return file_path
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
ap = argparse.ArgumentParser(description="Detect audio languages via Whisper and set MKV metadata")
|
ap = argparse.ArgumentParser(description="Detect audio languages via Whisper and set MKV metadata")
|
||||||
|
|||||||
+3
-19
@@ -15,7 +15,6 @@ Usage:
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import math
|
|
||||||
from typing import Tuple, Literal
|
from typing import Tuple, Literal
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@@ -120,24 +119,14 @@ def correlate(
|
|||||||
# fftshift to center 0 lag
|
# fftshift to center 0 lag
|
||||||
corr_t = torch.roll(corr_t, shifts=N // 2)
|
corr_t = torch.roll(corr_t, shifts=N // 2)
|
||||||
corr = corr_t.cpu().numpy()
|
corr = corr_t.cpu().numpy()
|
||||||
# keep only valid length n centered
|
# compute lag from unshifted correlation for correct indexing
|
||||||
start = N // 2 - (len(b) - 1)
|
|
||||||
# Actually after roll, we want slice; simpler: use raw without roll and map lag later
|
|
||||||
# Recompute without roll for correct indexing, keep roll for display but fix lag calc
|
|
||||||
# For lag calc we need not shift: peak at N - lag etc. So we use shifted version + offset mapping
|
|
||||||
# To avoid confusion, return shifted corr and map lag accordingly
|
|
||||||
peak_idx = int(np.argmax(np.abs(corr)))
|
|
||||||
# lag = peak_idx - (len(b)-1) - (N//2 - (len(b)-1))? Let's instead use unshifted for lag and shifted for display
|
|
||||||
# Fallback: compute lag from unshifted
|
|
||||||
corr_raw = torch.fft.irfft(R, n=N).cpu().numpy()
|
corr_raw = torch.fft.irfft(R, n=N).cpu().numpy()
|
||||||
peak_raw = int(np.argmax(np.abs(corr_raw)))
|
peak_raw = int(np.argmax(np.abs(corr_raw)))
|
||||||
# raw layout: lag 0 at 0, positive lag (b delayed) wraps to end
|
|
||||||
if peak_raw > N // 2:
|
if peak_raw > N // 2:
|
||||||
lag = peak_raw - N
|
lag = peak_raw - N
|
||||||
else:
|
else:
|
||||||
lag = peak_raw
|
lag = peak_raw
|
||||||
peak_val = float(np.abs(corr_raw[peak_raw]))
|
peak_val = float(np.abs(corr_raw[peak_raw]))
|
||||||
# return shifted display corr + lag
|
|
||||||
return lag, peak_val, corr
|
return lag, peak_val, corr
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"torch cuda failed ({e}), falling back cpu", file=sys.stderr)
|
print(f"torch cuda failed ({e}), falling back cpu", file=sys.stderr)
|
||||||
@@ -156,10 +145,7 @@ def correlate(
|
|||||||
else:
|
else:
|
||||||
lag = peak_raw
|
lag = peak_raw
|
||||||
peak_val = float(np.abs(corr_raw[peak_raw]))
|
peak_val = float(np.abs(corr_raw[peak_raw]))
|
||||||
# shifted for display centered at 0
|
|
||||||
corr_shifted = np.fft.fftshift(corr_raw)
|
corr_shifted = np.fft.fftshift(corr_raw)
|
||||||
# but we return raw shifted centered? Provide shifted for plotting
|
|
||||||
# For consistency with torch branch we return shifted display array
|
|
||||||
return lag, peak_val, corr_shifted
|
return lag, peak_val, corr_shifted
|
||||||
|
|
||||||
|
|
||||||
@@ -170,9 +156,7 @@ def lag_to_seconds(lag_samples: int, sr: int = 48000) -> float:
|
|||||||
def apply_lag_with_silence(wav: np.ndarray, lag_samples: int) -> np.ndarray:
|
def apply_lag_with_silence(wav: np.ndarray, lag_samples: int) -> np.ndarray:
|
||||||
"""
|
"""
|
||||||
Apply lag by padding silence at start (no sound for delay).
|
Apply lag by padding silence at start (no sound for delay).
|
||||||
lag >0: b delayed vs a => pad b at start with lag silence to align to a, or trim a.
|
lag > 0: b delayed vs a. lag < 0: a delayed vs b.
|
||||||
For mux: if lag>0 (b starts later), we need to delay a by lag or提前 b.
|
|
||||||
This helper pads with zeros (silence) at start; negative lag pads the other direction.
|
|
||||||
Caller decides which file to pad.
|
Caller decides which file to pad.
|
||||||
"""
|
"""
|
||||||
if lag_samples == 0:
|
if lag_samples == 0:
|
||||||
@@ -200,7 +184,7 @@ def device_info() -> str:
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import argparse, pathlib
|
import argparse
|
||||||
ap = argparse.ArgumentParser()
|
ap = argparse.ArgumentParser()
|
||||||
ap.add_argument("a", help="wav A")
|
ap.add_argument("a", help="wav A")
|
||||||
ap.add_argument("b", help="wav B")
|
ap.add_argument("b", help="wav B")
|
||||||
|
|||||||
+1
-13
@@ -13,7 +13,7 @@ Run: make ast or .venv/bin/python sync_audio_test.py --config config.toml
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import os, sys, math, argparse, pathlib
|
import os, sys, math, argparse
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
# allow tomllib (py3.11+) with tomli fallback
|
# allow tomllib (py3.11+) with tomli fallback
|
||||||
@@ -31,12 +31,6 @@ except ImportError as e:
|
|||||||
print(e, file=sys.stderr)
|
print(e, file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
try:
|
|
||||||
import soundfile as sf
|
|
||||||
HAS_SF = True
|
|
||||||
except ImportError:
|
|
||||||
HAS_SF = False
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import sounddevice as sd
|
import sounddevice as sd
|
||||||
HAS_SD = True
|
HAS_SD = True
|
||||||
@@ -152,15 +146,9 @@ class SyncWindow(QtWidgets.QMainWindow):
|
|||||||
|
|
||||||
# xcorr display — corr is already fftshifted
|
# xcorr display — corr is already fftshifted
|
||||||
N = len(self.corr)
|
N = len(self.corr)
|
||||||
# lags in seconds for display
|
|
||||||
total = len(self.a) + len(self.b) - 1
|
|
||||||
n_pow2 = N
|
|
||||||
# shifted lags: -N//2 .. N//2-1
|
# shifted lags: -N//2 .. N//2-1
|
||||||
self.corr_lags = np.arange(N) - N//2
|
self.corr_lags = np.arange(N) - N//2
|
||||||
self.corr_lags_sec = self.corr_lags / sr
|
self.corr_lags_sec = self.corr_lags / sr
|
||||||
# find peak index in raw (unshifted) for decimation
|
|
||||||
peak_raw_idx = int(np.argmax(np.abs(self.corr))) # this is fftshifted, peak near center
|
|
||||||
# for decimation we need the index in the shifted array
|
|
||||||
|
|
||||||
central = QtWidgets.QWidget()
|
central = QtWidgets.QWidget()
|
||||||
self.setCentralWidget(central)
|
self.setCentralWidget(central)
|
||||||
|
|||||||
+1
-7
@@ -22,7 +22,7 @@ Usage:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import os, sys, math, argparse, subprocess, json, shutil, time, threading, tempfile, warnings
|
import os, sys, math, argparse, subprocess, json, shutil, threading, tempfile, warnings
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
warnings.filterwarnings("ignore", category=RuntimeWarning, module="pyqtgraph")
|
warnings.filterwarnings("ignore", category=RuntimeWarning, module="pyqtgraph")
|
||||||
@@ -54,12 +54,6 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
HAS_SD = False
|
HAS_SD = False
|
||||||
|
|
||||||
try:
|
|
||||||
import soundfile as sf
|
|
||||||
HAS_SF = True
|
|
||||||
except ImportError:
|
|
||||||
HAS_SF = False
|
|
||||||
|
|
||||||
from sync_audio import load_wav
|
from sync_audio import load_wav
|
||||||
from waveform_cache import cached_load_wav
|
from waveform_cache import cached_load_wav
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user