diff --git a/.aliases b/.aliases
index b21a6ce..d9badd6 100644
--- a/.aliases
+++ b/.aliases
@@ -354,36 +354,51 @@ function my_transcribe_video() {
file="$1"
output="$2"
include_small=$3
+ start_time="$4"
+ end_time="$5"
+
if [[ $file == "" ]]; then
- error "Usage: "
+ error "Usage: "
return
fi
if [[ $output == "" ]]; then
output="${1%.*}" # just use the input name without the extension.
fi
+
+ if [[ $start_time == "" ]]; then start_time="0"; fi
+ if [[ $end_time == "" ]]; then end_time="0"; fi
+
# Tiny is fast and semi-accurate, so whatever.
# Base is pretty good overall. It has good punctuation inserting and
# catches most words. Small and medium can do better word detection at
# times, but suffer from bad punctuation. Medium is particularly bad and
# not adding commas and periods.
if [[ $include_small -eq 1 ]]; then
- transcribe-video "$file" "$output" tiny base small
+ transcribe-video "$file" "$output" $start_time $end_time tiny base small
else
- transcribe-video "$file" "$output" tiny base
+ transcribe-video "$file" "$output" $start_time $end_time tiny base
fi
}
function my_transcribe_video_all_models() {
file="$1"
output="$2"
+ start_time="$3"
+ end_time="$4"
+
if [[ $file == "" ]]; then
- error "Usage: "
+ error "Usage: "
return
fi
+
if [[ $output == "" ]]; then
output="${1%.*}" # just use the input name without the extension.
fi
- transcribe-video "$file" "$output" tiny base small medium
+
+ if [[ $start_time == "" ]]; then start_time="0"; fi
+ if [[ $end_time == "" ]]; then end_time="0"; fi
+
+ transcribe-video "$file" "$output" $start_time $end_time tiny base small medium
}
diff --git a/dotfiles/bin/compress-video-with-crf b/dotfiles/bin/compress-video-with-crf
index 407b9c4..75b4914 100644
--- a/dotfiles/bin/compress-video-with-crf
+++ b/dotfiles/bin/compress-video-with-crf
@@ -26,7 +26,7 @@ fi
use_gpu=0
if [[ "$#" < 3 || "$#" > 6 ]]; then
- printf "${BOLD}${RED}Usage: $0 \n\nIf you want to encode a range of CRF values then use -1 as the crf value.${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: compress-video-with-crf \n\nIf you want to encode a range of CRF values then use -1 as the crf value.${NORMAL}\n"
exit 1
fi
diff --git a/dotfiles/bin/convert-video-avi-to-mp4 b/dotfiles/bin/convert-video-avi-to-mp4
index 6905681..d2461df 100644
--- a/dotfiles/bin/convert-video-avi-to-mp4
+++ b/dotfiles/bin/convert-video-avi-to-mp4
@@ -29,7 +29,7 @@ else
fi
if [[ $1 == "" || $2 == "" ]]; then
- printf "${BOLD}${RED}Usage: $0 ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: convert-video-avi-to-mp4 ${NORMAL}\n"
exit 1
fi
diff --git a/dotfiles/bin/convert-video-flv-to-mp4 b/dotfiles/bin/convert-video-flv-to-mp4
index b54b949..84b51e4 100644
--- a/dotfiles/bin/convert-video-flv-to-mp4
+++ b/dotfiles/bin/convert-video-flv-to-mp4
@@ -27,7 +27,7 @@ else
fi
if [[ $1 == "" || $2 == "" ]]; then
- printf "${BOLD}${RED}Usage: $0 ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: convert-video-flv-to-mp4 ${NORMAL}\n"
exit 1
fi
diff --git a/dotfiles/bin/convert-video-mkv-to-mp4 b/dotfiles/bin/convert-video-mkv-to-mp4
index 77863d4..72dccc8 100644
--- a/dotfiles/bin/convert-video-mkv-to-mp4
+++ b/dotfiles/bin/convert-video-mkv-to-mp4
@@ -27,7 +27,7 @@ else
fi
if [[ $1 == "" || $2 == "" ]]; then
- printf "${BOLD}${RED}Usage: $0 ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: convert-video-mkv-to-mp4 ${NORMAL}\n"
exit 1
fi
diff --git a/dotfiles/bin/extract-audio-from-video b/dotfiles/bin/extract-audio-from-video
index e57a0ec..dd9a1ca 100644
--- a/dotfiles/bin/extract-audio-from-video
+++ b/dotfiles/bin/extract-audio-from-video
@@ -30,9 +30,11 @@ fi
filename=$(basename -- "$1")
format="$2"
+start_time="$3"
+end_time="$4"
if [[ $1 == "" || $2 == "" ]]; then
- printf "${BOLD}${RED}Usage: extract-audio-from-video ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: extract-audio-from-video ${NORMAL}\n"
exit 1
fi
@@ -40,9 +42,23 @@ extension="${filename##*.}"
filename="${filename%.*}"
output_name="$filename.$format"
-printf "\n${YELLOW}${BOLD}Extracting audio from $filename.$extension | output: $output_name${NORMAL}\n"
+timing_args=""
+if [[ $start_time != "" ]]; then
+ timing_args="-ss $start_time "
+fi
+if [[ $end_time != "" ]]; then
+ if [[ $start_time == "0" && $end_time == "0" ]]; then
+ # We treat a start and end with 0 values as no op.
+ timing_args=""
+ elif [[ $end_time != "0" ]]; then
+ # Handle having a start time but end time is set to 0, can just ignore it and it'll use the remainder of the video.
+ timing_args+="-to $end_time"
+ fi
+fi
-ffmpeg -y -stats -loglevel level+error -i "$filename.$extension" -vn -acodec copy "$output_name"
+printf "\n${YELLOW}${BOLD}Extracting audio from $filename.$extension | output: $output_name | start: $start_time | end: $end_time${NORMAL}\n"
+
+ffmpeg -y -stats -loglevel level+error $timing_args -i "$filename.$extension" -vn -acodec copy "$output_name"
printf "\n${GREEN}${BOLD}Done extracting audio from $filename.$extension | output name '$output_name'${NORMAL}\n\n"
diff --git a/dotfiles/bin/extract-audio-from-video-and-transcode b/dotfiles/bin/extract-audio-from-video-and-transcode
index ee29f6a..a634295 100644
--- a/dotfiles/bin/extract-audio-from-video-and-transcode
+++ b/dotfiles/bin/extract-audio-from-video-and-transcode
@@ -37,7 +37,7 @@ output_base=$(basename -- "$output_name")
output_extension="${output_base##*.}"
if [[ $filename == "" || $output_extension == "" || $output_extension == $output_base ]]; then
- printf "${BOLD}${RED}Usage: extract-audio-from-video-and-transcode ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: extract-audio-from-video-and-transcode ${NORMAL}\n"
exit 1
fi
@@ -54,7 +54,13 @@ if [[ $start_time != "" ]]; then
timing_args="-ss $start_time "
fi
if [[ $end_time != "" ]]; then
- timing_args+="-to $end_time"
+ if [[ $start_time == "0" && $end_time == "0" ]]; then
+ # We treat a start and end with 0 values as no op.
+ timing_args=""
+ elif [[ $end_time != "0" ]]; then
+ # Handle having a start time but end time is set to 0, can just ignore it and it'll use the remainder of the video.
+ timing_args+="-to $end_time"
+ fi
fi
printf "\n${YELLOW}${BOLD}Extracting audio from '$filename' | output: '$output_name' | sample rate: $sample_rate | channels: $channel_count | start: $start_time | end: $end_time${NORMAL}\n"
diff --git a/dotfiles/bin/fix-audio-in-one-channel b/dotfiles/bin/fix-audio-in-one-channel
index 6912b1d..613afc1 100644
--- a/dotfiles/bin/fix-audio-in-one-channel
+++ b/dotfiles/bin/fix-audio-in-one-channel
@@ -27,7 +27,7 @@ else
fi
if [[ $1 == "" ]]; then
- printf "${BOLD}${RED}Usage: $0 ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: fix-audio-in-one-channel ${NORMAL}\n"
exit 1
fi
diff --git a/dotfiles/bin/normalize-video-volume b/dotfiles/bin/normalize-video-volume
index d5168fa..b5e00fa 100644
--- a/dotfiles/bin/normalize-video-volume
+++ b/dotfiles/bin/normalize-video-volume
@@ -31,7 +31,7 @@ else
fi
if [[ $1 == "" ]]; then
- printf "${BOLD}${RED}Usage: $0 ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: normalize-video-volume ${NORMAL}\n"
exit 1
fi
diff --git a/dotfiles/bin/remove-audio-from-video b/dotfiles/bin/remove-audio-from-video
index d20446b..d405f49 100644
--- a/dotfiles/bin/remove-audio-from-video
+++ b/dotfiles/bin/remove-audio-from-video
@@ -24,7 +24,7 @@ else
fi
if [[ $1 == "" ]]; then
- printf "${BOLD}${RED}Usage: $0 ${NORMAL}\n"
+ printf "${BOLD}${RED}Usage: remove-audio-from-video ${NORMAL}\n"
exit 1
fi
diff --git a/dotfiles/bin/transcribe-video b/dotfiles/bin/transcribe-video
index 1a8a0ed..735789a 100644
--- a/dotfiles/bin/transcribe-video
+++ b/dotfiles/bin/transcribe-video
@@ -25,11 +25,13 @@ fi
input_video="$1"
output_name_without_ext="$2"
-shift 2
+start_time="$3"
+end_time="$4"
+shift 4
models=("$@")
-if [[ $input_video == "" || $output_name_without_ext == "" || ${#models[@]} -eq 0 ]]; then
- printf "${BOLD}${RED}Usage: transcribe-video ${NORMAL}\n"
+if [[ $input_video == "" || $output_name_without_ext == "" || $start_time == "" || $end_time == "" || ${#models[@]} -eq 0 ]]; then
+ printf "${BOLD}${RED}Usage: transcribe-video ${NORMAL}\n"
exit 1
fi
@@ -45,7 +47,7 @@ fi
channel_count=1
sample_rate=16000
-extract-audio-from-video-and-transcode "$input_video" "$wav_name" $sample_rate $channel_count
+extract-audio-from-video-and-transcode "$input_video" "$wav_name" $sample_rate $channel_count $start_time $end_time
if [[ $? == 1 ]]; then exit 1; fi
for model in "$@"; do
diff --git a/dotfiles/bin/transcribe-video-base b/dotfiles/bin/transcribe-video-base
index 11e283c..0e25678 100644
--- a/dotfiles/bin/transcribe-video-base
+++ b/dotfiles/bin/transcribe-video-base
@@ -1,2 +1,37 @@
#!/usr/bin/env bash
+
+if which tput >/dev/null 2>&1; then
+ ncolors=$(tput colors)
+fi
+if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
+ RED="$(tput setaf 1)"
+ GREEN="$(tput setaf 2)"
+ YELLOW="$(tput setaf 3)"
+ BLUE="$(tput setaf 4)"
+ MAGENTA="$(tput setaf 5)"
+ CYAN="$(tput setaf 6)"
+ BOLD="$(tput bold)"
+ NORMAL="$(tput sgr0)"
+else
+ RED=""
+ GREEN=""
+ YELLOW=""
+ BLUE=""
+ MAGENTA=""
+ CYAN=""
+ BOLD=""
+ NORMAL=""
+fi
+
+if [[ $2 == "" ]]; then
+ printf "${BOLD}${RED}Usage: transcribe-video-base ${NORMAL}\n"
+ exit 1
+fi
+
+start_time="$3"
+end_time="$4"
+
+if [[ $start_time == "" ]]; then start_time="0"; fi
+if [[ $end_time == "" ]]; then end_time="0"; fi
+
transcribe-video "$1" "$2" "base"
diff --git a/dotfiles/bin/transcribe-video-medium b/dotfiles/bin/transcribe-video-medium
index c6fe616..cdc831a 100644
--- a/dotfiles/bin/transcribe-video-medium
+++ b/dotfiles/bin/transcribe-video-medium
@@ -1,2 +1,37 @@
#!/usr/bin/env bash
+
+if which tput >/dev/null 2>&1; then
+ ncolors=$(tput colors)
+fi
+if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
+ RED="$(tput setaf 1)"
+ GREEN="$(tput setaf 2)"
+ YELLOW="$(tput setaf 3)"
+ BLUE="$(tput setaf 4)"
+ MAGENTA="$(tput setaf 5)"
+ CYAN="$(tput setaf 6)"
+ BOLD="$(tput bold)"
+ NORMAL="$(tput sgr0)"
+else
+ RED=""
+ GREEN=""
+ YELLOW=""
+ BLUE=""
+ MAGENTA=""
+ CYAN=""
+ BOLD=""
+ NORMAL=""
+fi
+
+if [[ $2 == "" ]]; then
+ printf "${BOLD}${RED}Usage: transcribe-video-medium ${NORMAL}\n"
+ exit 1
+fi
+
+start_time="$3"
+end_time="$4"
+
+if [[ $start_time == "" ]]; then start_time="0"; fi
+if [[ $end_time == "" ]]; then end_time="0"; fi
+
transcribe-video "$1" "$2" "medium"
diff --git a/dotfiles/bin/transcribe-video-small b/dotfiles/bin/transcribe-video-small
index 4f434a8..75dee38 100644
--- a/dotfiles/bin/transcribe-video-small
+++ b/dotfiles/bin/transcribe-video-small
@@ -1,2 +1,37 @@
#!/usr/bin/env bash
+
+if which tput >/dev/null 2>&1; then
+ ncolors=$(tput colors)
+fi
+if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
+ RED="$(tput setaf 1)"
+ GREEN="$(tput setaf 2)"
+ YELLOW="$(tput setaf 3)"
+ BLUE="$(tput setaf 4)"
+ MAGENTA="$(tput setaf 5)"
+ CYAN="$(tput setaf 6)"
+ BOLD="$(tput bold)"
+ NORMAL="$(tput sgr0)"
+else
+ RED=""
+ GREEN=""
+ YELLOW=""
+ BLUE=""
+ MAGENTA=""
+ CYAN=""
+ BOLD=""
+ NORMAL=""
+fi
+
+if [[ $2 == "" ]]; then
+ printf "${BOLD}${RED}Usage: transcribe-video-small ${NORMAL}\n"
+ exit 1
+fi
+
+start_time="$3"
+end_time="$4"
+
+if [[ $start_time == "" ]]; then start_time="0"; fi
+if [[ $end_time == "" ]]; then end_time="0"; fi
+
transcribe-video "$1" "$2" "small"
diff --git a/dotfiles/bin/transcribe-video-tiny b/dotfiles/bin/transcribe-video-tiny
index 8a1a1ac..796715a 100644
--- a/dotfiles/bin/transcribe-video-tiny
+++ b/dotfiles/bin/transcribe-video-tiny
@@ -1,2 +1,37 @@
#!/usr/bin/env bash
-transcribe-video "$1" "$2" "tiny"
+
+if which tput >/dev/null 2>&1; then
+ ncolors=$(tput colors)
+fi
+if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
+ RED="$(tput setaf 1)"
+ GREEN="$(tput setaf 2)"
+ YELLOW="$(tput setaf 3)"
+ BLUE="$(tput setaf 4)"
+ MAGENTA="$(tput setaf 5)"
+ CYAN="$(tput setaf 6)"
+ BOLD="$(tput bold)"
+ NORMAL="$(tput sgr0)"
+else
+ RED=""
+ GREEN=""
+ YELLOW=""
+ BLUE=""
+ MAGENTA=""
+ CYAN=""
+ BOLD=""
+ NORMAL=""
+fi
+
+if [[ $2 == "" ]]; then
+ printf "${BOLD}${RED}Usage: transcribe-video-tiny ${NORMAL}\n"
+ exit 1
+fi
+
+start_time="$3"
+end_time="$4"
+
+if [[ $start_time == "" ]]; then start_time="0"; fi
+if [[ $end_time == "" ]]; then end_time="0"; fi
+
+transcribe-video "$1" "$2" $start_time $end_time "tiny"