Spaces:
Running
on
Zero
Running
on
Zero
# Check number of arguments | |
if [ "$#" -ne 3 ]; then | |
echo "Usage: $0 <video_path> <title> <description>" | |
exit 1 | |
fi | |
VIDEO_PATH="$1" | |
TITLE="$2" | |
DESCRIPTION="$3" | |
# Generate unique ID | |
UNIQUE_ID=$(uuidgen | cut -c 1-8) | |
# Create necessary directories | |
mkdir -p videos cot_coarse results | |
# Get video filename and extension | |
VIDEO_FILE=$(basename "$VIDEO_PATH") | |
VIDEO_EXT="${VIDEO_FILE##*.}" | |
VIDEO_ID="${VIDEO_FILE%.*}" | |
TEMP_VIDEO_PATH="videos/${VIDEO_ID}_${UNIQUE_ID}.mp4" | |
# Convert video to MP4 format if needed | |
if [ "${VIDEO_EXT,,}" != "mp4" ]; then | |
echo "β³ Converting video to MP4 format..." | |
ffmpeg -y -i "$VIDEO_PATH" -c:v libx264 -preset fast -c:a aac -strict experimental "$TEMP_VIDEO_PATH" >/dev/null 2>&1 | |
if [ $? -ne 0 ]; then | |
echo "β Video conversion failed" | |
exit 2 | |
fi | |
else | |
cp "$VIDEO_PATH" "$TEMP_VIDEO_PATH" | |
fi | |
# Calculate video duration | |
DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$TEMP_VIDEO_PATH") | |
DURATION_SEC=${DURATION%.*} | |
echo "Duration is: $DURATION_SEC" | |
# Create cot.csv file | |
CAPTION_COT=$(echo "$DESCRIPTION" | tr '"' "'") | |
CSV_PATH="cot_coarse/cot.csv" | |
echo "id,caption,caption_cot" > "$CSV_PATH" | |
echo "${VIDEO_ID}_${UNIQUE_ID},$TITLE,\"$CAPTION_COT\"" >> "$CSV_PATH" | |
# Run feature extraction | |
echo "β³ Extracting features..." | |
python extract_latents.py --duration_sec "$DURATION_SEC" 2>&1 | |
if [ $? -ne 0 ]; then | |
echo "β Feature extraction failed" | |
rm -f "$TEMP_VIDEO_PATH" | |
exit 3 | |
fi | |
# Run inference | |
echo "β³ Running model inference..." | |
bash scripts/infer.sh --duration-sec "$DURATION_SEC" 2>&1 | |
if [ $? -ne 0 ]; then | |
echo "β Inference failed" | |
rm -f "$TEMP_VIDEO_PATH" | |
exit 4 | |
fi | |
# Get generated audio file | |
CURRENT_DATE=$(date +"%m%d") | |
AUDIO_PATH="results/${CURRENT_DATE}_batch_size1/demo.wav" | |
# Check if audio file exists | |
if [ ! -f "$AUDIO_PATH" ]; then | |
echo "β Generated audio file not found" | |
rm -f "$TEMP_VIDEO_PATH" | |
exit 5 | |
fi | |
# Clean up temporary video file | |
rm -f "$TEMP_VIDEO_PATH" | |
echo "β Audio generated successfully!" | |
echo "Audio file path: $AUDIO_PATH" |