Documentation

Voice messages

Voicetastic carries short, push-to-talk recordings (a few seconds long). The right codec and the right LoRa preset together decide how big each message is, how long it takes to send, and how well it survives a lossy mesh. Here is how to choose.

!

Not real-time. Voice messages are store and forward. On a slow LoRa preset a 10 second clip can take most of a minute to fully arrive. Expect a chat-style "tap to play" experience, not a continuous voice call.

Two voice messages exchanged between the browser client (left) and the desktop egui client (right) over a Meshtastic link. Screen capture only — no audio track was recorded.

Pick a codec

A codec is the algorithm that compresses your voice. Voicetastic ships three of them; pick based on what you care about most.

Codec Rate Bitrate Best for
Codec2 default 8 kHz 1.2 to 3.2 kbps The default. Tiny files; comfortable even on the slowest LoRa presets.
AMR-NB 8 kHz 4.75 to 12.20 kbps Wire-compatible with the Voicetastic Android app. Eight selectable bitrates.
Opus 8 kHz narrowband (default), up to 16 kHz wideband 6 to 16 kbps Best fidelity. Narrowband at modest bitrates by default; switch to wideband only on fast LoRa presets.

Inbound messages are always decoded with the codec written into their header, so your codec choice only affects what you send. The other side can be on a completely different codec.

How small is small?

Size of a 30 second clip: Codec2 at 1.2 kbps (default) ~4.5 kB AMR-NB at 4.75 kbps ~18 kB AMR-NB at 7.95 kbps ~30 kB Opus at 16 kbps ~60 kB
Bytes on the wire for a 30 second clip, across the three codecs.

Pick a LoRa preset

The Meshtastic LoRa preset trades range against speed. Voicetastic automatically adapts its pacing and chunk size to whatever preset your radio is on, so it is enough to know the general shape:

Preset family Approx. range (line of sight) Approx. throughput Voicetastic feels like
Short Turbo / Short Fast under 1 km Fast Snappy. Wideband Opus is realistic here.
Short Slow / Medium Fast 1 to 5 km Mid Comfortable. Codec2 default works well; AMR-NB if you want more headroom.
Medium Slow / Long Fast 5 to 15 km Slow 10 second clips take 20 to 30 s to arrive.
Long Slow / Very Long Slow tens of km Very slow Stick with Codec2 at its lowest mode. Patience required.
i

Rule of thumb: if your text messages already feel slow, lower the voice bitrate. If text is snappy, you can probably go higher.

How loss recovery works in practice

Voicetastic mixes two techniques so that lost chunks rarely turn into a lost message. Both are automatic; you only ever see the result.

Small loss: FEC fixes it silently D0 lost D2 D3 P0 D1 rebuilt from P0. Receiver never asks for anything. Bigger loss: receiver asks once for what is missing lost lost D2 D3 lost FEC budget exceeded. Receiver sends NACK [D0, D1]. Sender retransmits.
Two tiers of recovery; the receiver only asks back when FEC alone cannot patch the hole.

What can happen to a message

Delivered cleanly

Every chunk arrived, or FEC rebuilt the missing ones. Playback is bit-perfect against the source recording.

Delivered after a NACK

The receiver asked the sender to fill in a few holes. Same final audio, slightly more airtime.

Partial

Too much was lost to recover. The receiver plays what it has and marks the message as partial. Missing chunks become brief silences.

Dropped

If absolutely nothing useful arrived within the timeout, the receiver discards the message and frees its reassembly slot.

Tuning options you can actually change

Voicetastic exposes a small number of settings; the rest are derived automatically. Names below are the desktop settings keys (the Android and CLI surfaces share the same ids).

SettingDefaultWhat it does
voice.codec codec2 Which codec to use for outgoing messages.
voice.amrnb_mode 7 (12.20 kbps) AMR-NB bitrate. Lower means smaller and slower to play.
voice.codec2_mode 5 (1200 bps) Codec2 bitrate. Tiny files at the lowest mode.
voice.max_duration_secs 30 Hard cap on a single recording.
voice.reassembly_timeout_secs 1200 How long to wait for slow chunks before giving up.

The full reference, including the storage location of config.toml and the CLI syntax to read or write a key, lives on the Settings wiki page.