- Document HF_HOME environment variable for writable cache
- Add systemd service permission guidance for /tmp paths
- Troubleshooting steps for read-only file system errors
JSON stores effect values as strings, but count_active_effects was
tryting to compare them directly with integers/floats.
Now properly converts:
- pitch, echo, robot, chorus -> int
- speed, tremolo_depth -> float
Before comparison to avoid TypeError: '>' not supported between
instances of 'str' and 'int'
- Added new audio_effects.py module with pitch shift and speed change
- Pitch range: -12 to +12 semitones (higher = chipmunk, lower = deeper)
- Speed range: 0.5 to 2.0x (higher = faster, lower = slower)
- Maximum 2 active effects per user (performance optimization)
- Added /effects command group:
- /effects list - Shows current effects with descriptions
- /effects set pitch|speed <value> - Apply effects
- /effects reset - Confirmation UI to clear all effects
- Effects persist across restarts in preferences.json
- Updated /voice preview to support optional pitch/speed parameters
- Effects applied in _generate_wav_bytes using librosa
- Added performance warnings when processing takes >1 second
- Updated README with effects documentation