File size: 2,220 Bytes
ddb382a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@echo off
setlocal enabledelayedexpansion

set ARG_COUNT=0
if not "%~1"=="" set /a ARG_COUNT+=1
if not "%~2"=="" set /a ARG_COUNT+=1
if not "%~3"=="" set /a ARG_COUNT+=1
if not "%~4"=="" set /a ARG_COUNT+=1

if !ARG_COUNT! LSS 2 (
    echo Usage: %~nx0 ^<video_folder_path^> ^<csv_path^> [save_path] [use-half]
    exit /b 1
)

set "VIDEO_PATH=%~1"
set "CSV_PATH=%~2"
set "SAVE_PATH=%~3"
set "USE_HALF_FLAG=%~4"

if "!SAVE_PATH!"=="" (
    set "SAVE_PATH=results\features"
)

set "DATASET_CONFIG=ThinkSound\configs\multimodal_dataset_demo.json"
set "MODEL_CONFIG=ThinkSound\configs\model_configs\thinksound.json"

if not exist results mkdir results
if not exist results\features mkdir results\features
if not exist "!SAVE_PATH!" mkdir "!SAVE_PATH!"

set "FIRST_VIDEO="
for %%f in ("!VIDEO_PATH!\*.mp4") do (
    if not defined FIRST_VIDEO set "FIRST_VIDEO=%%~ff"
)

if not defined FIRST_VIDEO (
    echo ❌ No .mp4 video file found in folder "!VIDEO_PATH!"
    exit /b 1
)

echo First video found: !FIRST_VIDEO!

for /f %%i in ('ffprobe -v error -show_entries format^=duration -of default^=noprint_wrappers^=1:nokey^=1 "!FIRST_VIDEO!"') do set "DURATION=%%i"
for /f "tokens=1 delims=." %%a in ("!DURATION!") do set "DURATION_SEC=%%a"
echo Video duration: !DURATION_SEC! seconds

echo ⏳ Extracting features...
set "CMD=python extract_latents.py --root !VIDEO_PATH! --tsv_path !CSV_PATH! --save-dir results\features --duration_sec !DURATION_SEC!"
if /i "!USE_HALF_FLAG!"=="use-half" (
    set "CMD=!CMD! --use_half"
)
echo Running: !CMD!
call !CMD!
if errorlevel 1 (
    echo ❌ Feature extraction failed.
    exit /b 3
)

echo ⏳ Running model inference...
set "CMD=python eval_batch.py --dataset-config !DATASET_CONFIG! --model-config !MODEL_CONFIG! --duration-sec !DURATION_SEC! --results-dir results\features --save-dir !SAVE_PATH!"
echo Running: !CMD!
call !CMD!
if errorlevel 1 (
    echo ❌ Inference failed.
    exit /b 4
)

for /f %%i in ('powershell -Command "Get-Date -Format MMdd"') do set "CURRENT_DATE=%%i"
set "AUDIO_PATH=!SAVE_PATH!\!CURRENT_DATE!_batch_size1"

echo ✅ Audio files saved in: !AUDIO_PATH!

endlocal
exit /b 0