#!/bin/bash # Set the custom cache directory for Whisper models export XDG_CACHE_HOME="/backup/whisper" # Create the cache directory if it does not exist mkdir -p "$XDG_CACHE_HOME" # Function để xử lý từng file (chạy trong từng tiến trình riêng) process_file() { file="$1" dir=$(dirname "$file") filename=$(basename "$file" .mp4) vtt_file="$dir/$filename.vtt" if [ ! -f "$vtt_file" ]; then echo "🔄 Generating subtitles for: $file" whisper "$file" --model medium --output_format vtt --task transcribe --language en --output_dir "$dir" if [ -f "$dir/${filename}_en.vtt" ]; then mv "$dir/${filename}_en.vtt" "$vtt_file" echo "✅ Created: $vtt_file" else echo "⚠️ Warning: Expected $dir/${filename}_en.vtt not found." fi else echo "⏩ Subtitle already exists for: $file" fi } export -f process_file export XDG_CACHE_HOME # Tìm tất cả file .mp4 và xử lý song song với tối đa 4 tiến trình find . -type f -name "*.mp4" | xargs -n 1 -P 4 -I {} bash -c 'process_file "$@"' _ {} echo "🎉 All done!"