[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]
default = []
cli = ["dep:clap"]
logging = ["dep:tracing-subscriber"]
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",
]
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