All products

VOICE KEYBOARD / SELF-HOSTED DICTATION

Speak here. Type where you work.

Dictate from the browser, transcribe with Whisper on your own server, and send text to the selected desktop or Bluetooth keyboard client.

Public source. Self-host on your infrastructure.

Voice Keyboard application overview
Voice Keyboard · Application overview
Built around your workflow
Cross-device dictationSelf-hosted speech workflowsOptional Bluetooth keyboard setups

Inside Voice Keyboard

Your voice becomes input.

01

Browser dictation to the focused window

Speak into the browser and have the selected client type into the application you're using.

02

Self-hosted Whisper transcription

Run Whisper on your own GPU, with a slower CPU option when a compatible GPU is unavailable.

03

Native desktop clients

Use a small background client on Windows, macOS, or Linux, then choose the machine that should receive your text.

04

Optional ESP32 Bluetooth keyboard

Pair an ESP32 or ESP32-C3 as a Bluetooth keyboard when you want a receiver without installing a desktop client on the target device.

05

Languages, translation and Hinglish

Choose a transcription language, use the English-translation mode, or write Hindi speech in Latin letters with Hinglish.

06

Address resilience and device selection

Keep local and remote addresses configured for the same server, and let supported clients reconnect to an available route.

Inside the pipeline

Continuous audio. Deliberate text delivery.

Voice Keyboard / system flow01 → 06
  1. 01

    Capture

    Browser microphone + AudioWorklet

  2. 02

    Transport

    16 kHz mono signed PCM over WebSocket

  3. 03

    Segment

    Silero VAD selects utterance boundaries

  4. 04

    Recognize

    Queued WAV requests to shared Whisper model

  5. 05

    Join

    Context, spaces and seam punctuation

  6. 06

    Deliver

    Selected native or Bluetooth receiver

Conceptual system flow showing the implemented stages and their handoffs.

01 / MECHANISM

Small audio frames, meaningful speech boundaries

An AudioWorklet converts microphone samples into 16 kHz mono PCM and sends 1,600-sample transport chunks. Silero examines 32 ms windows and uses speech hysteresis, pause detection and bounded utterance length to choose recognition boundaries.

02 / MECHANISM

Whisper recognizes phrases while you keep speaking

Each completed utterance becomes an ordinary WAV transcription request. A shared inference semaphore controls model concurrency. This is phrase-level streaming, rather than Whisper token streaming or speculative partial text.

03 / MECHANISM

Sentence continuity belongs in the joiner

The next request receives recent raw text as context. A seam-aware joiner handles spaces, ellipses and punctuation at forced cuts, then sends appendable segments to the account’s selected receiver. It does not rewrite words already typed.

04 / MECHANISM

A microphone and a practical control surface

Desktop agents or supported ESP32 Bluetooth receivers turn text into input. The browser keyboard and touchpad provide a separate path for manual keys, pointer movement and scrolling. Receiver permissions and script support depend on the platform.

Implementation parameters · not benchmarks

Audio frame
1,600 samples
transport default
VAD window
32 ms
analysis window
Inference slots
1
configured default

Continuous audio capture and utterance-level recognition run as separate stages. The joiner prepares recognized segments for the selected receiver; the engineering article explains queue and reconnect behavior.

Read the full engineering story

How it works

A clear path from
setup to useful work.

  1. 01Open the browser microphone
  2. 02Transcribe on your Whisper server
  3. 03Type through your selected receiver

A closer look

One receiver, chosen by you.

Select the desktop that should receive your words. Or pair a supported ESP32 Bluetooth keyboard when the target device should not need a desktop client.

/ workflow

Browser microphone → Whisper → Selected client → Focused app

Conceptual workflow · configured for your environment

Voice Keyboard detail view
Voice Keyboard · A closer look at the workflow

Practical questions

Know what
fits your setup.

Where does speech recognition run?

Whisper runs on your configured server. GPU and slower CPU options are available. Initial model downloads, server resources and configured connectivity are required; speed and recognition quality depend on your setup.

Can it type into any application?

The selected client types into the focused window and needs platform permissions. macOS needs Accessibility access. A non-elevated Windows client cannot type into elevated applications. Linux Wayland needs uinput setup and has US-layout ASCII limitations.

How does the Bluetooth option work?

Supported ESP32 or ESP32-C3 firmware connects over Wi-Fi to the server and presents a Bluetooth keyboard to the target. It needs power, pairing and network access. US keyboard mapping normalizes accented Latin text and skips unsupported scripts.

What do I need in the browser?

Microphone access requires trusted HTTPS and microphone permission. You choose one active receiver. Transcription language, English translation and Hinglish options still depend on the receiver’s script support.

Make it work for you

Have a workflow
in mind?

Talk to AlgoFly