davinci-resolve-mcp 2.93.0 → 2.93.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +1 -1
- package/README.zh-CN.md +2 -2
- package/docs/guides/media-analysis-guide.md +42 -0
- package/install.py +1 -1
- package/package.json +1 -1
- package/src/granular/common.py +1 -1
- package/src/server.py +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
Release history for the DaVinci Resolve MCP Server. The latest release is summarized in the root README; older entries live here to keep the README focused.
|
|
4
4
|
|
|
5
|
+
## What's New in v2.93.1
|
|
6
|
+
|
|
7
|
+
Documentation only; no behavior changed and no Resolve validation required.
|
|
8
|
+
|
|
9
|
+
- **The immediate-retake blind spot is now in the media-analysis guide.** Issue
|
|
10
|
+
#125 asked for three things; the `rank_takes` caveat and the
|
|
11
|
+
`possible_swallowed_retakes` flag shipped in v2.83.0, but the documented
|
|
12
|
+
limitation never did — the guide had zero mentions of retakes, so the only way
|
|
13
|
+
to learn that word timestamps are untrustworthy around an immediate re-read was
|
|
14
|
+
to already be looking at output that flagged one. The new section states what
|
|
15
|
+
whisper does (emits a re-read sentence once, aligns it to the first take, and
|
|
16
|
+
absorbs pause-plus-second-take into a single word), names every feature that
|
|
17
|
+
inherits it, and records why silence detection cannot substitute — the
|
|
18
|
+
swallowed span measured **−12.1 dB** against adjacent speech at −16.7 dB, and a
|
|
19
|
+
silence pass recalled **3 of 17**. It is explicit that the flag is never a cut
|
|
20
|
+
point, and that no flags is weak evidence rather than proof.
|
|
21
|
+
|
|
5
22
|
## What's New in v2.93.0
|
|
6
23
|
|
|
7
24
|
`source_end` is a source frame again, and the guidance v2.91.0 shipped about WAV
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
English | [简体中文](README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
[](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
|
|
6
6
|
[](https://www.npmjs.com/package/davinci-resolve-mcp)
|
|
7
7
|
[](docs/reference/api-coverage.md)
|
|
8
8
|
[-blue.svg)](#server-modes)
|
package/README.zh-CN.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | 简体中文
|
|
4
4
|
|
|
5
|
-
[](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
|
|
6
6
|
[](https://www.npmjs.com/package/davinci-resolve-mcp)
|
|
7
7
|
[](docs/reference/api-coverage.md)
|
|
8
8
|
[-blue.svg)](#服务器模式)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
[](https://www.python.org/downloads/)
|
|
13
13
|
[](https://opensource.org/licenses/MIT)
|
|
14
14
|
|
|
15
|
-
> 本翻译对应 v2.93.
|
|
15
|
+
> 本翻译对应 v2.93.1 版 README。如与英文原版有出入,以 [英文原版](README.md) 为准。
|
|
16
16
|
|
|
17
17
|
一个 Model Context Protocol (MCP) 服务器,让 AI 助手通过官方脚本 API 控制 DaVinci Resolve Studio(达芬奇)。它提供完整的 API 覆盖,外加带护栏的工作流助手,涵盖剪辑、媒体池整理、渲染设置、审阅标记、调色、Fusion、Fairlight、项目生命周期任务、扩展开发,以及不碰源媒体的媒体分析。
|
|
18
18
|
|
|
@@ -798,6 +798,48 @@ When analysis reveals potential issues, always alert the user:
|
|
|
798
798
|
|
|
799
799
|
---
|
|
800
800
|
|
|
801
|
+
## Known Limitation: word timestamps lie around immediate retakes
|
|
802
|
+
|
|
803
|
+
**Transcripts do not report a re-read sentence twice.** When a speaker
|
|
804
|
+
immediately re-reads a line — the ordinary way people self-correct while
|
|
805
|
+
recording — whisper emits the text **once**, aligns it to the **first** take, and
|
|
806
|
+
absorbs "pause + entire second take" into the duration of a **single word**.
|
|
807
|
+
Measured on real Chinese material: one single-character word spanning **6.06 s**,
|
|
808
|
+
another **4.4 s**, where real speech runs 4–7 chars/s. Reproduced on English with
|
|
809
|
+
the identical signature: the word *"lives"* carrying **2.42 s**. Issue #125.
|
|
810
|
+
|
|
811
|
+
Everything downstream of the transcript inherits it:
|
|
812
|
+
|
|
813
|
+
- **Retake and false-start detection never fires** for this class — the
|
|
814
|
+
transcript says the sentence was spoken cleanly, once.
|
|
815
|
+
- **`rank_takes` undercounts restarts**, so a take that stumbled and recovered
|
|
816
|
+
can outscore one that did not. Its `caveat` field says so at runtime.
|
|
817
|
+
- **Word-level cuts near a swallow land inside speech**, because the timestamps
|
|
818
|
+
inflate around the absorption point.
|
|
819
|
+
- **`plan_transcript_tighten` is structurally blind here** — its false-start
|
|
820
|
+
heuristic only sees restarts the transcript reports.
|
|
821
|
+
|
|
822
|
+
**Silence detection cannot rescue it.** The swallowed span is not silence: in the
|
|
823
|
+
original measurement it was breathing and keyboard noise peaking at **−12.1 dB**,
|
|
824
|
+
*louder* than the adjacent real speech at −16.7 dB. A silence-based pass recalled
|
|
825
|
+
**3 of 17** ground-truth instances at any threshold.
|
|
826
|
+
|
|
827
|
+
**What the analysis output gives you.** Transcript-reading results carry
|
|
828
|
+
`possible_swallowed_retakes`: words whose duration exceeds an absolute bar
|
|
829
|
+
(default **1.2 s**), which is language-agnostic and computed from data the
|
|
830
|
+
pipeline already has. Treat it as a **flag, not a cut point** — where inside the
|
|
831
|
+
stretched word the second take begins is precisely what the swallow destroyed, so
|
|
832
|
+
those need a human ear or a re-transcription of the isolated window before
|
|
833
|
+
anything is removed.
|
|
834
|
+
|
|
835
|
+
**Read the empty case correctly.** No flags is *weak evidence, not proof*. A
|
|
836
|
+
swallow smeared across several words instead of concentrated in one will not
|
|
837
|
+
clear the bar, and that case is expected to exist. The bar itself is a usable
|
|
838
|
+
default chosen from limited data — 17 real instances in Chinese, confirmed by a
|
|
839
|
+
single genuine English swallow in synthetic material — not a tuned constant.
|
|
840
|
+
|
|
841
|
+
---
|
|
842
|
+
|
|
801
843
|
## Key Principles
|
|
802
844
|
|
|
803
845
|
- **The source is sacred.** Read from source files, write only to analysis sidecars unless a visual analysis workflow needs sampled frames/contact sheets in a separate analysis directory. Confirmed metadata publishing writes to Resolve's project database, not source media. `analyze_media` can opt out with `include_visuals=false`.
|
package/install.py
CHANGED
|
@@ -36,7 +36,7 @@ from src.utils.update_check import (
|
|
|
36
36
|
|
|
37
37
|
# ─── Version ──────────────────────────────────────────────────────────────────
|
|
38
38
|
|
|
39
|
-
VERSION = "2.93.
|
|
39
|
+
VERSION = "2.93.1"
|
|
40
40
|
# Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
|
|
41
41
|
# Resolve's scripting bridge loads into newer interpreters on recent builds
|
|
42
42
|
# (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds
|
package/package.json
CHANGED
package/src/granular/common.py
CHANGED
|
@@ -87,7 +87,7 @@ if not logging.getLogger().handlers:
|
|
|
87
87
|
handlers=[logging.StreamHandler()],
|
|
88
88
|
)
|
|
89
89
|
|
|
90
|
-
VERSION = "2.93.
|
|
90
|
+
VERSION = "2.93.1"
|
|
91
91
|
logger = logging.getLogger("davinci-resolve-mcp")
|
|
92
92
|
logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
|
|
93
93
|
logger.info(f"Detected platform: {get_platform()}")
|