Files
voice-cat/dotnet
Talon dd811a0bb8
.NET port / test (macos-latest) (push) Canceled after 0s
.NET port / test (ubuntu-24.04) (push) Canceled after 0s
.NET port / test (windows-latest) (push) Canceled after 0s
.NET port / apple-client (push) Canceled after 0s
Fix audio clock drift and adaptive jitter buffering
2026-09-20 16:26:03 +02:00
..

VoiceCat .NET implementation

This is the supported VoiceCat implementation. It contains the protocol, TLS and media cryptography, server, client state, codec/DSP bindings, audio engine, and headless CLI.

Build and test

Stage the small native Opus/RNNoise library, then build the managed solution:

./dotnet/build-native.ps1
dotnet restore dotnet/VoiceCat.slnx --locked-mode
dotnet build dotnet/VoiceCat.slnx -c Release --no-restore
dotnet test dotnet/VoiceCat.slnx -c Release --no-build
./dotnet/check-licenses.ps1

The native source lives in native/media and native/rnnoise; build output is staged under dotnet/artifacts/native. The shim exposes only fixed Opus/DRED and RNNoise entry points. It does not contain protocol, networking, cryptography, client state, or server behavior.

For an explicit native build:

cmake -S native/media -B dotnet/artifacts/native-build -DCMAKE_BUILD_TYPE=Release
cmake --build dotnet/artifacts/native-build --target voicecat_media --parallel 2
cmake --install dotnet/artifacts/native-build --component DotnetMedia \
  --prefix dotnet/artifacts/native

Projects

  • VoiceCat.Protocol — generated protobuf types and bounded control framing.
  • VoiceCat.Crypto — BouncyCastle TLS 1.3/exporters, TOFU, identity, AEAD, replay protection, and Argon2id.
  • VoiceCat.Codec / VoiceCat.Dsp — managed owners of the narrow native media ABI.
  • VoiceCat.Audio — jitter, loss recovery, mixing, input activation, and PCM rings.
  • VoiceCat.Core — managed client connection and session state.
  • VoiceCat.Server — TLS control, encrypted UDP relay, SQLite state, administration, and CLI.
  • VoiceCat.Cli — supported interactive and deterministic headless client.
  • VoiceCat.Tests — managed unit, integration, allocation, and end-to-end behavior tests.

proto/voicecat.proto is the only protobuf schema. Generated C# is build output.

Run

dotnet run --project dotnet/src/VoiceCat.Server -- --data-dir ./voicecat-data
dotnet run --project dotnet/src/VoiceCat.Cli -- \
  --host 127.0.0.1 --port 8384 --nickname Alice --trust-first

Use --help on either executable for current options. Server publishing is handled by dotnet/publish-server.ps1 and the platform packaging files under packaging/.

Compatibility policy

The managed implementation is the source of truth. Frozen vectors under tests/VoiceCat.Tests/Fixtures protect concrete wire, Argon2id, and RNNoise behavior, but the repository no longer builds or tests against the retired C++ implementation. Protocol or persistence changes must be versioned when current supported releases need migration; they do not need to retain compatibility with unsupported pre-rewrite releases.