ai-vtuber-livestream

Agent

ai-vtuber-livestream

Creator:

alixx_eearle

About this agent

AI VTuber Live Streaming Setup - Open-LLM-VTuber + YouTube Live + Edge TTS on AWS

šŸŽ­ AI VTuber Live Stream

Fully automated AI VTuber that livestreams on YouTube, reads chat in real-time, and responds with voice — powered by Open-LLM-VTuber.

šŸ”“ Live Demo

Watch it live: https://youtube.com/watch?v=7V90Jx7Eygo


šŸ—ļø Architecture

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”  
│                         AWS EC2 (Ubuntu 26.04)                      │  
│                        t3.large (2 vCPU, 8GB)                       │  
│                                                                     │  
│   ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”     ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”     ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”  │  
│   │  YouTube   │────▶│  Open-LLM-VTuber    │────▶│  LLM API     │  │  
│   │  Chat      │     │  (Python Server)    │     │  (OpenAI     │  │  
│   │  Bridge    │     │  :12393 / :12394    │     │  Compatible) │  │  
│   ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜     ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜     ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜  │  
│                                 │                                   │  
│                    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”                      │  
│                    ā–¼            │            ā–¼                      │  
│            ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”      │    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”               │  
│            │  Edge TTS  │      │    │  Live2D Model │               │  
│            │  (Voice)   │      │    │  (Animation)  │               │  
│            ā””ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”˜      │    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜               │  
│                  │             │           │                        │  
│                  ā–¼             │           ā–¼                        │  
│          ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”       │    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”                │  
│          │ PulseAudio │       │    │   Chrome      │                │  
│          │ (Virtual   │       │    │   (Display    │                │  
│          │  Sink)     │       │    │    :99)       │                │  
│          ā””ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”˜       │    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                │  
│                │              │           │                         │  
│                ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                         │  
│                               ā–¼                                     │  
│                       ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”                              │  
│                       │   FFmpeg     │                              │  
│                       │ (x11grab +   │                              │  
│                       │  pulse)      │                              │  
│                       ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                              │  
│                              │                                      │  
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜  
                               │ RTMP  
                               ā–¼  
                    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”  
                    │   YouTube Live      │  
                    │   (RTMP Ingest)     │  
                    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜  

šŸ“¦ All Dependencies (with full setup for each)

Each dependency has its own folder with README, install script, and config files:

#DependencyFolderGitHubWhat We Use It For
1Open-LLM-VTuberdependencies/open-llm-vtuber/GitHubCore VTuber framework (server, frontend, Live2D, proxy)
2blivedmdependencies/blivedm/GitHubBilibili live chat integration
3edge-ttsdependencies/edge-tts/GitHubFree Microsoft Edge text-to-speech
4chat-downloaderdependencies/chat-downloader/GitHubYouTube live chat scraper
5websocket-clientdependencies/websocket-client/GitHubPython WebSocket client
6Google Chromedependencies/chrome/DownloadLive2D rendering + audio playback
7FFmpegdependencies/ffmpeg/ffmpeg.orgScreen + audio capture → RTMP stream
8PulseAudiodependencies/pulseaudio/freedesktop.orgVirtual audio sink for routing
9Xvfbdependencies/xvfb/X.OrgVirtual X11 display for headless Chrome
10sherpa-onnxdependencies/sherpa-onnx/GitHubLocal speech recognition (ASR)

Python Packages

chat-downloader    # YouTube chat scraping  
websocket-client   # WebSocket connections  
edge-tts           # Free TTS  
loguru             # Logging  
requests           # HTTP requests  
sherpa-onnx        # Local ASR  
openai             # LLM API client  
anthropic          # Claude API client  

šŸš€ One-Command Setup

BASH
curl -sSL https://raw.githubusercontent.com/Maliot100X/ai-vtuber-livestream/main/setup.sh | bash  

Or install each dependency manually from its folder above.


šŸ“‹ Prerequisites

  • AWS EC2 — Ubuntu 24.04+, t3.large (2 vCPU, 8GB RAM)
  • Security Group — Open ports 12393, 12394, 22
  • YouTube Channel — Live streaming enabled
  • LLM API Key — Any OpenAI-compatible provider

šŸ”§ Manual Setup (Step by Step)

Step 1: System Dependencies

BASH
sudo apt update && sudo apt upgrade -y  
sudo apt install -y python3 python3-pip python3-venv python3-dev \  
  git curl wget unzip build-essential \  
  xvfb pulseaudio ffmpeg \  
  libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 \  
  libgbm1 libasound2 libxshmfence1 libgtk-3-0  

Step 2: Install Chrome

BASH
# See: dependencies/chrome/  
wget -q -O /tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb  
sudo dpkg -i /tmp/chrome.deb || sudo apt-get install -f -y  

Step 3: Install Open-LLM-VTuber

BASH
# See: dependencies/open-llm-vtuber/  
cd ~  
git clone https://github.com/Open-LLM-VTuber/Open-LLM-VTuber.git  
cd Open-LLM-VTuber  
python3 -m venv .venv && source .venv/bin/activate  
pip install -r requirements.txt  
pip install chat-downloader websocket-client edge-tts loguru requests sherpa-onnx  

Step 4: Configure

BASH
cp ~/ai-vtuber-livestream/config/conf.yaml.full ~/Open-LLM-VTuber/conf.yaml  
cp ~/ai-vtuber-livestream/.env.example ~/Open-LLM-VTuber/.env  
nano ~/Open-LLM-VTuber/.env  # Add your API keys  

Step 5: Patch Frontend

BASH
# See: patches/frontend-proxy-ws-fix.md  
cd ~/Open-LLM-VTuber  
FRONTEND_JS=$(ls frontend/assets/main-*.js)  
sed -i 's|/client-ws|/proxy-ws|g' "$FRONTEND_JS"  

