Implementer synops-audio CLI-verktøy (oppgave 21.2)
Erstatter maskinrommet/src/audio.rs med frittstående CLI-verktøy som følger unix_filosofi-mønsteret fra synops-transcribe. Input: --cas-hash <hash> --edl <json> Output: JSON med ny CAS-hash til stdout Inkluderer: - Fullstendig parametervalidering (NaN/Inf, grenseverdier) - FFmpeg filtergraf i riktig rekkefølge (cuts→NR→EQ→comp→norm→fades) - To-pass loudnorm for høykvalitets normalisering - Silence detection → cut-konvertering med 200ms margin - Atomisk CAS-lagring via temp-fil + rename - --write flagg for DB-operasjoner (node + edge + ressurslogg) - 21 enhetstester for validering, filtergraf og CAS-stier Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8fc3237033
commit
34b086d046
4 changed files with 1131 additions and 2 deletions
3
tasks.md
3
tasks.md
|
|
@ -242,8 +242,7 @@ kaller dem direkte. Samme verktøy, to brukere.
|
|||
### Prosessering (erstatter jobbkø-handlere)
|
||||
|
||||
- [x] 21.1 `synops-transcribe`: Whisper-transkribering. Input: `--cas-hash <hash> --model <model> [--initial-prompt <tekst>]`. Output: JSON med segmenter. Skriver segmenter til PG, oppdaterer node metadata. Erstatter `transcribe.rs`.
|
||||
- [~] 21.2 `synops-audio`: FFmpeg-prosessering. Input: `--cas-hash <hash> --edl <json>`. Output: ny CAS-hash. Erstatter `audio.rs`. Inkluder parametervalidering (fase 17.2–17.3).
|
||||
> Påbegynt: 2026-03-18T09:02
|
||||
- [x] 21.2 `synops-audio`: FFmpeg-prosessering. Input: `--cas-hash <hash> --edl <json>`. Output: ny CAS-hash. Erstatter `audio.rs`. Inkluder parametervalidering (fase 17.2–17.3).
|
||||
- [ ] 21.3 `synops-render`: Tera HTML-rendering. Input: `--node-id <uuid> --theme <tema>`. Output: CAS-hash for rendret HTML. Erstatter `publishing.rs`.
|
||||
- [ ] 21.4 `synops-rss`: RSS/Atom-generering. Input: `--collection-id <uuid>`. Output: XML til stdout. Erstatter `rss.rs`.
|
||||
- [ ] 21.5 `synops-tts`: Tekst-til-tale. Input: `--text <tekst> --voice <stemme>`. Output: CAS-hash for lydfil. Erstatter `tts.rs`.
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ eller maskinrommet-API. Ligger i PATH via symlink eller direkte kall.
|
|||
| Verktøy | Beskrivelse | Status |
|
||||
|---------|-------------|--------|
|
||||
| `synops-transcribe` | Whisper-transkribering av lydfil fra CAS | Ferdig |
|
||||
| `synops-audio` | FFmpeg lydprosessering med EDL (cut, normalize, EQ, m.m.) | Ferdig |
|
||||
|
||||
## Konvensjoner
|
||||
- Navnekonvensjon: `synops-<verb>` (f.eks. `synops-context`)
|
||||
|
|
|
|||
20
tools/synops-audio/Cargo.toml
Normal file
20
tools/synops-audio/Cargo.toml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
[package]
|
||||
name = "synops-audio"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[[bin]]
|
||||
name = "synops-audio"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "4", features = ["derive"] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid", "chrono", "json"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
uuid = { version = "1", features = ["v7", "serde"] }
|
||||
sha2 = "0.10"
|
||||
hex = "0.4"
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
1109
tools/synops-audio/src/main.rs
Normal file
1109
tools/synops-audio/src/main.rs
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue