Skip to content

shinshin86/aituber-onair

Repository files navigation

AITuber OnAir

CI Ask DeepWiki

AITuber OnAir Toolkit - logo

日本語版はこちら

Welcome to the AITuber OnAir monorepo! This repository contains various packages and tools that power AI-driven virtual streaming and related features.

Currently, the primary packages available are:

  • @aituber-onair/core A TypeScript library for generating text and audio responses in AI Tuber streaming scenarios. It provides seamless integration with various AI and speech APIs, as well as memory and conversation context management.

    npm install @aituber-onair/core
    
  • @aituber-onair/voice An independent voice synthesis library supporting multiple TTS engines (VOICEVOX, VoicePeak, OpenAI TTS, NijiVoice, MiniMax, AIVIS Speech, etc.). Can be used standalone or integrated with the core package for full AITuber functionality.

    npm install @aituber-onair/voice
    
  • @aituber-onair/manneri A conversation pattern detection library that identifies repetitive dialogue patterns and provides topic diversification prompts. Features simple configuration with customizable intervention messages for maintaining engaging conversations.

    npm install @aituber-onair/manneri
    
  • @aituber-onair/bushitsu-client WebSocket client library for chat functionality with React hooks support. Provides WebSocket client and React hooks for real-time chat communication with auto-reconnection, rate limiting, mention support, and voice synthesis integration. Works in both browser and Node.js environments.

    npm install @aituber-onair/bushitsu-client
    
  • @aituber-onair/chat Chat and LLM API integration library for AITuber OnAir. Provides a unified interface for interacting with various AI chat providers including OpenAI, Claude (Anthropic), and Google Gemini. Features streaming responses, tool/function calling, vision support, and emotion detection.

    npm install @aituber-onair/chat
    

Getting Started

  1. Clone the repository

    git clone https://github.com/shinshin86/aituber-onair.git
    cd aituber-onair
  2. Install dependencies
    This monorepo uses npm workspaces. Simply run:

    npm install
  3. Build all packages

    npm run build
    • This runs the build script for each package in the packages/ directory.
  4. Test all packages

    npm run test
    • Runs the test suite for each package.
  5. Format all packages

    npm run fmt
    • Runs the format for each package.

Project Structure

aituber-onair/
├── packages/
│   ├── core/
│   │   ├── src/
│   │   ├── test/
│   │   └── package.json
│   ├── voice/
│   │   ├── src/
│   │   ├── test/
│   │   └── package.json
│   ├── chat/
│   │   ├── src/
│   │   ├── test/
│   │   └── package.json
│   ├── manneri/
│   │   ├── src/
│   │   ├── test/
│   │   └── package.json
│   └── bushitsu-client/
│       ├── src/
│       ├── test/
│       └── package.json
├── package.json
├── README.md
└── ...
  • packages/core: The main library (@aituber-onair/core) providing AITuber core functionality.
  • packages/voice: The voice synthesis library (@aituber-onair/voice) supporting multiple TTS engines.
  • packages/chat: The chat and LLM API integration library (@aituber-onair/chat) for AI provider interactions.
  • packages/manneri: The conversation pattern detection library (@aituber-onair/manneri) for identifying repetitive dialogue patterns.
  • packages/bushitsu-client: The WebSocket client library (@aituber-onair/bushitsu-client) for chat functionality with React hooks support.

Release Process

This project uses Changesets for version management and automated releases.

Creating a Release

Automated Release (Recommended)

  1. Create a changeset for your changes

    npm run changeset
    • Select the packages that were modified
    • Choose the appropriate version bump (patch/minor/major)
    • Write a clear description of the changes
  2. Commit the changeset file

    git add .changeset/
    git commit -m "Add changeset for [your feature]"
  3. Push to GitHub and create a PR

    • After merging to main, the GitHub Action will automatically create a "Version Packages" PR
    • This PR will include all pending changesets
  4. Merge the Version PR

    • Review and merge the "Version Packages" PR
    • This will automatically:
      • Update package versions
      • Update CHANGELOG.md files
      • Create git tags
      • Publish packages to npm

Manual Release (if needed)

For a complete manual release workflow:

Option 1: Using Changesets

  1. Create changeset for your changes

    npm run changeset
  2. Update package versions

    npm run changeset:version
  3. Release (build, test, and publish)

    npm run release

Option 2: Manual Version Management If changeset interactive mode fails:

  1. Update CHANGELOG.md: Add entry to packages/[package]/CHANGELOG.md

    ## 0.x.x
    
    ### Patch Changes
    
    - Your change description here
  2. Update package.json: Increment version in packages/[package]/package.json

  3. Commit changes: Commit both CHANGELOG.md and package.json updates

  4. Build and test: npm run build && npm run test

  5. Publish: npm run changeset:publish or cd packages/[package] && npm publish

Alternative individual operations:

# Check what would be published
npm run changeset:publish -- --dry-run

# Manually publish packages (after changeset:version)
npm run changeset:publish

Note: npm run release executes build → test → publish in sequence. If any step fails, the process stops and packages won't be published.

License

This project is open-sourced under the MIT License.

Special Thanks

This project is based on the work referenced below. Without the contributions of these pioneers, I would not have been able to create it.

About

AITuber OnAir Toolkit

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •