Skip to content
View ekhodzitsky's full-sized avatar

Block or report ekhodzitsky

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ekhodzitsky/README.md

On-Device Speech AI · STT & Speaker Diarization · Senior Backend


About

Rust — on-device speech AI that runs fully offline after a one-time model download, shipped as a single binary: speech-to-text (gigastt) and speaker diarization (polyvoice) — the two projects I actively build — plus the zero-dependency WAVE codec underneath them (ryf). Local-first by default: no cloud APIs at runtime, no vendor lock-in. On the side — agent & dev tooling experiments in Rust / Go (see the fold below).

In private development — Russian TTS on CosyVoice3, punctuation & casing restoration for ASR output, English-to-Russian video dubbing, semantic search over call recordings.

Track record (Apr–Sep 2026, three speech repos) — ~1,400 commits · ~160k lines of Rust · ~3,000 tests · 100+ tagged releases · weekly WER / DER benchmarks in CI · issues and feature requests from external users.

Prior production backend — Node.js / TypeScript (NestJS, Moleculer) and Python (FastAPI, Django): REST APIs and gateways from scratch, message brokers, payment & telephony integrations, large legacy refactors, and email / document (PDF/DOCX) pipelines.


gigastt — on-device Russian speech recognition

file RTF ~0.10 (≈10× real-time on M1 CPU) · 3.55% WER clean read (statistical tie vs Vosk) · phone calls 18.5% — beats Vosk and T-one · held-out Common Voice 2.63% — beats Vosk and faster-whisper · like-for-like 6-engine bench · one binary · no cloud at runtime

cargo install gigastt && gigastt serve
# WebSocket: ws://127.0.0.1:9876/v1/ws
# REST API:  http://127.0.0.1:9876/v1/transcribe

GigaAM v3 + ONNX Runtime · INT8 ~225 MB · opt-in multilingual heads (ru/en/kk/ky/uz) · WebSocket streaming with Silero VAD end-of-utterance · speaker diarization via polyvoice · REST / SSE + async jobs · optional punctuation, casing & ITN · Android FFI + NNAPI · CPU / CoreML / CUDA · cargo / brew / npm / pip / Docker · 64 releases, 1.3k tests

polyvoice — speaker diarization for Rust

Who spoke when, on CPU, without Python · ~15% DER VoxConverse-test (collar 0; pyannote 3.1 = 11.3%) · ~160× real-time on a laptop CPU · ~8.4 MB MIT INT8 models · 7.5k+ crates.io downloads

cargo add polyvoice --features "pipeline-native,vbx"

Powerset segmentation + WeSpeaker embeddings + VBx (AHC / K-means / NME-SC alternatives) · overlap resegmentation · who-said-what via companion ASR crates · Rust / Python / C FFI / CLI / MCP · crates.io + PyPI

Powers the diarization feature in gigastt, phonex, nihostt and phostt.


More on-device speech

  • ryf — WAVE codec, zero default deps · PCM / IEEE float / G.711 / G.722 / GSM 06.10 / ADPCM · RIFF / RF64 / BW64 / Wave64 · ffmpeg as test oracle · WAV ingest for gigastt and polyvoice · crates.io
  • phonex — multilingual on-device STT engine · offline + streaming, single binary, HTTP / gRPC / FFI · crates.io
  • nihostt — Japanese STT server (ReazonSpeech-k2-v2) · WebSocket / REST / SSE · crates.io + Homebrew + Docker
  • phostt — Vietnamese STT server (Zipformer-vi RNN-T) · streaming · crates.io + pypi
  • localmt — offline Android translation SDK · GGUF / llama.cpp via JNI · pre-release
Experiments — agent tooling, backend, archived

Side projects in varying states of maturity; not all actively maintained.

Agent & dev tooling

  • kimi-wire — typed Rust client for the Kimi Code CLI Wire protocol · crates.io · Go twin: kimi-wire-go
  • mcp-guard — guardian & stdio proxy for MCP servers (Go) · process pool, timeouts, tool permissions, rate limits, audit log
  • kimi-lite — Go port of MoonshotAI's kimi-code coding CLI · single binary · MCP + ACP
  • gitr — async typed git wrapper for AI agents · JSON CLI + MCP server · library on crates.io
  • cargo-kimi — Cargo subcommand scoring Rust files 0–100 on contract quality · crates.io
  • coad — written methodology for safe, reviewable, bounded coding-agent work
  • kimi-dotfiles — composable configs, instructions and skills for the Kimi CLI
  • jobsmith — AI job-application assistant for hh.ru · Rust TUI · Typst PDF CVs

Backend

  • go-ozon-marketplace — portfolio pet project: e-commerce backend · 8 Go microservices + Rust API gateway · Saga · Outbox · CQRS · Kafka · ClickHouse · mTLS

Archived

  • omk — Wire-first orchestration for Kimi CLI · archived June 2026 (post-mortem in the README)

Telegram Email

Pinned Loading

  1. gigastt gigastt Public

    Local STT server powered by GigaAM v3.

    Rust 53 5

  2. polyvoice polyvoice Public

    Speaker diarization for Rust — who spoke when, on CPU, without Python. INT8 kernels (~8.4 MB, MIT, ungated). Rust, Python, C FFI, and CLI.

    Rust 19 2

  3. ryf ryf Public

    WAVE to planar f32. G.711, G.722, GSM, ADPCM, RF64. Zero deps.

    Rust