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.

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 and ships as a single binary: speech-to-text (gigastt) and speaker diarization (polyvoice) — the two projects I actively build. Local-first by default: zero cloud APIs, zero vendor lock-in, models ship with the binary. On the side — agent & dev tooling experiments in Rust / Go (see the fold below).

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

Live WebSocket streaming · RTF ~0.10 (≈10× real-time on M1 CPU) · 3.55% WER (golos_crowd_1k, in-domain) · leads on far-field / phone / YouTube in its like-for-like 6-engine benchmark · one binary · no cloud

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, negligible WER change · multilingual heads (ru/en/kk/ky/uz) · REST / SSE + async jobs API · punctuation, casing & ITN out of the box · Android FFI + NNAPI · CPU / CoreML / CUDA · cargo / brew / npm / Docker

polyvoice — speaker diarization for Rust

Who spoke when, on CPU, without Python · ~18.5% DER VoxConverse-test (collar 0; pyannote 3.1 = 11.3%) · ~30 MB of models

cargo add polyvoice    # Rust
pip install polyvoice  # Python

Silero VAD + Pyannote powerset segmentation + WeSpeaker embeddings · K-means / AHC / NME-SC / VBx · streaming + overlap detection · who-said-what transcription via companion ASR crates · Rust / Python / C FFI / CLI / MCP server · crates.io + PyPI + Docker

Powers the diarization feature in phonex, nihostt and phostt.


More on-device speech

  • 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 26 3

  2. polyvoice polyvoice Public

    Speaker diarization for Rust — who spoke when. ONNX-powered: Silero VAD, WeSpeaker embeddings, Pyannote segmentation, K-means/AHC clustering, overlap detection. Python bindings & CLI included.

    Rust 4 1