skald-core::narrate ships a thin reqwest client + voice DB access (get_by_name, get_default, get_by_id). The boundary is the f5-tts container's purpose-built FastAPI sidecar (python lives there because torch + transformers + safetensors do); skald never touches python. CLI: skald narrate --chapter <uuid> [--voice slug] [--speed 1.0]. Voice resolution: --voice flag → story.preferred_voice_id → system default. Persists narration_runs row (engine='f5-tts', engine_version pinned, status: running → succeeded|failed). Output path stored is the f5-tts container's view (/audio/<story>-<n>-<run>.wav); web playback wiring deferred.
25 lines
745 B
TOML
25 lines
745 B
TOML
[package]
|
|
name = "skald-core"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
repository.workspace = true
|
|
description = "Skald's shared lib: db models, schema migrations, markdown ingest, context assembly."
|
|
|
|
[dependencies]
|
|
tokio = { workspace = true }
|
|
sqlx = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
anyhow = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tracing = { workspace = true }
|
|
chrono = { workspace = true }
|
|
uuid = { workspace = true }
|
|
regex = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
clawdforge = { path = "../vendor/clawdforge" }
|
|
|
|
[dev-dependencies]
|
|
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
|