3.6 KiB
Voice, announcements, and TTS
Configuration files
adn-voice.yaml(optional, not committed) — merged intoconfig["VOICE"].- Hot reload on file mtime (~15 s loop).
Template: adn-voice.example.yaml.
Server voice identity (configurable DMR_ID)
All server-originated voice uses a configurable DMR ID in adn-voice.yaml:
VOICE:
DMR_ID: 1000001 # optional; default 1000001
TTS_ANNOUNCEMENTS:
- ENABLED: true
FILE: texto1
TG: 730500
DMR_ID: 3109898 # optional; inherits VOICE.DMR_ID when omitted
VOICE.DMR_ID— default RF source. Optional — existingadn-voice.yamlfiles need no change.- Per-item
DMR_ID— override on eachANNOUNCEMENTS/TTS_ANNOUNCEMENTSrow. Also optional. - Callsign — resolved from the subscriber DB (
users/SUB_MAP) for that DMR ID; not in voice config.
Applies to:
- Scheduled ANNOUNCEMENTS and TTS_ANNOUNCEMENTS (destination = the
TGfield in each item). - On-demand clips triggered by dialling 9991–9999 (playback uses destination TG 9 on TS2; you still key 999x to request the file).
- Disconnected / reflector voice lines (same: TG 9 / TS2).
See TG 9 — local service lane for why TG 9 is used and what must be enabled on the hotspot.
- Voice ident (destination all-call or
OVERRIDE_IDENT_TG).
See Special numbers — server voice source ID for the full table.
Features
| Feature | Description |
|---|---|
| Scheduled announcements | AMBE phrases from Audio/<lang>/ondemand/ on a schedule (hourly / interval). |
| TTS announcements | Text → gTTS → MP3 → ffmpeg → WAV → vocoder → AMBE (see pipeline below). |
| Voice ident | Periodic identification (optional); uses VOICE_IDENT in main server config and OVERRIDE_IDENT_TG / all-call. |
| Recording | When enabled, records AMBE to disk for traffic on RECORDING_TG / RECORDING_TIMESLOT (see template adn-voice.example.yaml). |
| On-demand (9991–9999) | See Special numbers. |
TTS pipeline (summary)
- Source text in
.txtunderAudio/<language>/ondemand/. - gTTS produces MP3.
- ffmpeg converts to WAV.
- Vocoder command or AMBEServer produces AMBE for transmission.
ffmpeg must be installed on the host OS.
Configure TTS_VOCODER_CMD or TTS_AMBESERVER_HOST / TTS_AMBESERVER_PORT in adn-voice.yaml for encoding; see comments in adn-voice.example.yaml.
Anti-collision (QSO) with announcements
When scheduling announcements, the server may wait if target slots are busy, drop targets if a live QSO appears mid-stream, and only mark hourly announcement state after a successful target list — this avoids clobbering live traffic.
Scheduled and TTS broadcasts inject each frame as a synthetic hotspot PTT on PROXY.TARGET_SYSTEM (the same MASTER used by the integrated proxy). Routing fans out to bridged hotspots and OPENBRIDGE legs; local peers on that MASTER still receive frames via send_system.
Broadcast queue
Parallel broadcasts on different TGs may run concurrently; same-TG broadcasts are serialised so one announcement completes before another on that TG.
See also
- Configuration — voice file paths.
- Echo — separate playback service.
- Special numbers — 5000, 999x, recording-related behaviour.