Files
qiming/qiming-mcp-proxy/voice-cli/Cargo.toml
2026-06-01 13:03:20 +08:00

115 lines
2.9 KiB
TOML

[package]
name = "voice-cli"
version = "0.1.28"
edition = "2024"
authors = ["soddygo <soddygo@qq.com>"]
description = "Speech-to-text HTTP service with CLI interface"
license = "MIT"
repository = "https://github.com/nuwax-ai/mcp-proxy"
[package.metadata.dist]
dist = false
[[bin]]
name = "voice-cli"
path = "src/main.rs"
[dependencies]
# Web framework and HTTP handling
axum = { workspace = true }
tower = { workspace = true }
tower-http = { workspace = true }
# OpenAPI documentation generation
utoipa = { workspace = true, features = ["axum_extras", "chrono", "uuid"] }
utoipa-swagger-ui = { workspace = true, features = ["axum"] }
# Async runtime
tokio = { version = "1", features = [
"macros",
"net",
"rt",
"rt-multi-thread",
"signal",
] }
tokio-util = { workspace = true }
# CLI argument parsing
clap = { workspace = true }
# Serialization
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
# Configuration management
config = { version = "0.15", features = ["yaml", "json", "toml"] }
# Logging and tracing
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
tracing-appender = { workspace = true }
tracing-opentelemetry = { workspace = true }
opentelemetry = { workspace = true, features = ["trace"] }
opentelemetry-jaeger = { workspace = true, features = ["rt-tokio"] }
opentelemetry-semantic-conventions = { workspace = true }
# Error handling
anyhow = { workspace = true }
thiserror = { workspace = true }
# 国际化支持
rust-i18n = { workspace = true }
# HTTP client for model downloads
reqwest = { version = "0.12", features = ["json", "stream"] }
# Time handling
chrono = { workspace = true, features = ["serde"] }
# Utilities
bytes = "1.0"
futures = { workspace = true }
uuid = { workspace = true, features = ["v4","v7"] }
base64 = "0.22"
tempfile = "3.0"
dirs = "6.0"
url = "2.5"
# Embedded database for task persistence
# sled = { version = "0.34", features = ["compression"] } # Disabled due to zstd dependency conflict
# Audio format detection with Symphonia
symphonia = { workspace = true }
bincode = { workspace = true }
dashmap = { workspace = true }
infer = "0.19"
# FFmpeg command wrapper
ffmpeg-sidecar = "2.2"
# Task queue and persistence for async processing
apalis = { version = "0.7", features = ["tracing", "limit", "timeout", "catch-panic", "retry", "filter"] }
apalis-sql = { version = "0.7", features = ["sqlite"] }
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "chrono", "uuid"] }
[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["winuser", "processthreadsapi"] }
[dependencies.voice-toolkit]
workspace = true
[dev-dependencies]
tempfile = "3.0"
[features]
default = []
# 方便通过 `-p voice-cli --features <name>` 启用/切换后端
cuda = ["voice-toolkit/cuda"]
metal = ["voice-toolkit/metal"]
vulkan = ["voice-toolkit/vulkan"]