Skip to content
Back to search

Better Speech Chat

by copper-lamp

实时语音聊天:支持服务端混音并本地语音转文字,混合音频流与字幕回传客户端

  • 4 stars
  • Updated
0.1.3-mc26.51

README0.1.3-mc26.51

Better Speech Chat

Join the world and Start talking.

An open-source in-game real-time voice chat mod for Minecraft Bedrock on LeviLamina — server-side mixing, client-side capture and playback, with optional live speech-to-text subtitles.

BSChat v0.1.3-mc26.51 Windows x64 Minecraft Bedrock AGPL-3.0 License

LeviLamina 26.51.6

Releases · Changelog · Issues · 简体中文

Join the BSChat QQ group

Warning

BSChat is still in early development, and all current builds are test builds. Please back up your important worlds and client/server data. The voice protocol is pinned to v1 and only ever extended in a backwards-compatible way, so different mod patch versions can still talk to each other. A Minecraft or LeviLamina version change is not guaranteed to stay compatible — that depends on the game's network layer and mod loading, which are outside this project's control.

Better Speech Chat brings your voice into the game

hold a key to talk, and your audio travels over the game's built-in data channel to everyone on the server in real time; the server mixes all active speakers and streams the result back. You can also enable live speech-to-text so subtitles show on screen who said what. One project, two builds: a server plugin and a client mod, delivering a consistent experience from server to player.

Quick Start

Important

BSChat ships as two independent builds — server and client. Both must be installed and running on the same LeviLamina baseline, or the handshake will fail.

  1. Install LeviLamina on your server (baseline 26.51.6).
  2. Install LeviLamina client on each player's Bedrock client.
  3. Install the matching build: server → plugins/bschat/, client → mods/bschat/.
  4. Restart, join the world, and hold V to talk; release to go quiet. Press J to open the voice settings panel.

Full installation and configuration steps are in the Getting Started guide.

Features

  • Real-time voice — talk the moment you join, near-zero latency, even with many speakers at once.
  • Push-to-talk (PTT) — hold V to speak, release to mute; full control over your microphone.
  • Bandwidth efficient — heavily compressed audio, nearly zero traffic when nobody is talking.
  • No extra ports — voice reuses the game's built-in connection, no player-side setup.
  • Live subtitles — server-side offline transcription shown as on-screen subtitles, so nothing is missed.
  • Server and client builds — one project, two builds, ready to deploy.
  • Graceful degradation — microphone, model, or network issues isolate themselves and never take down the game.
  • Internationalization — player-facing text goes through the LeviLamina i18n system.

This Release

v0.1.3-mc26.51 moves both builds onto the LeviLamina 26.51 line (MC 26.51.x). Voice behaviour, the wire protocol and the configuration format are unchanged — this is a host-version migration, and the install steps are the same as before apart from the LeviLamina baseline. The 26.51 SDK turned out to be API-compatible for everything this mod uses, so no code changes were needed; the two builds compile clean with no new warnings, and both the event ID bindings and the build flavour were verified against the 26.51.6 runtime. v0.1.3-mc26.40 is the same feature version on the MC 26.40 line: it fixes four SDK behaviour changes that would otherwise break the mod on that host — event listeners now bind to the SDK's canonical event IDs (the previous bindings resolved to nothing, so listeners failed to register silently on both ends), the hand-written Packet::getRuntimeId fallback is gone now that the SDK exports it, and the HUD text/icon drawing paths were ported to the narrowed RectangleArea, AppPlatform::loadImage and TexturePtr APIs. v0.1.2 hands speech-to-text model selection to the server operator: the server package ships Install-SttModel.cmd; run it, pick a tier, and it downloads the sherpa-onnx runtime plus the chosen model and writes the resulting configuration. Five tiers are offered — Chinese at three size/accuracy points, plus Chinese-English and Chinese-English-Cantonese — all true streaming models from sherpa-onnx's online recognizer rather than VAD-simulated streaming. The server no longer hardcodes the transducer family: a new sttModel.modelType field selects any online model family, and existing configurations keep working unchanged. v0.1.1 pinned the voice protocol to v1 as a stable, append-only contract and completed capability negotiation on both ends: the client declares what it supports, the server answers with the common subset, and only negotiated features are enabled — so newer and older builds keep talking to each other, with base voice preserved whenever an optional feature is unavailable. Full history is in the Changelog.

Important

This is still a test release and configuration or new features may still change, but the voice protocol is pinned to v1 and only grows in a backwards-compatible way. Please keep an eye on the changelog after use.

Compatibility

EndBuildInstall path
Server (BDS)Server buildplugins/bschat/
Client (Bedrock)Client buildmods/bschat/

Both are built for Windows x64 and run on LeviLamina 26.51.6.

