@dsh-gis/dsh-video-studio-skill 0.9.1 → 1.0.2
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 +424 -0
- package/README.md +287 -327
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/package.json +9 -10
- package/schemas/design.schema.json +722 -0
- package/schemas/film.schema.json +4 -15
- package/schemas/proposal.schema.json +133 -0
- package/skills/video-studio/SKILL.md +1316 -1123
- package/skills/video-studio/assets/design_fixture.json +141 -0
- package/skills/video-studio/assets/film.json +1 -2
- package/skills/video-studio/assets/golden_frames.json +11 -8
- package/skills/video-studio/assets/scenes.py +67 -22
- package/skills/video-studio/assets/voice_loudness.json +16 -0
- package/skills/video-studio/references/audio-variation.md +15 -11
- package/skills/video-studio/references/audio.md +36 -34
- package/skills/video-studio/references/change-impact.md +3 -3
- package/skills/video-studio/references/frame-qa.md +2 -2
- package/skills/video-studio/references/proposal.md +177 -0
- package/skills/video-studio/references/quality-gates.md +1 -1
- package/skills/video-studio/references/scene-grammar.md +28 -23
- package/skills/video-studio/references/sfx-design.md +1 -1
- package/skills/video-studio/references/style-packs.md +95 -257
- package/skills/video-studio/references/v08-quality.md +8 -8
- package/skills/video-studio/references/web-engine.md +1 -1
- package/skills/video-studio/references/word-timeline.md +2 -2
- package/skills/video-studio/scripts/designkit.py +2120 -0
- package/skills/video-studio/scripts/filmcheck.py +7 -33
- package/skills/video-studio/scripts/filmkit.py +153 -78
- package/skills/video-studio/scripts/grammar.py +67 -7
- package/skills/video-studio/scripts/musicgen.py +2043 -0
- package/skills/video-studio/scripts/preflight.py +10 -3
- package/skills/video-studio/scripts/previewkit.py +849 -0
- package/skills/video-studio/scripts/propose.py +825 -0
- package/skills/video-studio/scripts/qa_frames.py +45 -10
- package/skills/video-studio/scripts/qavmaf.py +77 -11
- package/skills/video-studio/scripts/render.py +472 -154
- package/skills/video-studio/scripts/scorekit.py +50 -1748
- package/skills/video-studio/scripts/selfcheck.py +658 -131
- package/skills/video-studio/scripts/stagewatch.py +21 -5
- package/skills/video-studio/scripts/stylekit.py +265 -741
- package/skills/video-studio/scripts/voicekit.py +502 -380
- package/skills/video-studio/scripts/webengine.py +15 -14
- package/tools/audio_similarity.py +57 -30
- package/tools/ci_check.py +7 -1
- package/tools/estimate.py +14 -8
- package/tools/golden_frames.py +56 -11
- package/tools/silhouette_qa.py +521 -168
- package/docs/demo-pil-sheet.png +0 -0
- package/docs/styles/demo-results.json +0 -76
- package/docs/styles/sheet-8-styles.png +0 -0
- package/docs/styles/sheet-ai.png +0 -0
- package/docs/styles/sheet-before-after.png +0 -0
- package/docs/styles/sheet-craft.png +0 -0
- package/docs/styles/sheet-night.png +0 -0
- package/skills/video-studio/assets/score_demo.json +0 -307
package/docs/demo-pil-sheet.png
DELETED
|
Binary file
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generated": "2026-11-09",
|
|
3
|
-
"demos": [
|
|
4
|
-
{
|
|
5
|
-
"demo": "ai",
|
|
6
|
-
"title": "科技深蓝",
|
|
7
|
-
"style": "tech-deep",
|
|
8
|
-
"bpm": 116,
|
|
9
|
-
"key": "Em",
|
|
10
|
-
"mood": "steady",
|
|
11
|
-
"duration": 17.26,
|
|
12
|
-
"personas": [
|
|
13
|
-
"young_male",
|
|
14
|
-
"narrator_male",
|
|
15
|
-
"narrator_female"
|
|
16
|
-
],
|
|
17
|
-
"tones": [
|
|
18
|
-
"emphasis",
|
|
19
|
-
"body",
|
|
20
|
-
"quote",
|
|
21
|
-
"outro"
|
|
22
|
-
],
|
|
23
|
-
"layouts": [
|
|
24
|
-
"left-stack",
|
|
25
|
-
"split-right"
|
|
26
|
-
],
|
|
27
|
-
"spectral_centroid_hz": 5784
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"demo": "craft",
|
|
31
|
-
"title": "手绘纸感",
|
|
32
|
-
"style": "paper",
|
|
33
|
-
"bpm": 88,
|
|
34
|
-
"key": "G",
|
|
35
|
-
"mood": "hopeful",
|
|
36
|
-
"duration": 19.855,
|
|
37
|
-
"personas": [
|
|
38
|
-
"narrator_female",
|
|
39
|
-
"warm_female"
|
|
40
|
-
],
|
|
41
|
-
"tones": [
|
|
42
|
-
"hook",
|
|
43
|
-
"body",
|
|
44
|
-
"outro"
|
|
45
|
-
],
|
|
46
|
-
"layouts": [
|
|
47
|
-
"left-stack",
|
|
48
|
-
"center-stack"
|
|
49
|
-
],
|
|
50
|
-
"spectral_centroid_hz": 4899.4
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"demo": "night",
|
|
54
|
-
"title": "暖灰薄荷",
|
|
55
|
-
"style": "lo-fi",
|
|
56
|
-
"bpm": 84,
|
|
57
|
-
"key": "F",
|
|
58
|
-
"mood": "calm",
|
|
59
|
-
"duration": 20.108,
|
|
60
|
-
"personas": [
|
|
61
|
-
"warm_female",
|
|
62
|
-
"narrator_female"
|
|
63
|
-
],
|
|
64
|
-
"tones": [
|
|
65
|
-
"hook",
|
|
66
|
-
"body",
|
|
67
|
-
"outro"
|
|
68
|
-
],
|
|
69
|
-
"layouts": [
|
|
70
|
-
"left-stack",
|
|
71
|
-
"split-right"
|
|
72
|
-
],
|
|
73
|
-
"spectral_centroid_hz": 5573.8
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
}
|
|
Binary file
|
package/docs/styles/sheet-ai.png
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"generator": "scorekit 0.3.0",
|
|
4
|
-
"note": "scorekit 演示配乐(48 s,4 段,120 BPM,D 小调)。anchors 自动分段:段落边界吸附小节线,交界处 1 小节过门(鼓加花/反向镲/上升音/重击)+ 自动吸气;峰值 -1.5 dBFS、结尾 2 s 淡出;同一 seed 逐采样一致(无采样、全合成)。",
|
|
5
|
-
"reproduce": {
|
|
6
|
-
"json": "python - <<PY\nimport json, scorekit as K\nanchors = [{\"id\": \"d01\", \"kind\": \"hook\", \"start\": 0.0, \"end\": 8.0}, {\"id\": \"d02\", \"kind\": \"body\", \"start\": 8.0, \"end\": 24.0}, {\"id\": \"d03\", \"kind\": \"drive\", \"start\": 24.0, \"end\": 40.0}, {\"id\": \"d04\", \"kind\": \"outro\", \"start\": 40.0, \"end\": 48.0}]\nx, rep = K.render(48.0, bpm=120, key='Dm', anchors=anchors, seed=7)\nK.save('work/score_demo.wav', x)\nPY",
|
|
7
|
-
"cli": "cd skills/video-studio/scripts && python scorekit.py --duration 48 --bpm 120 --key Dm --seed 7 --anchors work/score_demo_anchors.json --out work/score_demo.wav --report work/score_demo.json",
|
|
8
|
-
"anchors_file_example": [
|
|
9
|
-
{
|
|
10
|
-
"id": "d01",
|
|
11
|
-
"kind": "hook",
|
|
12
|
-
"start": 0.0,
|
|
13
|
-
"end": 8.0
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"id": "d02",
|
|
17
|
-
"kind": "body",
|
|
18
|
-
"start": 8.0,
|
|
19
|
-
"end": 24.0
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"id": "d03",
|
|
23
|
-
"kind": "drive",
|
|
24
|
-
"start": 24.0,
|
|
25
|
-
"end": 40.0
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"id": "d04",
|
|
29
|
-
"kind": "outro",
|
|
30
|
-
"start": 40.0,
|
|
31
|
-
"end": 48.0
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"meas": {
|
|
36
|
-
"wav": "work/score_demo.wav # 用 reproduce 里的命令自己生成",
|
|
37
|
-
"peak_dbfs": -1.5,
|
|
38
|
-
"lufs_approx": -19.8,
|
|
39
|
-
"true_peak_dbtp": -1.4,
|
|
40
|
-
"real_lufs_ffmpeg_demo48": -18.45,
|
|
41
|
-
"real_lufs_ffmpeg_60s": -19.09,
|
|
42
|
-
"real_lufs_ffmpeg_389s": -18.52,
|
|
43
|
-
"real_true_peak_60s_dbtp": -1.4,
|
|
44
|
-
"real_true_peak_389s_dbtp": -1.44,
|
|
45
|
-
"lra_389s_lu": 4.9,
|
|
46
|
-
"render_s": 5.115,
|
|
47
|
-
"render_389s_s": 8.18,
|
|
48
|
-
"note": "389 s 实测:渲染 8.18 s(含并行负载;空载 6.7 s)、峰值 -1.5 dBFS、ffmpeg loudnorm -18.52 LUFS / -1.44 dBTP;48 s demo 实测 -18.45 LUFS。",
|
|
49
|
-
"render_s_note": "本机实测值,随机器/负载浮动;不是承诺"
|
|
50
|
-
},
|
|
51
|
-
"bpm": 120.0,
|
|
52
|
-
"key": "Dm",
|
|
53
|
-
"key_name": "D 小调",
|
|
54
|
-
"sr": 48000,
|
|
55
|
-
"duration": 48.0,
|
|
56
|
-
"seed": 7,
|
|
57
|
-
"bar_s": 2.0,
|
|
58
|
-
"beat_s": 0.5,
|
|
59
|
-
"sections": [
|
|
60
|
-
{
|
|
61
|
-
"name": "d01",
|
|
62
|
-
"start": 0.0,
|
|
63
|
-
"end": 8.0,
|
|
64
|
-
"energy": 0.3,
|
|
65
|
-
"bars": 4,
|
|
66
|
-
"target_db": -5.95,
|
|
67
|
-
"target_lufs": -21.9,
|
|
68
|
-
"layers": [
|
|
69
|
-
"pad",
|
|
70
|
-
"bass"
|
|
71
|
-
],
|
|
72
|
-
"chords": [
|
|
73
|
-
"i",
|
|
74
|
-
"VI",
|
|
75
|
-
"iv",
|
|
76
|
-
"v"
|
|
77
|
-
]
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"name": "d02",
|
|
81
|
-
"start": 8.0,
|
|
82
|
-
"end": 24.0,
|
|
83
|
-
"energy": 0.55,
|
|
84
|
-
"bars": 8,
|
|
85
|
-
"target_db": -3.82,
|
|
86
|
-
"target_lufs": -19.8,
|
|
87
|
-
"layers": [
|
|
88
|
-
"pad",
|
|
89
|
-
"bass",
|
|
90
|
-
"kick",
|
|
91
|
-
"hat",
|
|
92
|
-
"arp"
|
|
93
|
-
],
|
|
94
|
-
"chords": [
|
|
95
|
-
"i",
|
|
96
|
-
"VI",
|
|
97
|
-
"III",
|
|
98
|
-
"VII",
|
|
99
|
-
"i",
|
|
100
|
-
"VI",
|
|
101
|
-
"III",
|
|
102
|
-
"V"
|
|
103
|
-
]
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"name": "d03",
|
|
107
|
-
"start": 24.0,
|
|
108
|
-
"end": 40.0,
|
|
109
|
-
"energy": 0.8,
|
|
110
|
-
"bars": 8,
|
|
111
|
-
"target_db": -1.7,
|
|
112
|
-
"target_lufs": -17.7,
|
|
113
|
-
"layers": [
|
|
114
|
-
"pad",
|
|
115
|
-
"bass",
|
|
116
|
-
"kick",
|
|
117
|
-
"hat",
|
|
118
|
-
"arp",
|
|
119
|
-
"melody"
|
|
120
|
-
],
|
|
121
|
-
"chords": [
|
|
122
|
-
"i",
|
|
123
|
-
"VII",
|
|
124
|
-
"VI",
|
|
125
|
-
"V",
|
|
126
|
-
"i",
|
|
127
|
-
"VII",
|
|
128
|
-
"VI",
|
|
129
|
-
"V"
|
|
130
|
-
]
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"name": "d04",
|
|
134
|
-
"start": 40.0,
|
|
135
|
-
"end": 48.0,
|
|
136
|
-
"energy": 0.35,
|
|
137
|
-
"bars": 4,
|
|
138
|
-
"target_db": -5.53,
|
|
139
|
-
"target_lufs": -21.5,
|
|
140
|
-
"layers": [
|
|
141
|
-
"pad",
|
|
142
|
-
"bass",
|
|
143
|
-
"kick"
|
|
144
|
-
],
|
|
145
|
-
"chords": [
|
|
146
|
-
"i",
|
|
147
|
-
"VI",
|
|
148
|
-
"I",
|
|
149
|
-
"I"
|
|
150
|
-
]
|
|
151
|
-
}
|
|
152
|
-
],
|
|
153
|
-
"transitions": [
|
|
154
|
-
{
|
|
155
|
-
"t": 8.0,
|
|
156
|
-
"from": "d01",
|
|
157
|
-
"to": "d02",
|
|
158
|
-
"fill_start": 6.0,
|
|
159
|
-
"fill_s": 2.0,
|
|
160
|
-
"kinds": [
|
|
161
|
-
"鼓加花",
|
|
162
|
-
"反向镲",
|
|
163
|
-
"上升音"
|
|
164
|
-
],
|
|
165
|
-
"suck_db": -4.75
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
"t": 24.0,
|
|
169
|
-
"from": "d02",
|
|
170
|
-
"to": "d03",
|
|
171
|
-
"fill_start": 22.0,
|
|
172
|
-
"fill_s": 2.0,
|
|
173
|
-
"kinds": [
|
|
174
|
-
"鼓加花",
|
|
175
|
-
"反向镲",
|
|
176
|
-
"上升音",
|
|
177
|
-
"重击"
|
|
178
|
-
],
|
|
179
|
-
"suck_db": -4.75
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"t": 40.0,
|
|
183
|
-
"from": "d03",
|
|
184
|
-
"to": "d04",
|
|
185
|
-
"fill_start": 38.0,
|
|
186
|
-
"fill_s": 2.0,
|
|
187
|
-
"kinds": [
|
|
188
|
-
"鼓加花",
|
|
189
|
-
"反向镲"
|
|
190
|
-
],
|
|
191
|
-
"suck_db": null
|
|
192
|
-
}
|
|
193
|
-
],
|
|
194
|
-
"sucks": [
|
|
195
|
-
{
|
|
196
|
-
"t": 8.0,
|
|
197
|
-
"db": -4.75,
|
|
198
|
-
"dur": 0.24,
|
|
199
|
-
"source": "过渡吸气"
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
"t": 24.0,
|
|
203
|
-
"db": -4.75,
|
|
204
|
-
"dur": 0.24,
|
|
205
|
-
"source": "过渡吸气"
|
|
206
|
-
}
|
|
207
|
-
],
|
|
208
|
-
"beats": [
|
|
209
|
-
0.0,
|
|
210
|
-
0.5,
|
|
211
|
-
1.0,
|
|
212
|
-
1.5,
|
|
213
|
-
2.0,
|
|
214
|
-
2.5,
|
|
215
|
-
3.0,
|
|
216
|
-
3.5,
|
|
217
|
-
4.0,
|
|
218
|
-
4.5,
|
|
219
|
-
5.0,
|
|
220
|
-
5.5,
|
|
221
|
-
6.0,
|
|
222
|
-
6.5,
|
|
223
|
-
7.0,
|
|
224
|
-
7.5,
|
|
225
|
-
8.0,
|
|
226
|
-
8.5,
|
|
227
|
-
9.0,
|
|
228
|
-
9.5,
|
|
229
|
-
10.0,
|
|
230
|
-
10.5,
|
|
231
|
-
11.0,
|
|
232
|
-
11.5,
|
|
233
|
-
12.0,
|
|
234
|
-
12.5,
|
|
235
|
-
13.0,
|
|
236
|
-
13.5,
|
|
237
|
-
14.0,
|
|
238
|
-
14.5,
|
|
239
|
-
15.0,
|
|
240
|
-
15.5,
|
|
241
|
-
16.0,
|
|
242
|
-
16.5,
|
|
243
|
-
17.0,
|
|
244
|
-
17.5,
|
|
245
|
-
18.0,
|
|
246
|
-
18.5,
|
|
247
|
-
19.0,
|
|
248
|
-
19.5,
|
|
249
|
-
20.0,
|
|
250
|
-
20.5,
|
|
251
|
-
21.0,
|
|
252
|
-
21.5,
|
|
253
|
-
22.0,
|
|
254
|
-
22.5,
|
|
255
|
-
23.0,
|
|
256
|
-
23.5,
|
|
257
|
-
24.0,
|
|
258
|
-
24.5,
|
|
259
|
-
25.0,
|
|
260
|
-
25.5,
|
|
261
|
-
26.0,
|
|
262
|
-
26.5,
|
|
263
|
-
27.0,
|
|
264
|
-
27.5,
|
|
265
|
-
28.0,
|
|
266
|
-
28.5,
|
|
267
|
-
29.0,
|
|
268
|
-
29.5,
|
|
269
|
-
30.0,
|
|
270
|
-
30.5,
|
|
271
|
-
31.0,
|
|
272
|
-
31.5,
|
|
273
|
-
32.0,
|
|
274
|
-
32.5,
|
|
275
|
-
33.0,
|
|
276
|
-
33.5,
|
|
277
|
-
34.0,
|
|
278
|
-
34.5,
|
|
279
|
-
35.0,
|
|
280
|
-
35.5,
|
|
281
|
-
36.0,
|
|
282
|
-
36.5,
|
|
283
|
-
37.0,
|
|
284
|
-
37.5,
|
|
285
|
-
38.0,
|
|
286
|
-
38.5,
|
|
287
|
-
39.0,
|
|
288
|
-
39.5,
|
|
289
|
-
40.0,
|
|
290
|
-
40.5,
|
|
291
|
-
41.0,
|
|
292
|
-
41.5,
|
|
293
|
-
42.0,
|
|
294
|
-
42.5,
|
|
295
|
-
43.0,
|
|
296
|
-
43.5,
|
|
297
|
-
44.0,
|
|
298
|
-
44.5,
|
|
299
|
-
45.0,
|
|
300
|
-
45.5,
|
|
301
|
-
46.0,
|
|
302
|
-
46.5,
|
|
303
|
-
47.0,
|
|
304
|
-
47.5,
|
|
305
|
-
48.0
|
|
306
|
-
]
|
|
307
|
-
}
|