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

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

PropTypeDefaultDescription
voices (required)VoiceOption[]—{ voiceId, name?, labels?, previewUrl?, description? }: a provider's voice list as is.
value / defaultValue / onValueChangestring—The chosen voiceId.
open / defaultOpen / onOpenChangeboolean—
labelReactNode"Voice"
hideLabel / placeholder / size / disabledboolean / string / "sm" | "md" | "lg" / boolean—
previewbooleantrueOffer previews (voices need a previewUrl).
facetsstring[]["accent", "tone", "use"]Which labels to show, in order.
classNamesVoicePickerClassNames—Classes for documented visual parts; internal refs and event handlers are retained.
style / refCSSProperties / 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…