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.
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?
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. |
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.
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).
| Setting | Default | What 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.