feat: Implement multi-voice support and management

Refactor the TTS handling to support multiple, user-selectable voices. This replaces the previous single-voice system.

Key changes:
- Introduce VoiceManager to handle loading and managing voices from a dedicated oices/ directory.
- Add slash commands (/voice list, /set, /current, /refresh) for users to manage their personal TTS voice.
- Implement on-demand voice loading to improve startup time and memory usage.
- Remove the old 	ts_handler.py and single voice .wav files in favor of the new system.
- Update configuration to specify a voices directory instead of a single file path.
This commit is contained in:
2026-01-18 17:24:12 -06:00
parent ae1c2a65d3
commit 92dfcb1d39
14 changed files with 463 additions and 85 deletions

37
pockettts.service Normal file
View File

@@ -0,0 +1,37 @@
[Unit]
Description=Pocket TTS Discord Bot
After=network-online.target
Wants=network-online.target
[Service]
# Replace with your username
User=YOUR_USERNAME
Group=YOUR_USERNAME
# Replace with the actual path to your bot directory
WorkingDirectory=/home/YOUR_USERNAME/PocketTTSBot
# Use the Python from the virtual environment
ExecStart=/home/YOUR_USERNAME/PocketTTSBot/venv/bin/python bot.py
# Restart on failure
Restart=on-failure
RestartSec=10
# Give the bot time to gracefully shutdown
TimeoutStopSec=30
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=pockettts
# Security hardening (optional but recommended)
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/YOUR_USERNAME/PocketTTSBot/voices
PrivateTmp=true
[Install]
WantedBy=multi-user.target