summaryrefslogtreecommitdiffstats
path: root/captioning.md
diff options
context:
space:
mode:
Diffstat (limited to 'captioning.md')
-rw-r--r--captioning.md235
1 files changed, 158 insertions, 77 deletions
diff --git a/captioning.md b/captioning.md
index 19f62d8d..e0078652 100644
--- a/captioning.md
+++ b/captioning.md
@@ -1,76 +1,125 @@
[[!meta title="Captioning tips"]]
-[[!meta copyright="Copyright © 2021 Sacha Chua"]]
+[[!meta copyright="Copyright © 2021, 2022 Sacha Chua"]]
Captions are great for making videos (especially technical ones!)
easier to understand and search.
-If you see a talk at <https://media.emacsconf.org/2021/protected/> (no
-longer protected now that the conference is done) that you'd like to
-caption, feel free to download it and start working on it with your
-favourite subtitle editor. Let me know what you pick by e-mailing me
-at <sacha@sachachua.com> so that I can update the index and try to
-avoid duplication of work.
-
-We've been using <https://github.com/rndusr/subed> to caption things
-as VTT or SRT in Emacs, often starting with autogenerated captions
-from YouTube (the .vtt or .srt file), but you're welcome to make
-captions using your favourite tool.
-
-We'll be posting VTT files so that they can be included by the HTML5 video
-player (demo: <https://emacsconf.org/2021/talks/news/>), so if you use a
-different tool that produces another format, any format that can be
-converted into that one (like SRT or ASS) is fine. You can e-mail me the
-subtitles when you're done, and then I can merge it into the video.
-
-# Formatting tips
-
-I generally find it easier to start with the autogenerated captions
-and then refer to any resources provided by the speaker in order to
+If you see a talk that you'd like to caption, feel free to download it
+and start working on it with your favourite subtitle editor. Let me
+know what you pick by e-mailing me at <sacha@sachachua.com> so that I
+can update the backstage index and try to avoid duplication of work. [Find talks that need captions here](https://emacsconf.org/help_with_main_captions). You can also help by [adding chapter markers to Q&A sessions](https://emacsconf.org/help_with_chapter_markers).
+
+You're welcome to work with captions using your favourite tool. We've
+been using <https://github.com/sachac/subed> to caption things as VTT
+or SRT in Emacs, often starting with autogenerated captions from
+OpenAI Whisper or WhisperX (the .vtt file backstage).
+
+We'll be posting VTT files so that they can be included by the HTML5
+video player (demo: <https://emacsconf.org/2021/talks/news/>), so if
+you use a different tool that produces another format, any format that
+can be converted into that one (like SRT or ASS) is fine. `subed` has
+a `subed-convert` command that might be useful for turning WebVTT
+files into tab-separated values (TSV) and back again, if you prefer a
+more concise format.
+
+You can e-mail me the subtitles when you're done, and then I can merge
+it into the video.
+
+You might find it easier to start with the autogenerated captions
+and then refer to the video or any resources provided by the speaker in order to
figure out spelling. Sometimes speakers provide pretty complete
-scripts, which is great, but they also tend to add extra words. I
-tried uploading the scripts to YouTube in order to get YouTube to
-automatically align the text, but then the timing information wasn't
-granular enough for easy splitting, so correcting the autogenerated
-captions myself seemed to be easier. I use some code in my
-[subed configuration](https://sachachua.com/dotemacs/#subed) (see
-`my-subed-fix-common-error` and `my-subed-common-edits`) to help with
-capitalization and commonly misrecognized words.
-
-Please keep captions to one line each so that they can be displayed
-without wrapping, as we plan to broadcast by resizing the video and
-displaying open captions below. Maybe 50 characters max? Since the
-captions are also displayed as text on the talk pages, you can omit
-filler words. We've also been trying to break captions at reasonable
-points (ex: phrases).
-
-For example, instead of:
-
-- so i'm going to talk today about a
-- fun rewrite i did of uh of the bindat
-- package
-
-I would probably edit it to be more like:
-
-- So I'm going to talk today
-- about a fun rewrite I did
-- of the bindat package.
-
-# Editing autogenerated captions
-
-If you want to take advantage of the autogenerated captions and the
-word-level timing data from YouTube, you can start with the VTT file
-for the video you want, then use `my-caption-load-word-data` from
-<https://sachachua.com/dotemacs/#word-level> to load the srv2 file
-(also attached), and then use `my-caption-split` to split using the
-word timing data if possible. You can bind this to a keystroke with
-something like `M-x local-set-key M-' my-caption-split`.
+scripts, which is great, but they also tend to add extra words.
+
+# Edit the VTT to fix misrecognized words
+
+The first step is to edit misrecognized words. VTT files are plain text, so
+you can edit them with regular `text-mode` if you want to. If you're
+editing subtitles within Emacs,
+[subed](https://github.com/sachac/subed) can conveniently synchronize
+video playback with subtitle editing, which makes it easier to figure
+out technical words. subed tries to load the video based on the
+filename, but if it can't find it, you can use `C-c C-v`
+(`subed-mpv-find-media`) to play a file or `C-c C-u` to play a URL.
+
+Look for misrecognized words and edit them. We also like to change
+things to follow Emacs keybinding conventions (C-c instead of Control C). We sometimes spell out
+acronyms on first use or add extra information in brackets. The
+captions will be used in a transcript as well, so you can add
+punctuation, remove filler words, and try to make it read better.
+
+Sometimes you may want to tweak how the captions are split. You can
+use `M-j` (`subed-jump-to-current-subtitle`) to jump to the caption if
+I'm not already on it, listen for the right spot, and maybe use
+`M-SPC` to toggle playback. Use `M-.` (`subed-split-subtitle`) to
+split a caption at the current MPV playing position and `M-m`
+(`subed-merge-with-next`) to merge a subtitle with the next one.
+
+If you don't understand a word or phrase, add two
+question marks (`[??]`) and move on. We'll ask the
+speakers to review the subtitles and can sort that
+out then.
+
+If there are multiple speakers, you can indicate switches between speakers
+with a `[speaker-name]:` tag, or just leave it plain.
+
+
+<video src="https://media.emacsconf.org/editing.webm" controls=""></video>
+
+Once you've gotten the hang of things, it might take between 1x to 4x
+the video time to edit captions.
+
+# Subtitle timing
+
+Times don't need to be very precise. If you notice
+that the times are way out of whack and it's
+getting in the way of your subtitling, we can
+adjust the times using the [aeneas forced
+alignment tool](https://www.readbeyond.it/aeneas/)
+and `subed-align`.
+
+## Splitting and merging subtitles
+
+If you want to split and merge subtitles, you can
+use `M-.` (`subed-split-subtitle`) and `M-m`
+(`subed-merge-dwim`). If the playback position is
+in the current subtitle, splitting will use the
+playback position. If it isn't, it will guess an
+appropriate time based on characters per second
+for the current subtitle.
+
+## Splitting with word-level timing data
+
+If there is a `.json` or `.srv2` file with
+word-level timing data, you can load it with
+`subed-word-data-load-from-file` from
+`subed-word-data.el` in the subed package. You can
+then split with the usual `M-.`
+(`subed-split-subtitle`), and it should use
+word-level timestamps when available.
+
+# Playing your subtitles together with the video
+
+MPV should automatically load subtitle files if
+they're in the same directory as the video. To
+load a specific subtitle file in MPV, you can use
+the `--sub-file=` or `--sub-files=` command-line
+argument.
+
+If you're using subed, the video should autoplay if it's named the
+same as your subtitle file. If not, you can use `C-c C-v`
+(`subed-mpv-play-from-file`) to load the video file. You can toggle
+looping over the current subtitle with `C-c C-l`
+(`subed-toggle-loop-over-current-subtitle`), synchronizing player to
+point with `C-c ,` (`subed-toggle-sync-player-to-point`), and
+synchronizing point to player with `C-c .`
+(`subed-toggle-sync-point-to-player`).
# Starting from a script
-Some talks don't have autogenerated captions because YouTube didn't
-produce any. Whenever the speaker has provided a script, you can use
-that as a starting point. I generally start by making a VTT file with
-one subtitle spanning the whole video, like this:
+Some talks don't have autogenerated captions, or you may prefer to
+start from scratch. Whenever the speaker has provided a script, you
+can use that as a starting point. One way is to start by making a VTT
+file with one subtitle spanning the whole video, like this:
```text
WEBVTT
@@ -79,29 +128,61 @@ WEBVTT
If the speaker provided a script, I usually put the script under this heading.
```
-I move to the point to a good stopping point for a phrase, toggle
-playing with `M-SPC`, and then `M-.` (`subed-split-subtitle`) when the
-player reaches that point. If it's too fast, I use `M-j` to repeat the
-current subtitle.
+If you're using subed, you can move to the point to a good stopping
+point for a phrase, use `M-SPC` to toggle pausing `M-.`
+(`subed-split-subtitle`) when the player reaches that point. If it's
+too fast, use `M-j` to repeat the current subtitle.
# Starting from scratch
-Sometimes there are no autogenerated captions and there's no script.
-Then I guess we just have to type it by hand.
+One option is to send us a text file with just the text transcript in it
+and not worry about the timestamps. We can figure out the timing using
+[aeneas for forced alignment](https://www.readbeyond.it/aeneas/).
-I generally start by making a VTT file with
-one subtitle spanning the whole video, like this:
+If you want to try timing as you go, you might
+find it easier to start by making a VTT file with
+one subtitle spanning the whole video (either
+using the video duration or a very large
+duration), like this:
```text
WEBVTT
-00:00:00.000 -> 00:39:07.000
+00:00:00.000 -> 24:00:00.000
+```
+
+Use `C-c C-p` (`subed-toggle-pause-while-typing`)
+to automatically pause when typing. Then start
+playback with `M-SPC` and type, using `M-.`
+(`subed-split-subtitle`) to split after a
+reasonable length for a subtitle. If it's too
+fast, use `M-j` to repeat the current subtitle or
+adjust `subed-mpv-plackback-speed`.
+
+# Chapter markers
+
+In addition to the captions, you may also want to add chapter markers.
+An easy way to do that is to add a =NOTE Chapter heading= before the
+subtitle that starts the chapter. For example:
+
+```text
+...
+00:05:13.880 --> 00:05:20.119
+So yeah, like that's currently the problem.
+
+NOTE Embeddings
+
+00:05:20.120 --> 00:05:23.399
+So I want to talk about embeddings.
+...
```
-Then I start playback and type, using `M-.` (`subed-split-subtitle`)
-to split after I've typed a reasonable length for a subtitle. If it's
-too fast, I use `M-j` to repeat the current subtitle.
+We can then extract those with
+`emacsconf-subed-make-chapter-file-based-on-comments`.
+
+For an example of how chapter markers allow people to quickly navigate
+videos, see <https://emacsconf.org/2021/talks/bindat/> .
-Please let me know if you need any help!
+Please let us know if you need any help!
Sacha <sacha@sachachua.com>