ai-vtuber-livestream

Agent

ai-vtuber-livestream

Creator:

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...

Yuki

Your Marketplace Companion

Agent

Hey, I'm Yuki šŸ‘‹

Ask me about specific products, customer support, or anything about the Swarms Marketplace.