Record your own voiceover¶
ElevenLabs is good and it is not perfect. A name it mangles, an emphasis it will not hit, a line that just reads wrong — at some point the answer is to say it yourself. This is how.
The recording becomes a take like any other: it sits in the same list as the generated ones, you audition it the same way, you pick it the same way, and its length drives the card's timing exactly as a generated clip would.
In the studio¶
Open the reel, go to Scenes, and select the card. Under Audio, Record sits beside Generate VO — the two are peers, two routes to the same take list.
Record opens a recording window over the studio, because reading a line is a focused job and the words need to be big enough to read at arm's length. It shows the card's narration as a teleprompter.
- Record — a three-second countdown, then it captures. A level meter shows your input while you read.
- Stop when you have finished the line.
- Play it back. If it is not right, Re-take — nothing is saved until you say so.
- Save take. It appears in the take list behind the window, and you pick it like any other.
Record again as many times as you like; each save is another candidate. Closing the window — the ✕, a click outside it, or Esc — throws away an unsaved read.
Mic gain¶
Some microphones record far too quietly, and a tablet or a phone gives you no way to do anything about it. The Mic gain slider does: it boosts the signal on the way in, so the take is recorded louder rather than being quietly rescued afterwards (nothing is, see below).
Move it until the meter swings well across while you speak, and leave it there — it is remembered for this browser, because the same microphone is quiet every session. It also moves during a read, so a take that starts too quiet is fixed without stopping.
Push it too far and the meter turns red and says so. That is real clipping: the loud parts of the read are already lost by the time the browser hands the audio over, and no later step recovers them. Bring the gain down and take it again.
Nothing is re-encoded¶
The recording is stored exactly as your browser produced it. keryx does not convert it, normalise its loudness, or trim silence from either end — what you hear on playback is what goes into the reel.
That is a deliberate choice rather than an omission. There is no processing step to quietly change your read, and the render already adds its own lead and tail padding around every card, so trimming here would be two mechanisms arguing over the same silence.
The practical consequence: your levels are yours to get right, which is what the meter and the gain slider are for. Watch the meter on the first take of a session and set the gain there — nothing downstream will rescue a quiet read.
From the command line¶
If you recorded somewhere else — a phone, a proper microphone, an existing file — import it:
$ keryx voice add --workspace my-post --line 3 --file take-three.wav
imported 03-1.wav as VO take 1 for line 3
--select promotes it in the same step, which is what you want for a read you
have already listened to:
$ keryx voice add --workspace my-post --line 3 --file take-three.wav --select
imported 03-1.wav as VO take 1 for line 3, and selected it
The studio's Record button and voice add share one code path, so a browser
recording and an imported file are the same thing.
If Record is missing or disabled¶
"Recording needs HTTPS." Browsers only allow microphone access in a secure
context — HTTPS, or localhost. A studio you started with --host 0.0.0.0 and
are reaching from a phone or another machine is neither, and the microphone is
blocked before keryx sees it. Either record on the machine running the studio, or
serve it over HTTPS — see Studio over HTTPS.
"Microphone blocked." The browser has the permission denied for this page. Allow it in the site settings and press Record again.
Record is greyed out. The card has no narration and no on-screen text, so there is nothing to read. Write the line first.
What it does not do¶
- No editing. You cannot trim a take or re-record part of a line — record it again instead.
- No multi-track. One read per card. A single voiceover across the whole reel, mixed against the bed, is not this feature.
- No noise removal. What the microphone heard is what you get.
See also¶
keryx voice add— the CLI half.keryx voice pick— promote a take.keryx reel lock— mark a read approved so nothing regenerates over it.