IboChat
A Flask-based multilingual AI voice chat application in which characters can reply in text and synthesize speech. It supports more than 24 languages and custom character creation, and employs a three-tier voice pipeline with fallback design.
Timeline (last 90 days)
IboChat is a Flask-based application in which each character can both reply in text and speak in voice, supports more than 24 languages, and lets users create custom characters within minutes.
IboChat's tech stack includes a single-file Flask application, GLM glm-4.5-air via the Z.ai API, locally running faster-whisper, SQLite + Werkzeug hashed account management, and Docker deployment behind Cloudflare.
IboChat's /speak endpoint tries three voice paths in order: GPT-SoVITS (best voice cloning, takes about 5–18 seconds, supports only English, Chinese, Japanese, and Korean, and permanently occupies about 3.9GB of VRAM once loaded), OmniVoice Studio (supports any language, takes about 30–40 seconds, called via an OpenAI-compatible endpoint), and Edge TTS (Microsoft's free neural voices, no cloning capability, supports 24 languages, zero latency, never fails).
IboChat runs on a single GPU with 4GB of VRAM, with GPT-SoVITS and OmniVoice sharing the same GPU; the author solves the audio corruption caused by resource contention by starting GPT-SoVITS on demand, using a watchdog thread to kill the process after 120 seconds of idleness, and clearing OmniVoice's VRAM before each call.
Loading IboChat's voice model takes about 30–50 seconds; the server first probes whether the model is ready, and if it is not ready it directly falls back to the next tier of voice options rather than making the user wait.
IboChat uses an exponential backoff retry strategy for rate limiting on AI endpoints.
IboChat's voice cloning flow from YouTube is already automated: yt-dlp fetches the clip, ffmpeg trims it, OmniVoice generates the voiceprint, and it is cached per character.
IboChat's endpoint name is still /api/gemini because early versions used Google Gemini, and it now proxies to Z.ai; changing the name would break the frontend.
Mobile browsers refuse to autoplay audio before the user touches the page, so IboChat's first reply only plays after the first click.
IboChat currently clearly labels its characters as AI parody, and the author plans to add cross-session long-term memory and better mid-conversation language switching.
All Facts (10)
IboChat is a Flask-based application in which each character can both reply in text and speak in voice, supports more than 24 languages, and lets users create custom characters within minutes.
50%UnverifiedIboChat's tech stack includes a single-file Flask application, GLM glm-4.5-air via the Z.ai API, locally running faster-whisper, SQLite + Werkzeug hashed account management, and Docker deployment behind Cloudflare.
50%UnverifiedIboChat's /speak endpoint tries three voice paths in order: GPT-SoVITS (best voice cloning, takes about 5–18 seconds, supports only English, Chinese, Japanese, and Korean, and permanently occupies about 3.9GB of VRAM once loaded), OmniVoice Studio (supports any language, takes about 30–40 seconds, called via an OpenAI-compatible endpoint), and Edge TTS (Microsoft's free neural voices, no cloning capability, supports 24 languages, zero latency, never fails).
50%UnverifiedIboChat runs on a single GPU with 4GB of VRAM, with GPT-SoVITS and OmniVoice sharing the same GPU; the author solves the audio corruption caused by resource contention by starting GPT-SoVITS on demand, using a watchdog thread to kill the process after 120 seconds of idleness, and clearing OmniVoice's VRAM before each call.
50%UnverifiedLoading IboChat's voice model takes about 30–50 seconds; the server first probes whether the model is ready, and if it is not ready it directly falls back to the next tier of voice options rather than making the user wait.
50%UnverifiedIboChat uses an exponential backoff retry strategy for rate limiting on AI endpoints.
50%UnverifiedIboChat's voice cloning flow from YouTube is already automated: yt-dlp fetches the clip, ffmpeg trims it, OmniVoice generates the voiceprint, and it is cached per character.
50%UnverifiedIboChat's endpoint name is still /api/gemini because early versions used Google Gemini, and it now proxies to Z.ai; changing the name would break the frontend.
50%UnverifiedMobile browsers refuse to autoplay audio before the user touches the page, so IboChat's first reply only plays after the first click.
50%UnverifiedIboChat currently clearly labels its characters as AI parody, and the author plans to add cross-session long-term memory and better mid-conversation language switching.
50%