[package]
name = "speechcore"
version = "0.1.1"
edition = "2021"
description = "Reusable Rust speech-to-text runtime with audio capture, VAD, backend selection, model provisioning, and transcript streaming."
license = "MIT OR Apache-2.0"
readme = "README.md"
repository = "https://github.com/0xPD33/speechcore"
homepage = "https://github.com/0xPD33/speechcore"
documentation = "https://docs.rs/speechcore"
keywords = ["speech-to-text", "transcription", "vad", "whisper", "onnx"]
categories = ["multimedia::audio", "api-bindings"]
exclude = ["target/", ".github/", "AGENTS.md"]
[package.metadata.docs.rs]
no-default-features = true
[dependencies]
portaudio = { version = "0.8.0", optional = true }
ct2rs = { version = "0.9.11", features = ["whisper"], optional = true }
ndarray = { version = "0.16.1", optional = true }
serde_json = { version = "1.0", optional = true }
reqwest = { version = "0.12", features = ["stream", "json"], optional = true }
tokio = { version = "1", features = ["full"] }
futures-util = { version = "0.3.31", optional = true }
anyhow = "1"
serde = { version = "1.0.218", features = ["derive"] }
parking_lot = "0.12"
rustfft = { version = "6.4", optional = true }
ort = { version = "2.0.0-rc.10", features = ["ndarray"], optional = true }
chrono = "0.4"
num_cpus = "1"
whisper-rs = { version = "0.15.1", optional = true }
hound = { version = "3.5", optional = true }
tokenizers = { version = "0.22", optional = true }
tracing = "0.1"
[dev-dependencies]
tracing-subscriber = { version = "0.3", features = ["fmt"] }
[[example]]
name = "manual_session"
required-features = ["runtime", "backend-whisper-cpp"]
[features]
default = []
runtime = ["audio-capture", "model-downloads", "vad-silero", "wav-output"]
all-backends = [
"backend-ctranslate2",
"backend-moonshine",
"backend-parakeet",
"backend-nemotron",
"backend-whisper-cpp",
]
audio-capture = ["dep:portaudio"]
model-downloads = ["dep:reqwest", "dep:futures-util"]
vad-silero = ["dep:ort", "dep:ndarray"]
wav-output = ["dep:hound"]
std = ["std_detect"]
std_detect = []
backend-ctranslate2 = ["dep:ct2rs"]
backend-moonshine = ["dep:ort", "dep:ndarray", "dep:serde_json", "dep:tokenizers"]
backend-parakeet = ["dep:ort", "dep:ndarray", "dep:rustfft"]
backend-nemotron = ["dep:ort", "dep:ndarray", "dep:rustfft", "model-downloads"]
backend-whisper-cpp = ["dep:whisper-rs", "model-downloads"]
whisper-cpp-vulkan = ["backend-whisper-cpp", "whisper-rs/vulkan"]
whisper-cpp-openblas = ["backend-whisper-cpp", "whisper-rs/openblas"]
ort-cpu = ["dep:ort"]
ort-cuda = ["dep:ort", "ort/cuda"]
ort-tensorrt = ["dep:ort", "ort/tensorrt"]