44 lines
996 B
Bash
Executable File
44 lines
996 B
Bash
Executable File
#!/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"
|