rustvani 0.4.0-dev.0

Voice AI framework for Rust — real-time speech pipelines with STT, LLM, TTS, and Dhara conversation flows
[package]

name = "rustvani"

version = "0.4.0-dev.0"

edition = "2021"

license = "BSD-2-Clause"

description = "Voice AI framework for Rust — real-time speech pipelines with STT, LLM, TTS, and Dhara conversation flows"

repository = "https://github.com/Allenmylath/rustvani"

homepage = "https://github.com/Allenmylath/rustvani"

documentation = "https://docs.rs/rustvani"

readme = "README.md"

keywords = ["voice", "ai", "speech", "pipeline", "conversational-ai"]

categories = ["multimedia::audio", "asynchronous", "api-bindings"]

exclude = [

    "src/bin/*", "dhara/*", "tests/*", "examples/*", ".env*",

    "piper-models/*", "assets/*", "src/vad/data/silero.onnx",

    "src/turn/smart_turn_weights.bin.gz",

]



# ---------------------------------------------------------------------------

# Features

# ---------------------------------------------------------------------------

[features]

default = ["vad-silero", "transport-websocket", "stt-sarvam", "stt-60db", "stt-deepgram", "llm-openai", "tts-deepgram", "dhara", "db-postgres"]



# Core VAD

vad-silero = ["dep:ort", "dep:ndarray"]



# Transport

transport-websocket = ["dep:axum", "dep:tower-http", "dep:tokio-tungstenite"]



# Services

stt-sarvam = ["dep:reqwest"]

stt-60db = ["dep:tokio-tungstenite"]

stt-deepgram = ["dep:tokio-tungstenite"]

stt-gnani = ["dep:tokio-tungstenite"]

llm-openai = ["dep:reqwest"]

tts-deepgram = ["dep:tokio-tungstenite"]

tts-sarvam = ["dep:tokio-tungstenite"]

tts-piper = ["dep:ort"]



# Dhara conversation flow system

dhara = ["dep:thiserror"]



# Database tools (optional — not in default)

db-postgres = ["dep:tokio-postgres", "dep:postgres-native-tls", "dep:native-tls"]





# ---------------------------------------------------------------------------

# Dependencies

# ---------------------------------------------------------------------------

[dependencies]

# Core (always required)

tokio           = { version = "1",   features = ["full"] }

tokio-util      = { version = "0.7", features = ["rt"] }

arc-swap        = "1"

bytes           = "1"

async-trait     = "0.1"

async-recursion = "1"

futures         = "0.3"

log             = "0.4"

serde           = { version = "1",   features = ["derive"] }

serde_json      = "1"

base64          = "0.22"



# Audio processing (always required for voice pipeline)

hound           = "3"

nnnoiseless     = "0.1"

rubato          = "0.14"

rustfft         = "6"

flate2          = "1"

matrixmultiply  = "0.3"



# VAD — Silero via ONNX Runtime

ort             = { version = "=2.0.0-rc.10", features = ["ndarray", "download-binaries"], optional = true }

ndarray         = { version = "0.16", optional = true }



# Transport — WebSocket (axum server + tungstenite)

axum            = { version = "0.7", features = ["ws"], optional = true }

tower-http      = { version = "0.5", features = ["cors"], optional = true }

tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"], optional = true }



# HTTP client (LLM + STT services)

reqwest         = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls", "http2"], optional = true }



# Dhara conversation flow system

thiserror       = { version = "1", optional = true }



# Database — Postgres (optional tool)

tokio-postgres      = { version = "0.7", features = ["with-serde_json-1", "with-chrono-0_4", "with-uuid-1"], optional = true }

postgres-native-tls = { version = "0.5", optional = true }

native-tls          = { version = "0.2", optional = true }



# Used by db-postgres tools

chrono          = { version = "0.4", features = ["serde"] }

uuid            = { version = "1",   features = ["serde", "v4"] }



# Logging and env helpers (used by release binaries — excluded from publish via src/bin/*)

env_logger      = "0.11"

dotenvy         = "0.15"



# ---------------------------------------------------------------------------

# Dev dependencies

# ---------------------------------------------------------------------------

[dev-dependencies]

tokio      = { version = "1", features = ["full", "test-util"] }