
EchoMimics
Context-aware Masked enemies that locally clone crewmate voices with Audio8 and answer with Qwen3.5.EchoMimics 0.1.0
EchoMimics makes ordinary Lethal Company Masked enemies copy real crewmates more convincingly. During active rounds, consenting clients detect speech locally and send bounded utterances to the host. The host transcribes them locally, gives nearby Masked enemies a short contextual memory, generates a deceptive line with Qwen3.5-2B, and clones the Masked enemy's assigned crewmate voice with Audio8 TTS 0.1B. Generated speech is played spatially from the enemy for every modded player.
There are no cloud calls, API keys, assistant behaviors, custom friendly enemies, or arbitrary model-controlled game actions.
Requirements
- Lethal Company v81 on Windows
- BepInExPack 5.4.2100
- The exact same EchoMimics version on every player
- Python 3.11
- Ollama with
qwen3.5:2b - An NVIDIA CUDA GPU is strongly recommended for Audio8. CPU mode works but is unlikely to answer quickly enough during gameplay.
- Roughly 8 GB free disk space for Python packages and model caches; 8 GB or more VRAM is recommended
Install
- Install BepInExPack through r2modman/Thunderstore.
- Automatic installs place the mod under
BepInEx/plugins/EchoMimics. For a manual install, copy that folder from the ZIP into the matching game profile. - Open
BepInEx/plugins/EchoMimicsand runsetup-runtime.ps1once. It installs the isolated Python runtime, pulls Qwen through Ollama, and leaves model data on the local computer. - Run
BepInEx/plugins/EchoMimics/start-runtime.ps1. Keep its window open while playing. - Start the game once, then edit
BepInEx/config/com.testyee.echomimics.cfg. - Every participating player must deliberately set
Privacy.AllowVoiceCapture = true. It defaults to false.
The host is the only computer that needs the AI runtime. Every player needs the mod because their microphone audio and generated spatial audio use a bounded custom multiplayer protocol.
How it behaves
- Crew speech is captured only while alive, player-controlled, connected to an active round, and opted in.
- Voice activity detection sends utterances of 0.5–8 seconds. It does not capture menus or the lobby.
- The host stores bounded transcripts and the latest matching reference clip per player for the current session.
- When a Masked is in hearing range and off cooldown, it may answer using its copied player's voice.
- Context contains the moon, inside/outside state, nearby player names, life state and approximate distances. Qwen is explicitly forbidden from inventing game facts.
- Replies are capped at 24 words and can be silent when speaking would hurt the deception.
- Masked movement, attacks, spawning and appearance remain the game's normal hostile AI.
Privacy and safety
Voice capture is disabled by default. Do not enable it unless everyone in the lobby understands and consents to local transcription and voice cloning. The host receives utterance audio because it performs inference. Raw per-turn uploads are held in memory; the host retains only the latest suitable voice-reference WAV and transcript under data/voices plus bounded transcript memory in data/memory.sqlite3. Delete the data directory to erase it.
The runtime binds to 127.0.0.1 only. An optional bearer token can be set using ECHOMIMICS_TOKEN and the matching mod config value. It never exposes file, shell, game-action, credential, or arbitrary-network tools to Qwen.
Configuration
Privacy.AllowVoiceCapture: explicit per-player opt-in; defaultfalseMimics.HearingRange: eligible listening distance; default32Mimics.ReplyChance: probability of answering an eligible utterance; default0.58Mimics.ReplyCooldownSeconds: per-Masked cooldown; default8Voice.ActivityThreshold: microphone RMS gate; raise it for noisy roomsVoice.InputDevice: blank follows the game's microphone when possibleVoice.MimicVolume: spatial voice volumeLocal runtime.Url: defaults to loopback port17841
Troubleshooting
Local mimic inference: connection refused: startstart-runtime.ps1on the host.- No voice is collected: confirm consent is true, inspect the BepInEx log, select
Voice.InputDevice, or lower the activity threshold slightly. - Mimic never speaks: it needs a clean voice sample from the player it copied, must be within hearing range, and is probabilistic/cooldown-limited.
- CUDA out-of-memory: close other GPU software. Audio8 can be forced to CPU with
ECHOMIMICS_AUDIO8_DEVICE=cpu, but latency will increase substantially. - Wrong voice: the game may change a Masked's copied identity after it first appears. The current release binds the identity observed when the host registers that enemy.
Verification performed
- Runtime unit tests cover voice-reference acquisition, memory flow, response cleanup, silence before a matching voice exists, and malformed WAV rejection.
- The mod builds against pinned Lethal Company v81 references with warnings treated as errors.
- Package checks validate versions, required files, source-secret patterns, model/provider settings and ZIP layout.
Actual multiplayer gameplay still requires a Windows Lethal Company session and is the final release-candidate smoke test; it cannot be simulated by the build environment.