Releases are published per Minecraft version line, and the version suffix says which one a build targets: v0.1.3-mc26.51 is the MC 26.51.x line. A build from another line will not load on this one — both ends of a voice session must run the same line.

Tip

No separate port or UDP channel is required — voice reuses the game's built-in connection.

Build From Source

Build on Windows x64 with xmake; use --target_type to produce the server or client build. Commands, output layout, and dependencies are in the Building guide.

Commands

CommandDescription
/bsc testRun the end-to-end self-check on your client; the result goes to its log.
/bsc play <file>Play a WAV file through the voice downlink (files under <server config>/audio/, or an absolute path).
/bsc stopStop the running WAV playback.
/bsc adminOpen the admin panel; operators only.

The following commands are planned and will ship as development proceeds:

CommandDescription
/bsc helpShow voice chat command help.
/bsc mute <player>Force-mute a player.
/bsc unmute <player>Unmute a player.
/bsc toggleToggle your own microphone.

Languages

  • Server: English, 简体中文
  • Client: English, 简体中文

Player-facing text is wired through the LeviLamina i18n system and ships with both builds.

Frequently Asked Questions

What is BSChat?

It is an in-game real-time voice chat mod for Minecraft Bedrock on Windows x64 LeviLamina. Players hold a key to talk; audio goes up over the game's built-in data channel, is mixed server-side, and streams back to all online players, with optional live speech-to-text subtitles.

Do I need to open ports or configure a UDP channel?

No. Voice uses the game's built-in data channel, with no extra network configuration on either side.

Does talk use bandwidth when nobody is speaking?

Almost none. Audio is heavily compressed, so idle moments cost near-zero downstream data.

How do I enable subtitles?

Subtitles are transcribed by the server from a speech-to-text model. That model is not bundled — download it with the installer shipped in the server package. The step is optional; voice chat works without it.

  1. On the server, open a command prompt in the same folder as bschat.dll (usually plugins/bschat/) and run:

    Install-SttModel.cmd
    
  2. A menu of model tiers appears. Type a number and press Enter:

    Your situationPick
    Players mostly speak Chinese2
    Players mix Chinese and English4
    Cantonese speakers5
    Low CPU or limited bandwidth1
    Chinese only, accuracy first, strong CPU3

    The download is 25–570 MB and shows progress. When it finishes:

    安装完成。
    请重启服务端使配置生效,并确认客户端已开启字幕。
    

    To skip the menu, pass the tier id, for example Install-SttModel.cmd bilingual-zh-en.

  3. Restart the server. The model loads at startup.

  4. In the client, press J and make sure subtitles are on.

The model, runtime and configuration all land inside the mod folder; nothing else on the server is touched. Re-run the script to switch tiers. Deleting stt/ is harmless — it only holds re-downloadable weights.

Full walkthrough, including troubleshooting, is in docs/getting-started.md.

Can I change the talk key?

Yes — press J in game to open the voice settings panel and bind another key, or edit pttKey and settingsKey in the client config.json.

Development Status and Roadmap

  • The core voice engine, protocol, both adaptation layers and the unit tests are implemented; real device tuning of latency and audio quality is the next step.
  • Planned later: proximity/distance audio, environmental reverb, VAD voice detection, and multi-room channels.

Tip

Testing focus: when reporting latency, artifacts, or subtitle issues, please include both build versions, LeviLamina versions, logs, and your microphone/network environment.

Known Limitations

  • No stable release yet; configuration and new features may still change, but the v1 voice protocol only ever grows in a backwards-compatible way.
  • Subtitles show the text only, without the speaker's name.
  • The admin panel exposes the server voice switch only.
  • No proximity/distance attenuation or environmental reverb yet (interfaces reserved for later versions).
  • VAD automatic voice detection is wired but off by default.
  • No standalone UDP channel and no multi-room/channel system yet.
  • Mobile/companion capture is not yet supported.
  • Compatibility must be re-verified after Minecraft or LeviLamina updates.

To report a reproducible issue, please open an Issue.

Contributing

Contributions are welcome — ask questions via issues and open pull requests.

Join the community on QQ group 861900673.

Acknowledgements

Special thanks to the maintainers and community of LeviLamina for the native mod development platform and tooling; and to Opus, sherpa-onnx, ONNX Runtime, and nlohmann/json for providing audio codec, offline transcription, and JSON parsing capabilities.

License

BSChat is free software released under the GNU Affero General Public License v3.0 (or any later version). See LICENSE for details. Third-party dependencies remain under their own licenses; see THIRD_PARTY_NOTICES.md and the licenses/ directory.

Install Better Speech Chat

Run this in your server or client folder with lip:

lip install github.com/copper-lamp/BSChat@0.1.3-mc26.51
Download from GitHub