You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Rodrigo Pérez d94bc0965e
feat(obp): INGRESS vs canonical START for monitor CTABLE
6 months ago
Audio chore: add default Audio assets from legacy installation 7 months ago
data rewrite of adn peer server using clean architecture 7 months ago
docs docs: TTS setup with AMBEServer, improve adn-voice.example and README 7 months ago
json rewrite of adn peer server using clean architecture 7 months ago
src/adn_server feat(obp): INGRESS vs canonical START for monitor CTABLE 6 months ago
.gitignore chore: add default Audio assets from legacy installation 7 months ago
README.md docs: TTS setup with AMBEServer, improve adn-voice.example and README 7 months ago
adn-parrot.example.yaml fix: support ECHO as MASTER and invert parrot to PEER mode 7 months ago
adn-parrot.py chore: add credits 7 months ago
adn-server.example.yaml fix(obp): end TX legs on timeout/VTERM and demote max-hops spam 6 months ago
adn-server.py chore: add credits 7 months ago
adn-voice.example.yaml docs: TTS setup with AMBEServer, improve adn-voice.example and README 7 months ago
pyproject.toml chore: update deps and docs — add gTTS, ffmpeg note, voice config section 7 months ago
requirements.txt feat: allow parallel broadcasts on different TGs (port 3a37220) 6 months ago

README.md

ADN DMR Peer Server

Clean Architecture rewrite of the ADN DMR conference bridge. Same behaviour as the original server; configuration is YAML.

License

GPL v3. Derived from FreeDMR / HBlink.

Requirements

  • Python 3.10+
  • Dependencies: pip install -r requirements.txt
  • ffmpeg (system package) — required for voice/TTS. Install via your distro:
    • Debian/Ubuntu: apt install ffmpeg
    • openSUSE: zypper install ffmpeg
    • Fedora/RHEL: dnf install ffmpeg or yum install ffmpeg

Configuration

Copy adn-server.example.yaml to adn-server.yaml and edit with your settings. Production config is not committed.

Voice configuration

Voice features (announcements, TTS, recording) use a separate config file. Copy adn-voice.example.yaml to adn-voice.yaml and edit. If the file does not exist, voice features are disabled (no error). Changes are hot-reloaded every 15 seconds.

  • Each item (ANNOUNCEMENTS, TTS_ANNOUNCEMENTS) has its own LANGUAGE and ENABLED: true to activate.
  • ANNOUNCEMENT_LANGUAGES is optional (for voice ident only); announcements/TTS work without it.
  • TTS requires ffmpeg + vocoder (TTS_VOCODER_CMD or TTS_AMBESERVER_HOST). Pipeline: .txt → gTTS → .mp3 → ffmpeg → .wav → vocoder → .ambe. First time: create Audio/<LANG>/ondemand/<FILE>.txt with the text. See docs/TTS_SETUP.md.

Run

pip install -r requirements.txt
python adn-server.py

Options:

python adn-server.py -c /path/to/adn-server.yaml
python adn-server.py --logging DEBUG

Parrot (Playback)

A separate entrypoint records incoming group voice and plays it back (echo/parrot).

cp adn-parrot.example.yaml adn-parrot.yaml
python adn-parrot.py

See docs/PARROT.md for architecture, configuration and systemd setup.

Powered by TurnKey Linux.