44 lines
996 B
Plaintext
44 lines
996 B
Plaintext
|
|
#!/usr/bin/env bash
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
if [ $# -lt 1 ]; then
|
|||
|
|
echo "Использование: transcribe-audio <аудиофайл> [lang:auto|ru|en] [mode:txt|srt|json|all]"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
AUDIO="$1"
|
|||
|
|
LANG="${2:-auto}"
|
|||
|
|
MODE="${3:-all}"
|
|||
|
|
|
|||
|
|
if [ ! -f "$AUDIO" ]; then
|
|||
|
|
echo "Файл не найден: $AUDIO"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
WHISPER_BIN="${WHISPER_BIN:-$HOME/.local/bin/whisper}"
|
|||
|
|
MODEL="${WHISPER_MODEL:-$HOME/.cache/whisper-cpp/ggml-small.bin}"
|
|||
|
|
OUT_BASE="${AUDIO%.*}"
|
|||
|
|
|
|||
|
|
FLAGS=( -m "$MODEL" -f "$AUDIO" -l "$LANG" -pp )
|
|||
|
|
|
|||
|
|
case "$MODE" in
|
|||
|
|
txt)
|
|||
|
|
"$WHISPER_BIN" "${FLAGS[@]}" -otxt -of "$OUT_BASE"
|
|||
|
|
;;
|
|||
|
|
srt)
|
|||
|
|
"$WHISPER_BIN" "${FLAGS[@]}" -osrt -of "$OUT_BASE"
|
|||
|
|
;;
|
|||
|
|
json)
|
|||
|
|
"$WHISPER_BIN" "${FLAGS[@]}" -oj -of "$OUT_BASE"
|
|||
|
|
;;
|
|||
|
|
all)
|
|||
|
|
"$WHISPER_BIN" "${FLAGS[@]}" -otxt -osrt -oj -of "$OUT_BASE"
|
|||
|
|
;;
|
|||
|
|
*)
|
|||
|
|
echo "Неизвестный режим: $MODE"
|
|||
|
|
exit 1
|
|||
|
|
;;
|
|||
|
|
esac
|
|||
|
|
|
|||
|
|
echo "Готово. Результаты рядом с файлом: ${OUT_BASE}.txt/.srt/.json"
|