diff options
| author | Sacha Chua <sacha@sachachua.com> | 2026-10-31 21:58:13 -0400 |
|---|---|---|
| committer | Sacha Chua <sacha@sachachua.com> | 2026-10-31 21:58:13 -0400 |
| commit | e1ca3b8fed720dbfbbc3b8a1afccd3564949296b (patch) | |
| tree | 7c5e6740d61e50558d56036f37bc42fb508ad10f /roles/prerec/templates/Makefile | |
| parent | 1bc16bd9782a84c69ddcc680349c974a8cbc07ce (diff) | |
| download | emacsconf-ansible-e1ca3b8fed720dbfbbc3b8a1afccd3564949296b.tar.xz emacsconf-ansible-e1ca3b8fed720dbfbbc3b8a1afccd3564949296b.zip | |
Diffstat (limited to 'roles/prerec/templates/Makefile')
| -rw-r--r-- | roles/prerec/templates/Makefile | 21 |
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)}' > "$@" |
