Skip to content

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 you will find the card's narration shown as a script, with Record above the generate button.

  1. Record — a three-second countdown, then it captures. A level meter shows your input while you read.
  2. Stop when you have finished the line.
  3. Play it back. If it is not right, Re-take — nothing is saved until you say so.
  4. Save take. It appears in the take list below, and you pick it like any other.

Record again as many times as you like; each save is another candidate.

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. Watch the meter on the first take of a session and re-record if it looks weak — 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