Lethal Company
You are viewing a potentially older version of this package. View Latest Version
Install

Details

Date Uploaded
an hour ago
Downloads
4
Size
133KB
Dependency string
nomae-EchoMimics-0.1.0

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

  1. Install BepInExPack through r2modman/Thunderstore.
  2. Automatic installs place the mod under BepInEx/plugins/EchoMimics. For a manual install, copy that folder from the ZIP into the matching game profile.
  3. Open BepInEx/plugins/EchoMimics and run setup-runtime.ps1 once. It installs the isolated Python runtime, pulls Qwen through Ollama, and leaves model data on the local computer.
  4. Run BepInEx/plugins/EchoMimics/start-runtime.ps1. Keep its window open while playing.
  5. Start the game once, then edit BepInEx/config/com.testyee.echomimics.cfg.
  6. 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; default false
  • Mimics.HearingRange: eligible listening distance; default 32
  • Mimics.ReplyChance: probability of answering an eligible utterance; default 0.58
  • Mimics.ReplyCooldownSeconds: per-Masked cooldown; default 8
  • Voice.ActivityThreshold: microphone RMS gate; raise it for noisy rooms
  • Voice.InputDevice: blank follows the game's microphone when possible
  • Voice.MimicVolume: spatial voice volume
  • Local runtime.Url: defaults to loopback port 17841

Troubleshooting

  • Local mimic inference: connection refused: start start-runtime.ps1 on 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.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.