Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@
"description": "Audio processing suite covering the full speech pipeline: ASR transcription (Qwen3, StepFun) with batch-mode guards against music-only repetition-loop hallucinations, speaker diarization and CAM++ voiceprint identification for multi-speaker recordings, transcript error correction, structured meeting minutes generation, and TTS voice synthesis (StepFun). Install once for the complete audio workflow.",
"source": "./daymade-audio",
"strict": false,
"version": "1.18.0",
"version": "1.18.1",
"category": "suite",
"keywords": [
"suite",
Expand Down
4 changes: 2 additions & 2 deletions daymade-audio/transcript-fixer/.security-scan-passed
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Security scan passed
Scanned at: 2026-08-04T15:40:34.502448+00:00
Scanned at: 2026-08-04T16:53:41.245730+00:00
Tool: gitleaks + pattern-based validation
Content hash: 57c8c15e62de7d06c2576504286055c232ea24160a81ae4ddf2bf06175c1a201
Content hash: 4681602d938e85aa1012c164c232ae86c59ce2b12d906d5fc4337225c12240de
1 change: 1 addition & 0 deletions daymade-audio/transcript-fixer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Upstream-corrected inputs get a raw-diff pass (Native AI Correction step 2, doc-only).** When the transcript already passed through an automated corrector (a sync pipeline's pre-classify stage, a previous Stage 3 API run), the input is no longer raw ASR — upstream corrections are baked in with no evidence trail. The workflow now requires diffing against the raw source before triage, with the two opposite consequences spelled out: every upstream entity swap becomes a suspect (an upstream AI "correction" can be a fluent wrong guess — real case: raw 「新的车辆」 smoothed into 「新出来的反馈」, grammatical and plausible but wrong, caught only by the raw diff), and already-correct fixes are checked *before* being proposed again.
- **Feishu-minute audio wiring recipe for dashboard playback (doc-only).** `lark-cli minutes +download` end-to-end, run from a cache/state directory (its `--output` only accepts a relative path inside the current directory); when lark-cli's SSRF guard refuses Feishu's signed-download host with `blocked download URL: local/internal host is not allowed` (the host's name literally starts with `internal-`), `--url-only` prints a JSON envelope whose `download_url` field `curl` can fetch directly; the file stays outside any docs repo; `ffprobe` duration ≈ the transcript's last timestamp verifies timeline pairing before `Q` playback is trusted.
- **Quick Start notes absolute script paths for cwd-resetting harnesses (doc-only).** The relative `scripts/...` examples fail with `Failed to spawn: scripts/fix_transcription.py` in agent harnesses whose shell resets the working directory between calls; substitute the absolute path (`$CLAUDE_SKILL_DIR/scripts/...`).
- **Native AI Correction: three actionability fixes from real two-transcript use (doc-only).** (1) Step 2 makes the false-positive feedback loop explicit — a Stage 1 false positive is debt you owe the dictionary: disable the bad rule in the same session with `--report-false-positive`, passing the rule's **stored from→to pair** (as `*_changes.md` From/To shows it, NOT "wrong→right" semantics — the `买买→卖卖` FP stored `from=买买, to=卖卖` → pass `"买买" "卖卖"`); one call disables it. (2) Step 5 adds a "common-word batch where most occurrences are the domain term but a few are genuine" pattern: `grep -n` every occurrence, judge each, then `replace_all` + revert the genuine minority (real case: `公开` ×11 — 10 工勘 + 1 real 公开渠道). (3) Step 7 ships a minimal inline `items.json` example (line/original/suggested/context/kind/evidence) + an `actions`-optional note, so `--enqueue-review` no longer requires a jump to references — and it names the two keys the silent-drop rule catches one field over: the verdict is `suggested`, not `suggestion`, and the action pack's key is `actions`, not `action_pack`. Also sweeps `references/dictionary_guide.md`, whose `--report-false-positive` row still taught the "错→对" argument order this entry's item (1) repudiates.
- **Second-pass residual adjudication heuristics + trap-scan (Native AI Correction step 6, doc-only).** The cold subagent's residual list is now explicitly *candidates, not conclusions* (one real run: 10 rows → 4 accepted), with six production-validated accept/reject rules: near-homophone + in-document self-proof accepts; sound-distance falsifies implausible swaps (the sound test now cuts both ways); the **ASR-capability counter-check** (a word the same engine rendered correctly nearby is inside its recognition range, so a different rendering is more likely what was said — a strong prior, not a proof); intelligible real words stay; evidence-free reconstructions die; minimal edit only (never insert unspoken words). New fast-tier **trap-scan**: grep the file for the domain context file's documented trap patterns before (or instead of) a full cold re-read.
- **User-verdict compounding loop (step 4, doc-only).** A user's mid-session resolution of an uncertain item is now treated as the strongest source and cashed in three ways immediately: apply the fix → persist the variant (roster for recurring people, `--add --domain` for project terms) → record it in the ledger/roster/context with verbatim wording, date, and a ✅ user-confirmed marker. Two refinements: collision-check the FROM side against real people in other projects before dict-adding (real-name → real-name fixes go to the domain context as a trap, never the dictionary); confirmed-*correct* entities get a one-line note too, so the next run doesn't re-ask. Dictionary decision matrix gains a "real name → different real name: never a rule" row.
- **`--enqueue-review` item schema documented** (`references/script_parameters.md` §Review Queue Item Schema): full field/alias table (only `original` required), the silent-drop gotcha for unknown keys (`line`, not `line_hint`), temp-dir items skipped entirely, CLI `--domain` fills only items without their own, empty-`suggested` + no-action-pack errors at resolve time, and the five-field dedup key. SKILL.md step 7 cross-references it.
Expand Down
Loading
Loading