Voice Avatar TTS System for Twitch Chat
Chat Yapper is a text-to-speech application that reads Twitch or Youtube (Experimental) chat messages aloud using avatars.
If you have suggestions I would love to hear them! Feel free to use the Discussions section if you want to see something added.
- Voice Avatars: Visually show chat as custom avatars that speak messages from Twitch and Youtube (Experimental)
- Multiple TTS Providers: Support for Edge, Google, Amazon, Monster
- Audio Filters: Apply reverb, echo, pitch shift, and speed changes to TTS audio (requires ffmpeg)
Its in the Releases section, to the top right of this page. Click the latest release, scroll down to the Assets section, and download the ChatYapper-X.X.X.msi. Then just run it!
- Run the executable - it will:
- Start a local web server
- Automatically open your browser to the Settings Page
- Once the application is running, you can paste the Avatar Display link into OBS Browser Plugin
- Configure your settings
- Connect to Twitch and start using!
Important: Keep the console window open while using Chat Yapper. Closing it will stop the application.
Download the latest Linux build from the Releases section.
- Download
ChatYapper-linux-x64-v{version}.tar.gzfrom releases - Extract the archive:
tar -xzf ChatYapper-linux-x64-v*.tar.gz cd ChatYapper-linux-x64-v*
- Run the application:
./chatyapper.sh
- Access the application at http://localhost:8008
Optional: Install ffmpeg for audio filters:
sudo apt-get install ffmpegQuick Start - No files needed:
docker run -d --name chat-yapper -p 8069:8008 \
-v chat-yapper-data:/data \
-e TWITCH_CLIENT_ID=your_id \
-e TWITCH_CLIENT_SECRET=your_secret \
-e YOUTUBE_CLIENT_ID=your_yt_id \
-e YOUTUBE_CLIENT_SECRET=your_yt_secret \
--restart unless-stopped \
ghcr.io/pladisdev/chat-yapper:latestAccess at: http://localhost:8069
Or using Docker Compose:
Download the repo locally, then go into the docker folder. Open a terminal and make sure docker is installed. Run:
docker-compose up -dSee the Docker documentation for more options.
- Twitch or Youtube Connection: Enter your Twitch channel name in settings, or Youtube (Experimental)
- Voice Provider: Choose and configure at least one TTS provider
- Add an Avatar: Upload an image for at least one Avatar
Chat Yapper supports multiple TTS providers. Choose based on your needs:
| Provider | Cost | Setup Complexity | Voice Quality | Notes |
|---|---|---|---|---|
| Edge TTS | Free | None | Good | no API key needed |
| Monster TTS | Free tier available | Easy | Meh | Requires API key from tts.monster. Takes seconds to process audio. |
| Google Cloud TTS | Free then Pay-as-you-go | Annoying | Excellent | Requires Google Cloud Account and API key |
| Amazon Polly | Free then Pay-as-you-go | Annoying | Excellent | Requires AWS Account. Brian voice is popular! |
Setup Instructions:
- Go to Settings → TTS Providers
- Select your provider
- Enter credentials (if required)
- Test a voice to verify setup
Note: Most providers offer free tiers or credits. Edge TTS is completely free with no limits. Check each provider's pricing before extensive use.
Chat Yapper supports server-side audio filtering to enhance TTS audio:
Available Filters:
- Reverb: Adds room ambiance (0-100% wetness)
- Pitch Shift: Changes voice pitch (-12 to +12 semitones)
- Speed Change: Adjusts playback speed (0.5x to 2.0x)
- Random Mode: Applies 1-3 random filters with random intensities
Requirements:
- FFmpeg must be installed and available in your system PATH
- Audio filters are applied server-side after TTS synthesis
- Filtered audio duration is automatically detected for accurate timing
Note: If FFmpeg is not installed, audio filters will be skipped and original TTS audio will be used.
- Python 3.9+ with pip
- Node.js 16+ with npm
- FFmpeg (optional, required for audio filters)
- Windows: Download from ffmpeg.org and add to PATH
- Linux:
sudo apt-get install ffmpegor equivalent - Mac:
brew install ffmpeg
# Clone the repository
git clone https://github.com/pladisdev/chat-yapper.git
cd chat-yapper
# Install Python dependencies
pip install -r requirements.txt
# Install frontend dependencies
cd frontend
npm install
cd ..cd backend
python run_dev.pycd frontend
npm run dev- Frontend Dev Server: http://localhost:5173 (with hot reload)
- Backend API: http://localhost:8008 (with auto-reload)
- Backend Docs: http://localhost:8008/docs (FastAPI Swagger UI)
# Build with PyInstaller
python deployment/build.py- Build the React frontend (
npm run build) - Copy build to
backend/public/ - Embed credentials from .env file into executable
- Create Windows executable
- Bundle all dependencies into single .exe file
- Generate SHA256 checksums for verification
chat-yapper/
├── main.py # Application launcher
├── requirements.txt # Python dependencies
├── logs/ # Application logs
├── assets/ # Application assets (icon, etc.)
├── deployment/ # Build and deployment scripts
│ ├── build.py # Build script for executable
│ ├── requirements-build.txt # Build dependencies
│ ├── install-test-deps.ps1 # Windows test setup
│ └── install-test-deps.sh # Unix test setup
├── docker/ # Docker configuration
│ ├── Dockerfile
│ └── docker-compose.yml
├── backend/ # FastAPI backend
│ ├── app.py # Main API server
│ ├── models.py # Database models
│ ├── tts.py # TTS provider implementations
│ ├── twitch_listener.py # Twitch chat integration
│ ├── run_dev.py # Development server
│ └── public/ # Built frontend files
├── frontend/ # React frontend
│ ├── src/
│ │ ├── pages/ # React components
│ │ └── websocket-manager.js
│ ├── package.json
│ └── vite.config.js
└── testing/ # Development testing tools
- New Features:
- Better control of avatar placement in Avatar Layout Editor
- Select and Adjust speaking animations for crowd mode
- Added idle animations for crowd mode
- New Features:
- Quick status view
- Limit concurrent TTS messages
- Some more twitch fixes and improved notifcations
- usernames for chatbubbles
- text size adjustment
- Toggle for only allowing redeem messages for twitch
- twitch token refresh (should fix auth issues)
- Chat bubbles above avatars
- Pop-up mode for avatars
- Linux standalone build (x64)
- Improved audio quality (reduced crackling)
- Docker multi-architecture support (amd64, arm64)
- Better audio preloading and buffering
- High-quality ffmpeg audio processing
- GitHub Container Registry (GHCR) for Docker images
- Automated cross-platform builds via GitHub Actions
- Stability fixes
- MSI installation for Windows
- Light mode theme
- Cleaned up settings UI
- GIF and WebP support for animated avatars
- Customizable speaking glow effects (color, opacity, size, enable/disable)
- Message history and replay system (stores 100 recent messages)
- Export/Import configuration system (backup/restore settings, voices, and avatars)
- Persistent voice caching for all TTS providers (MonsterTTS, Google Cloud, Amazon Polly, Edge TTS)
- Audio filters
- Docker Support
- Initial release
- Avatars page
- Settings page
- TTS selection
- Avatar positioning
- Basic Twitch integration
- YouTube Integration - Connect to YouTube live chat (beta)
- Import/Export - Backup and restore configuration
- Factory Reset - Reset to default settings
- Discord integration
- Better placement of avatars in UI
- Allow mapping of voices to avatars
- Allow users to upload an avatar and preferred voice, with streamer allowing user to be added
- More audio effects
- Built in sound alert system
- Sprite sheet support
- auth token refresh
- Statistics
- More TTS options
- Select scenes
- Waveform visualization in settings UI
- Better error recovery for TTS provider failure, network issues, and db corruption
- Memory Management
- YouTube integration is experimental and may have occasional connection issues
- Audio crackling on some systems (improved in v1.2.0, please report if you still experience issues)
This application was inspired by the work done by shindigs, please check them out!
Special thanks these streamers that helped test the early prototype:
Made for the streaming community
For support, questions, or feature requests, please open an issue on GitHub or email Pladis at pladisdev@gmail.com.
