Voice picker
A React component in Beamline's Voice & audio category.
Choose a text-to-speech voice from a searchable list (name, accent, tone, use) and hear it first: each voice has its own orb, previews play one at a time and the orb speaks while its sample plays.
Use it for
- Choosing a voice for an agent, a narration or read-aloud in settings or a builder.
Not for
- Choosing people (combobox).
- A short list without previews (select).
- Choosing a microphone (mic-selector).
Anatomy
- label
- trigger (orb, name, facets)
- preview button for the chosen voice
- list: search field, rows (orb, name, facets, check), footer preview for the highlighted voice
Variants
- size: sm, md, lg
States
- empty (placeholder)
- chosen
- open
- searching (matches ranked, match emphasised)
- no match
- previewing (orb speaks, Stop)
- preview loading
- preview failed
- no preview for a voice
- disabled
Keyboard
- Trigger: Enter, Space or ↓ opens
- In the list: type to search, ↑ ↓ move, Enter chooses (focus returns to the trigger), Escape closes
- → at the end of the search previews the highlighted voice; Tab reaches the footer Preview button
- The chosen voice's Preview is a toggle button (aria-pressed)
Motion
Orbs breathe slowly and pause off screen; the previewing voice's orb swirls as it speaks. Under reduced motion they hold still.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
voices (required) | VoiceOption[] | — | { voiceId, name?, labels?, previewUrl?, description? }: a provider's voice list as is. |
value / defaultValue / onValueChange | string | — | The chosen voiceId. |
open / defaultOpen / onOpenChange | boolean | — | |
label | ReactNode | "Voice" | |
hideLabel / placeholder / size / disabled | boolean / string / "sm" | "md" | "lg" / boolean | — | |
preview | boolean | true | Offer previews (voices need a previewUrl). |
facets | string[] | ["accent", "tone", "use"] | Which labels to show, in order. |
classNames | VoicePickerClassNames | — | Classes for documented visual parts; internal refs and event handlers are retained. |
style / ref | CSSProperties / Ref | — | Visual root style; ref targets native trigger button. |
Built from
- orb
- button
- tooltip
- popover
Dependencies
lucide-react
Import
import { VoiceOrb, VoicePicker } from "@/components/voice-picker/voice-picker";
Get it
Voice picker is part of Beamline: 190 React components and screens your coding agent (Claude Code, Codex, Cursor or any MCP client) installs into your app through Beamline's MCP server, as a ready-built package or as plain React source you can change. $49 one payment (regular $200), no subscription, a year of updates, one licence for your whole team. Get Beamline · Connect your agent
More in Voice & audio
- Audio player: One audio element and its controls: play with a loading state, a scrub bar with time, skip, speed and a playlist whose rows play into the same player…
- Bar visualizer: A row of bars that says what a voice agent is doing: a sweep while connecting, the person's voice while listening, a slow breath while thinking, the…
- Conversation bar: The control bar of a voice call with an agent: one button to call and hang up, the agent's state as bars, a call timer, mute, and typing when talking is…
- Live waveform: Loudness drawn as it happens: a scrolling history of the microphone (or any live source) or its spectrum, a calm processing state while words are…
- Matrix: A dot-matrix display: animated frame sets (loading, pulse, wave, syncing), text and digits in a 5×7 font, or a VU meter of levels or a live source. One…
- Microphone selector: Choose the microphone, test it with a live level and mute it, with every permission and device state spelled out: not yet allowed, blocked (and how to…
- Orb: The agent's presence: a thin ring of light around a lens in the brand's hue that holds still at rest, sends an arc round while thinking and widens with…
- Scrub bar: A seekable timeline for audio or video: elapsed and total time, what has loaded, chapter marks, a time preview under the pointer, and the full keyboard…
- Speech input: A text field you can speak into: the mic dictates through any speech-to-text provider, the phrase being heard shows apart from the finished words, and…
- Transcript viewer: A recording and its words together: the spoken word lights up as it plays and the transcript follows it, any word or paragraph time plays from there…
- Voice button: The control that starts and stops talking: click to toggle or hold to talk (pointer, Space, Enter or a global shortcut), with a live level while…
- Waveform: The shape of a recording: one bar per slice of loudness, fitted to any width, with the played part in the accent, unmeasured slices hatched and a loading…