scribble 0.5.3

High-level Rust API for audio transcription using Whisper
Documentation
[package]
name = "scribble"
version = "0.5.3"
edition = "2024"
rust-version = "1.85"

include = [
  "src/**",
  "tests/**",
  "README.md",
  "CHANGELOG.md",
  "AGENTS.md",
  "STYLEGUIDE.md",
  "SECURITY.md",
  "CONTRIBUTING.md",
  "CODE_OF_CONDUCT.md",
  "LICENSE",
  "banner.png",
  "footer.png",
  "demo/**",
]

description = "High-level Rust API for audio transcription using Whisper"
license = "MIT"
repository = "https://github.com/itsmontoya/scribble"
documentation = "https://docs.rs/scribble"
readme = "README.md"
authors = ["Josh Montoya <josh@montoya.io>"]
keywords = ["whisper", "transcription", "speech-to-text"]
categories = ["multimedia::audio"]

[package.metadata.docs.rs]
features = ["bin-scribble-cli", "bin-model-downloader", "bin-scribble-server"]

[dependencies]
anyhow = "1"
axum = { version = "0.8.7", optional = true, features = ["multipart"] }
clap = { version = "4.5", optional = true, features = ["derive"] }
hound = "3"
num_cpus = "1"
whisper-rs = { version = "0.15" }
serde_json = "1"
serde = { version = "1", features = ["derive"] }
tokio = { version = "1", optional = true, features = [
  "rt-multi-thread",
  "macros",
  "io-util",
  "net",
  "sync",
] }
tokio-util = { version = "0.7", optional = true, features = ["io", "io-util"] }
futures-util = { version = "0.3", optional = true }
uuid = { version = "1", features = ["v4"] }
indicatif = { version = "0.18", optional = true }
reqwest = { version = "0.13.1", optional = true, default-features = false, features = [
  "blocking",
  "rustls",
] }
audioadapter = "2"
audioadapter-buffers = "2"
rubato = "1.0.0"
symphonia = { version = "0.5", features = ["all"] }
tempfile = "3"
prometheus = { version = "0.14", optional = true }
tower-http = { version = "0.6", optional = true, features = ["trace"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", optional = true, features = [
  "env-filter",
  "json",
] }
thiserror = "2"

[features]
# Keep the default build lean for library consumers. Binaries opt into their own feature sets.
default = []

# Shared helpers for binaries.
cli = ["dep:clap"]
logging = ["dep:tracing-subscriber"]

# Binary feature groups.
bin-scribble-cli = ["cli", "logging"]
bin-model-downloader = ["cli", "dep:indicatif", "dep:reqwest"]
bin-scribble-server = [
  "cli",
  "logging",
  "dep:axum",
  "dep:futures-util",
  "dep:prometheus",
  "dep:tokio",
  "dep:tokio-util",
  "dep:tower-http",
]

# GPU acceleration features (pass-through to whisper-rs).
cuda = ["whisper-rs/cuda"]
metal = ["whisper-rs/metal"]
hipblas = ["whisper-rs/hipblas"]
vulkan = ["whisper-rs/vulkan"]
coreml = ["whisper-rs/coreml"]

[[bin]]
name = "scribble-cli"
path = "src/bin/scribble-cli.rs"
required-features = ["bin-scribble-cli"]

[[bin]]
name = "model-downloader"
path = "src/bin/model-downloader.rs"
required-features = ["bin-model-downloader"]

[[bin]]
name = "scribble-server"
path = "src/bin/scribble-server/main.rs"
required-features = ["bin-scribble-server"]

[profile.release]
codegen-units = 1
lto = true

[profile.release-quick]
inherits = "release"
codegen-units = 16
lto = false