← Back
Lab

Voice director

Direct a synthetic voice by pointing at the words. Louder here, slower there, wait a beat before the last one.

Generative speech is easy to produce and hard to perform. The interesting design problem is not the model, it is how a person tells it what they meant. This is a small experiment in that, built on the browser's own speech synthesis so it runs with no key and no backend.

Height · pitchWeight · levelWidth · paceGap · pause
Click a word, or drag across several. Space plays. Arrows, brackets and P direct the selection.

Design decisions

01

The sentence is the timeline

Speech tools normally put the text in one lane and the controls in another, so you edit a number and imagine the result. Here the direction is drawn on the words themselves: emphasis makes a word heavier and larger, a slower word sets wider, and a pause is literally a gap. The shape of the line is the shape of the delivery, so you can read a performance before you hear it.

02

Direct it, do not configure it

You never type 1.15. You point at a word and say louder, slower, wait here, the way you would direct a person in a booth. Every control is relative and every change is small enough to nudge twice, which keeps the loop at listen, adjust, listen rather than reason about a value you cannot hear yet.

03

Selection first, so there are no modes

One selection drives everything. Click a word or drag across a phrase and every control, keyboard or mouse, acts on exactly that. There is no emphasis mode to enter and leave, and nothing is hidden behind a right click, so the tool can be learned by trying it rather than by being told.

04

The numbers are visible but not the interface

The readout shows pace, pitch, level and pause for whatever is selected, because someone eventually needs to know what a take actually is. It sits below the controls and is never how you edit. Inspectable, not operable.

What it is not

Browser speech synthesis is a blunt instrument. It gives per-utterance rate, pitch and volume and nothing else, so a pause is a real gap rather than a breath, and emphasis is loudness rather than stress. A production version would drive a proper speech model and the same interface would get considerably more expressive. The interaction model is the point, not the voice.