summaryrefslogtreecommitdiffstats
path: root/roles/prerec/templates
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2026-10-31 21:58:13 -0400
committerSacha Chua <sacha@sachachua.com>2026-10-31 21:58:13 -0400
commite1ca3b8fed720dbfbbc3b8a1afccd3564949296b (patch)
tree7c5e6740d61e50558d56036f37bc42fb508ad10f /roles/prerec/templates
parent1bc16bd9782a84c69ddcc680349c974a8cbc07ce (diff)
downloademacsconf-ansible-e1ca3b8fed720dbfbbc3b8a1afccd3564949296b.tar.xz
emacsconf-ansible-e1ca3b8fed720dbfbbc3b8a1afccd3564949296b.zip
tweak whisperHEADmain
Diffstat (limited to 'roles/prerec/templates')
-rw-r--r--roles/prerec/templates/Makefile21
1 files changed, 13 insertions, 8 deletions
diff --git a/roles/prerec/templates/Makefile b/roles/prerec/templates/Makefile
index b669244..6b29b97 100644
--- a/roles/prerec/templates/Makefile
+++ b/roles/prerec/templates/Makefile
@@ -15,10 +15,12 @@ define IS_AUDIO_PRESENT_SCRIPT
endef
IS_AUDIO_PRESENT = $(IS_AUDIO_PRESENT_SCRIPT)
-VIDEO_EXTS = mp4 mkv mov mpv m4v
+VIDEO_EXTS = mp4 mkv mov mpv m4v webm
ANSWER_EXTS = mp4 mkv mov mpv m4v
source_patterns = $(foreach ext,$(VIDEO_EXTS),$(1)--original.$(ext))
answer_patterns = $(foreach ext,$(ANSWER_EXTS),$(1)--answers.$(ext))
+WHISPER_COMMAND ?= whisperx
+WHISPER_DEVICE ?= cpu
PRERECS_ORIGINAL := $(wildcard emacsconf-*--original.*)
ANSWERS_ORIGINAL := $(wildcard emacsconf-*--answers.*)
@@ -68,13 +70,16 @@ emacsconf-%--reencoded.webm:
@echo "Using source: $(SOURCE)"
reencode-in-screen.sh "$(SOURCE)" "$@"
-emacsconf-%--reencoded.opus: emacsconf-%--reencoded.webm
- AUDIO_CHECK=$$( $(call IS_AUDIO_PRESENT, "$<") )
- if [ ! -z "$$AUDIO_CHECK" ]; then
- ffmpeg -y -i "$<" -c:a copy "$@"
- else
- ffmpeg -y -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -t 1 -c:a libopus "$@"
+emacsconf-%--reencoded.opus: SOURCES = $(call source_patterns, emacsconf-$*)
+emacsconf-%--reencoded.webm:
+ $(eval SOURCE := $(lastword $(sort $(wildcard $(SOURCES)))))
+ @if [ -z "$(SOURCE)" ]; then \
+ echo "No source file found for $@"; \
+ echo "Tried: $(SOURCES)"; \
+ exit 1; \
fi
+ @echo "Using source: $(SOURCE)"
+ ffmpeg -i "$(SOURCE)" "$@"
emacsconf-%--answers.opus: emacsconf-%--answers.webm
ffmpeg -y -i "$<" -c:a copy "$@"
@@ -112,7 +117,7 @@ emacsconf-%--main.opus: emacsconf-%--main.webm
fi
emacsconf-%--reencoded.vtt: emacsconf-%--reencoded.opus
- whisperx --model large-v3 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --compute_type int8 --print_progress True --max_line_width 50 --segment_resolution chunk --max_line_count 1 --language en --initial_prompt "Transcribe this talk about Emacs. It may mention Emacs keywords such as Org Mode, Org Roam, Magit, gptel, or chatgpt-shell, or tech keywords such as LLMs. Format function names and keyboard shortcut sequences according to Emacs conventions using Markdown syntax. For example: control h becomes \`C-h\`." "$<"
+ $(WHISPER_COMMAND) --device $(WHISPER_DEVICE) --model large-v3 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --compute_type int8 --print_progress True --max_line_width 50 --segment_resolution chunk --max_line_count 1 --language en --initial_prompt "Transcribe this talk about Emacs. It may mention Emacs keywords such as Org Mode, Org Roam, Magit, gptel, or chatgpt-shell, or tech keywords such as LLMs. Format function names and keyboard shortcut sequences according to Emacs conventions using Markdown syntax. For example: control h becomes \`C-h\`." "$<"
emacsconf-%--backstage--silences.csv: emacsconf-%--reencoded.opus
ffmpeg -i "$<" -af silencedetect=noise=-30dB:d=0.5 -f null - 2>&1 | awk '/silence_start/ {start=$$NF} /silence_end/ {print start "," (start + $$NF)}' > "$@"