Overview
A high-performance OBS Studio plugin designed for real-time chat preview and local Text-to-Speech (TTS) integration, optimized specifically for AMD GPUs on Arch Linux.
Provides streamers with a low-latency, GPU-accelerated TTS solution that offloads processing from the CPU to ensure smooth gameplay in demanding titles.
Features
- Real-time Chat Preview — View and manage chat messages directly within OBS
- Local TTS Processing — Fully local execution, no cloud latency or privacy concerns
- AMD & Cross-GPU Optimization — Leverages ROCm or Vulkan for hardware-accelerated inference
- Zero CPU Hogging — Minimizes CPU usage during intense gaming sessions
- Simulation Mode — Built-in debugging tool to test voices and emoji handling before going live
- Emoji Support — Visual preview with emojis; TTS engine intelligently ignores them
- Engine Selection — Toggle between ROCm/Vulkan engines and voices from the OBS Dock
Architecture
┌──────────────────────────────────────────────────┐
│ OBS Plugin (C++/Qt) │
│ ┌─────────────┐ ┌──────────────────────────┐ │
│ │ Chat Dock │ │ Engine Manager │ │
│ │ (Qt Widget) │ │ ROCm / Vulkan / Sim │ │
│ └─────────────┘ └──────────┬───────────────┘ │
│ │ IPC (WebSocket) │
├──────────────────────────────┼───────────────────┤
│ TTS Backend (Python) │
│ ┌─────────────┐ ┌──────────────────────────┐ │
│ │ ROCm/ONNX │ │ Vulkan/ONNX │ │
│ │ (Piper) │ │ (Piper/Silero) │ │
│ └─────────────┘ └──────────────────────────┘ │
└──────────────────────────────────────────────────┘Tech Stack
| Category | Technology |
|---|---|
| Plugin | C++17, OBS Studio API, Qt6 |
| ROCm Backend | Python, onnxruntime-rocm, torch-rocm |
| Vulkan Backend | Python, onnxruntime-vulkan, ncnn |
| TTS Models | Piper, Silero |
| IPC | WebSockets / Local Sockets |
| Build | CMake, build.sh |
Project Structure
src/
├── plugin-main.cpp # OBS plugin entry point
├── tts-dock.cpp # Qt dock UI (chat preview, controls)
└── tts-dock.hpp # Dock header
backend/ # Python TTS inference backends
data/ # Model files and configs
build.sh # Automated build scriptRoadmap
Phase 1: Simulation & Mocking (Current)
- Basic OBS Dock UI in C++/Qt
- Simulation Mode with text input and test button
- Backend-agnostic TTS handler
- Emoji stripping and rendering
Phase 2: Local TTS Engine Integration
- Python environment via
uv - ROCm-accelerated TTS model integration
- IPC between C++ plugin and Python backend
Phase 3: Real Chat Integration
- Connect to Twitch/YouTube via OBS hooks or WebSocket
- Message queuing for high-traffic without overlapping audio
Phase 4: AUR Package & Auto-Launch
- Package plugin and backend as an AUR PKGBUILD for easy installation
- Integrate systemd user service or OBS startup script to spawn the TTS backend automatically on login
- Automatic backend discovery: OBS plugin connects to backend on load without manual command execution
Quick Start
git clone https://github.com/phaylali/obs-omniversify-tts.git
cd obs-omniversify-tts
./build.shRequires OBS Studio, ROCm or Vulkan drivers on Arch Linux.
Design Decisions
- Emoji Handling — Rendered in the preview dock but stripped from TTS input
- AMD Focus — ROCm/HIP explicitly targeted; Windows/Nvidia abstracted for future
- C++ for Plugin — Maximum stability for OBS integration
- Python for Backend — Leverages rich AI ecosystem on Linux