Step 6: Start Everything

BASH
~/ai-vtuber-livestream/scripts/start_vtuber.sh  

šŸ“ Project Structure

ai-vtuber-livestream/  
ā”œā”€ā”€ README.md  
ā”œā”€ā”€ LICENSE  
ā”œā”€ā”€ .env.example  
ā”œā”€ā”€ .gitignore  
ā”œā”€ā”€ setup.sh  
│
ā”œā”€ā”€ config/  
│   ā”œā”€ā”€ conf.yaml.example              # Minimal config template  
│   └── conf.yaml.full                 # Complete 504-line config  
│
ā”œā”€ā”€ scripts/  
│   ā”œā”€ā”€ start_vtuber.sh                # Start all services  
│   ā”œā”€ā”€ stop_vtuber.sh                 # Stop all services  
│   ā”œā”€ā”€ health_check.sh                # Status check  
│   ā”œā”€ā”€ vtuber-chrome.sh               # Chrome launch  
│   ā”œā”€ā”€ youtube-stream.sh              # FFmpeg RTMP stream  
│   ā”œā”€ā”€ yt-chat-reader.py              # Chat bridge (Method 1)  
│   ā”œā”€ā”€ yt-chat-reader2.py             # Chat bridge (Method 2)  
│   ā”œā”€ā”€ youtube_chat_bridge.py         # Threaded bridge  
│   ā”œā”€ā”€ youtube_chat_bridge_v2.py      # Bridge v2  
│   ā”œā”€ā”€ youtube_live_bridge.py         # Full bridge  
│   └── run_bilibili_live.py           # Bilibili integration  
│
ā”œā”€ā”€ dependencies/                      # ← FULL SETUP FOR EACH DEPENDENCY  
│   ā”œā”€ā”€ open-llm-vtuber/               # Core framework  
│   │   ā”œā”€ā”€ README.md  
│   │   ā”œā”€ā”€ install.sh  
│   │   └── conf.yaml.working          # Our actual working config  
│   ā”œā”€ā”€ blivedm/                       # Bilibili live chat  
│   │   └── README.md  
│   ā”œā”€ā”€ edge-tts/                      # Free TTS  
│   │   ā”œā”€ā”€ README.md  
│   │   └── install.sh  
│   ā”œā”€ā”€ chat-downloader/               # YouTube chat scraper  
│   │   ā”œā”€ā”€ README.md  
│   │   ā”œā”€ā”€ install.sh  
│   │   ā”œā”€ā”€ yt-chat-reader.py          # Our working script  
│   │   └── yt-chat-reader2.py         # Alternative method  
│   ā”œā”€ā”€ websocket-client/              # WebSocket client  
│   │   ā”œā”€ā”€ README.md  
│   │   └── install.sh  
│   ā”œā”€ā”€ chrome/                        # Browser rendering  
│   │   ā”œā”€ā”€ README.md  
│   │   ā”œā”€ā”€ install.sh  
│   │   └── launch.sh                  # Our Chrome launch script  
│   ā”œā”€ā”€ ffmpeg/                        # RTMP streaming  
│   │   ā”œā”€ā”€ README.md  
│   │   ā”œā”€ā”€ install.sh  
│   │   └── stream.sh                  # Our FFmpeg stream script  
│   ā”œā”€ā”€ pulseaudio/                    # Virtual audio  
│   │   ā”œā”€ā”€ README.md  
│   │   └── install.sh  
│   ā”œā”€ā”€ xvfb/                          # Virtual display  
│   │   ā”œā”€ā”€ README.md  
│   │   └── install.sh  
│   └── sherpa-onnx/                   # Local ASR  
│       ā”œā”€ā”€ README.md  
│       └── install.sh  
│
ā”œā”€ā”€ patches/  
│   └── frontend-proxy-ws-fix.md       # Frontend patch instructions  
│
└── docs/  
    ā”œā”€ā”€ ARCHITECTURE.md                # Deep dive  
    ā”œā”€ā”€ TROUBLESHOOTING.md             # Common fixes  
    └── LLM_PROVIDERS.md               # 8+ providers  

šŸŽ® Management Commands

BASH
# Start everything  
~/ai-vtuber-livestream/scripts/start_vtuber.sh

# Stop everything  
~/ai-vtuber-livestream/scripts/stop_vtuber.sh

# Check status  
~/ai-vtuber-livestream/scripts/health_check.sh

# View logs  
tail -f /tmp/vtuber-server.log  
tail -f /tmp/yt-bridge.log  
tail -f /tmp/ffmpeg-stream.log  

šŸ¤– Supported LLM Providers

ProviderConfig KeyExample Model
Groqgroq_llmllama-3.3-70b-versatile
DeepSeekdeepseek_llmdeepseek-chat
OpenAIopenai_llmgpt-4o-mini
OpenRouteropenai_compatible_llmanthropic/claude-3.5-sonnet
Geminigemini_llmgemini-2.0-flash-exp
Claudeclaude_llmclaude-3-haiku
Ollamaollama_llmllama3.2

See docs/LLM_PROVIDERS.md


šŸ“„ License

MIT — see LICENSE


Built with ā¤ļø for the VTuber community

Source: https://github.com/Maliot100X/ai-vtuber-livestream

Comments & Discussion

Scroll to load comments...

Tags

livestreaming
youtube
vtuber
voice-synthesis
chatbot
real-time-chat
automation
aws
llm
live2d
text-to-speech
entertainment
social-media
python
streaming-agent

Share

Related Links
Tokenization

This item is not available for tokenization.

Loading recommendations...