OLV-PYQT is a Live2D-powered PySide6 desktop application that integrates ASR (Automatic Speech Recognition), TTS (Text-to-Speech), and LLM backends for an interactive VTuber-style chat experience. This repository includes the Qt GUI (OQWindows), backend controllers (OQController), and configuration system (OQConfig) for a responsive AI character with pluggable speech, voice, and chat providers.
- Live2D-powered interface — Qt windows render a Live2D mesh while
WSControllerorchestrates transcription, synthesis, and expression updates. - Extensive audio stack — Local and cloud-first voices plus ASR (faster-whisper, Sherpa ONNX, Azure, etc.) keep streaming interactions smooth.
- LLM-first backend — Flexible config-driven agent templates let you point to Claude, DeepSeek, OpenAI, Groq, or local models such as
llama-cpp-python.
- Python 3.12+ (project requires modern async features and typed libs)
- A machine with OpenGL support for the Qt/Live2D renderer
- Optional: CUDA-enabled GPU if you plan to run
faster-whisper,torch, orllama-cpp-pythonlocally
-
Create and activate a virtual environment next to this repo (
python -m venv .venv). -
Upgrade
pipthen install dependencies:python -m pip install --upgrade pip pip install -r requirements.txt
-
Install the correct Live2D runtime wheel that matches your interpreter (wheels are already provided for CPython 3.11/3.12).
- The canonical config lives in
OQConfig/config.yaml. Before you start the app, update thellm_configs.*.llm_api_key, TTS key placeholders, and any Azure/Groq tokens with your own credentials. OQConfig/current_selection.jsondefaults to Edge TTS, Sherpa ASR, and a DeepSeek-compatible LLM. Adjust the paths (e.g.,character_path) to point toResources/v3/<model>.model3.jsonfor your Live2D model.- Runtime logs and histories are written out to
logs/andchat_history/; those folders are ignored by Git and are cleared when appropriate.
python main.pymain.pyinitializes the Qt loop, starts the Live2D canvas, and boots the WebSocket-backed controller.- If you are building your own backend, point the controller to
ws://127.0.0.1:12393/client-ws(seeOQController/ws_controller.py).
python test_config_sync.py- This script verifies that the config sync service can push prompts to
OQConfig/config.yamland mirrors the same values back out.
- Use
requirements.txtto capture dependency versions.pyproject.tomlalready lists a subset of packages for publishing. - Clean temporary artifacts with
git clean -fdxonly after verifying there are no unsaved changes. - The
.gitignorenow filterslogs/,chat_history/,.venv/, and other generated files.
- Fork this repo, branch from
main, and open a pull request. Document new providers inOQConfig/config.yaml. - Run
python -m pytest(or add additional tests) before submitting.
Add your preferred open-source license here (e.g., MIT, Apache 2.0, etc.).