Add main.sh
This commit is contained in:
commit
29dedcdcc1
82
main.sh
Normal file
82
main.sh
Normal file
@ -0,0 +1,82 @@
|
||||
# --- args ---
|
||||
if [[ $# -lt 1 ]]; then
|
||||
echo "Usage: $0 <file.mp3|file.mp4|URL> [--language <code>] [--model <name>]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
INPUT="$1"; shift
|
||||
LANGUAGE="en"
|
||||
MODEL="medium"
|
||||
|
||||
# Parse flags
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--language) LANGUAGE="$2"; shift 2 ;;
|
||||
--model) MODEL="$2"; shift 2 ;;
|
||||
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# --- helpers ---
|
||||
lower_ext() {
|
||||
local f="$1"
|
||||
local p="${f%%\?*}" # strip query params if any
|
||||
p="${p%%\#*}" # strip fragments
|
||||
local e="${p##*.}" # extension
|
||||
printf '%s' "${e,,}" # lowercase
|
||||
}
|
||||
|
||||
is_url() {
|
||||
[[ "$1" =~ ^https?:// ]]
|
||||
}
|
||||
|
||||
# --- temp workspace & cleanup ---
|
||||
WORKDIR="$(mktemp -d)"
|
||||
trap 'rm -rf "$WORKDIR"' EXIT
|
||||
|
||||
SOURCE_PATH="" # where the audio/video comes from (local file after download if URL)
|
||||
MP3_PATH="" # final mp3 we’ll feed to whisper
|
||||
|
||||
# --- stage input (download if URL) ---
|
||||
if is_url "$INPUT"; then
|
||||
# Decide ext from URL (we only promise mp3/mp4 support as requested)
|
||||
ext="$(lower_ext "$INPUT")"
|
||||
case "$ext" in
|
||||
mp3|mp4) : ;;
|
||||
*) # default to mp3 if no/unknown extension (keeps your original intent)
|
||||
ext="mp3"
|
||||
;;
|
||||
esac
|
||||
SOURCE_PATH="$WORKDIR/input.$ext"
|
||||
echo "Downloading: $INPUT"
|
||||
wget -q --show-progress -O "$SOURCE_PATH" "$INPUT"
|
||||
else
|
||||
# Local file
|
||||
if [[ ! -f "$INPUT" ]]; then
|
||||
echo "Error: file not found: $INPUT" >&2
|
||||
exit 1
|
||||
fi
|
||||
SOURCE_PATH="$INPUT"
|
||||
ext="$(lower_ext "$SOURCE_PATH")"
|
||||
fi
|
||||
|
||||
# --- transcode if needed ---
|
||||
case "$ext" in
|
||||
mp3)
|
||||
MP3_PATH="$SOURCE_PATH"
|
||||
;;
|
||||
mp4)
|
||||
MP3_PATH="$WORKDIR/audio.mp3"
|
||||
echo "Transcoding MP4 → MP3 with ffmpeg..."
|
||||
# -vn: drop video; -q:a 2 ~ VBR high quality (use -b:a 128k if you prefer CBR)
|
||||
ffmpeg -y -i "$SOURCE_PATH" -vn -acodec libmp3lame -q:a 2 "$MP3_PATH" >/dev/null 2>&1
|
||||
;;
|
||||
*)
|
||||
echo "Error: unsupported extension '$ext'. Only .mp3 or .mp4 are handled." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- run whisper ---
|
||||
echo "Running whisper on: $MP3_PATH"
|
||||
"$WHISPER_EXEC" "$MP3_PATH" --model "$MODEL" --device cuda --language "$LANGUAGE"
|
||||
Loading…
x
Reference in New Issue
Block a user