[package]
name = "rustvani"
version = "0.1.2"
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]
default = ["vad-silero", "transport-websocket", "stt-sarvam", "llm-openai", "tts-deepgram", "dhara"]
vad-silero = ["dep:ort", "dep:ndarray"]
transport-websocket = ["dep:axum", "dep:tower-http", "dep:tokio-tungstenite"]
stt-sarvam = ["dep:reqwest"]
llm-openai = ["dep:reqwest"]
tts-deepgram = ["dep:tokio-tungstenite"]
tts-sarvam = ["dep:tokio-tungstenite"]
dhara = ["dep:thiserror"]
db-postgres = ["dep:tokio-postgres", "dep:postgres-native-tls", "dep:native-tls"]
[dependencies]
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["rt"] }
async-trait = "0.1"
async-recursion = "1"
futures = "0.3"
log = "0.4"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
base64 = "0.22"
hound = "3"
nnnoiseless = "0.1"
rubato = "0.14"
rustfft = "6"
flate2 = "1"
matrixmultiply = "0.3"
ort = { version = "=2.0.0-rc.10", features = ["ndarray", "download-binaries"], optional = true }
ndarray = { version = "0.16", optional = true }
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 }
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls", "http2"], optional = true }
thiserror = { version = "1", optional = true }
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 }
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1", features = ["serde", "v4"] }
[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util"] }
env_logger = "0.11"
dotenvy = "0.15"