agent-screenplay 0.1.1 → 0.1.3
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/README.md +28 -6
- package/assets/editor/index.html +25 -7
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/core.js +2 -14
- package/dist/core.js.map +1 -1
- package/dist/direct/plan.d.ts +2 -0
- package/dist/direct/plan.js +8 -0
- package/dist/direct/plan.js.map +1 -1
- package/dist/drivers/browser.d.ts +14 -0
- package/dist/drivers/browser.js +39 -1
- package/dist/drivers/browser.js.map +1 -1
- package/dist/drivers/web.d.ts +5 -0
- package/dist/drivers/web.js +68 -6
- package/dist/drivers/web.js.map +1 -1
- package/dist/editor/server.d.ts +18 -3
- package/dist/editor/server.js +27 -4
- package/dist/editor/server.js.map +1 -1
- package/dist/login.d.ts +9 -1
- package/dist/login.js +62 -29
- package/dist/login.js.map +1 -1
- package/dist/mcp/server.js +13 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/render/compose.d.ts +6 -2
- package/dist/render/compose.js +126 -18
- package/dist/render/compose.js.map +1 -1
- package/dist/render/presets.d.ts +20 -3
- package/dist/render/presets.js +30 -3
- package/dist/render/presets.js.map +1 -1
- package/dist/render/render.d.ts +5 -0
- package/dist/render/render.js +22 -4
- package/dist/render/render.js.map +1 -1
- package/dist/render/style.d.ts +12 -2
- package/dist/render/style.js +80 -3
- package/dist/render/style.js.map +1 -1
- package/dist/scenario/config.d.ts +9 -0
- package/dist/scenario/fingerprint.js +2 -2
- package/dist/scenario/fingerprint.js.map +1 -1
- package/dist/scenario/schema.d.ts +59 -3
- package/dist/scenario/schema.js +33 -9
- package/dist/scenario/schema.js.map +1 -1
- package/dist/scenario/target.js +2 -1
- package/dist/scenario/target.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/audio.d.ts +6 -0
- package/dist/voice/audio.js +36 -0
- package/dist/voice/audio.js.map +1 -0
- package/dist/voice/cartesia.d.ts +5 -0
- package/dist/voice/cartesia.js +17 -6
- package/dist/voice/cartesia.js.map +1 -1
- package/dist/voice/elevenlabs.d.ts +8 -0
- package/dist/voice/elevenlabs.js +29 -0
- package/dist/voice/elevenlabs.js.map +1 -0
- package/dist/voice/narration.d.ts +16 -0
- package/dist/voice/narration.js +83 -0
- package/dist/voice/narration.js.map +1 -0
- package/package.json +1 -1
- package/schema/scenario.schema.json +90 -6
- package/skills/screenplay/SKILL.md +20 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/scenario/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/scenario/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/scenario/target.js
CHANGED
|
@@ -21,7 +21,8 @@ export function parseTarget(input) {
|
|
|
21
21
|
case "testid":
|
|
22
22
|
return { kind: "testid", id: unquote(rest) };
|
|
23
23
|
case "css":
|
|
24
|
-
|
|
24
|
+
// `check` lists such targets as css=… (shows "…"): accept them copied whole.
|
|
25
|
+
return { kind: "css", selector: rest.replace(/\s+\(shows ".*"\)$/, "") };
|
|
25
26
|
case "at": {
|
|
26
27
|
const [x, y] = rest.split(",").map((v) => Number(v.trim()));
|
|
27
28
|
if (!Number.isFinite(x) || !Number.isFinite(y))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/scenario/target.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,GAAG,uCAAuC,CAAC;AAExD,0GAA0G;AAC1G,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,iDAAiD,CAAC,CAAC;YACxG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,KAAK,aAAa;YAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/scenario/target.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.3";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.1.
|
|
1
|
+
export const VERSION = "0.1.3";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Clip } from "./cartesia.js";
|
|
2
|
+
/**
|
|
3
|
+
* Any audio file (MP3, WAV, M4A…) as a cached 44.1 kHz mono WAV clip with its duration: for
|
|
4
|
+
* narration a person generated elsewhere and sent back, and for providers that answer in MP3.
|
|
5
|
+
*/
|
|
6
|
+
export declare function toClip(input: string | Buffer, cacheDir: string, label: string): Promise<Clip>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { runFfmpeg } from "../ffmpeg.js";
|
|
5
|
+
import { VoiceError, wavDuration } from "./cartesia.js";
|
|
6
|
+
/**
|
|
7
|
+
* Any audio file (MP3, WAV, M4A…) as a cached 44.1 kHz mono WAV clip with its duration: for
|
|
8
|
+
* narration a person generated elsewhere and sent back, and for providers that answer in MP3.
|
|
9
|
+
*/
|
|
10
|
+
export async function toClip(input, cacheDir, label) {
|
|
11
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
12
|
+
const bytes = typeof input === "string" ? readAudio(input, label) : input;
|
|
13
|
+
const hash = crypto.createHash("sha1").update(bytes).digest("hex").slice(0, 16);
|
|
14
|
+
const file = path.join(cacheDir, `${hash}.wav`);
|
|
15
|
+
if (!fs.existsSync(file)) {
|
|
16
|
+
const src = path.join(cacheDir, `${hash}.src`);
|
|
17
|
+
fs.writeFileSync(src, bytes);
|
|
18
|
+
try {
|
|
19
|
+
await runFfmpeg(["-i", src, "-ac", "1", "-ar", "44100", "-c:a", "pcm_s16le", `${file}.part.wav`]);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
throw new VoiceError(`${label} is not an audio file ffmpeg can read: ${e.message.slice(0, 300)}`);
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
fs.rmSync(src, { force: true });
|
|
26
|
+
}
|
|
27
|
+
fs.renameSync(`${file}.part.wav`, file);
|
|
28
|
+
}
|
|
29
|
+
return { file, duration: wavDuration(fs.readFileSync(file)) };
|
|
30
|
+
}
|
|
31
|
+
function readAudio(p, label) {
|
|
32
|
+
if (!fs.existsSync(p))
|
|
33
|
+
throw new VoiceError(`${label}: ${p} does not exist.`);
|
|
34
|
+
return fs.readFileSync(p);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/voice/audio.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAa,MAAM,eAAe,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAsB,EAAE,QAAgB,EAAE,KAAa;IAClF,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAC/C,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;QACpG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,0CAA2C,CAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,KAAa;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC"}
|
package/dist/voice/cartesia.d.ts
CHANGED
|
@@ -8,5 +8,10 @@ export interface Clip {
|
|
|
8
8
|
export declare function voiceKey(): string | undefined;
|
|
9
9
|
/** Synthesize each text (cached on disk by content), and return the clip files with their durations. */
|
|
10
10
|
export declare function synthesizeAll(texts: Map<number, string>, voice: Voice, cacheDir: string): Promise<Map<number, Clip>>;
|
|
11
|
+
/**
|
|
12
|
+
* Where a sentence's Cartesia clip is cached. Without a voice id (a language with no built-in
|
|
13
|
+
* default), there is none to know offline: undefined.
|
|
14
|
+
*/
|
|
15
|
+
export declare function cartesiaCacheFile(text: string, voice: Voice, cacheDir: string, voiceId?: string): string | undefined;
|
|
11
16
|
/** Duration of a PCM WAV file, from its header. */
|
|
12
17
|
export declare function wavDuration(buf: Buffer): number;
|
package/dist/voice/cartesia.js
CHANGED
|
@@ -31,12 +31,7 @@ export async function synthesizeAll(texts, voice, cacheDir) {
|
|
|
31
31
|
const model = voice.model ?? DEFAULT_MODEL;
|
|
32
32
|
const out = new Map();
|
|
33
33
|
for (const [index, text] of texts) {
|
|
34
|
-
const
|
|
35
|
-
.createHash("sha1")
|
|
36
|
-
.update(JSON.stringify([model, voiceId, language, voice.speed ?? 1, text]))
|
|
37
|
-
.digest("hex")
|
|
38
|
-
.slice(0, 16);
|
|
39
|
-
const file = path.join(cacheDir, `${hash}.wav`);
|
|
34
|
+
const file = cartesiaCacheFile(text, voice, cacheDir, voiceId);
|
|
40
35
|
if (!fs.existsSync(file)) {
|
|
41
36
|
const key = requireKey();
|
|
42
37
|
const body = {
|
|
@@ -80,6 +75,22 @@ async function defaultVoice(language, key) {
|
|
|
80
75
|
}
|
|
81
76
|
throw new VoiceError(`No Cartesia voice found for language "${language}". Set voice.id in the scenario.`);
|
|
82
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Where a sentence's Cartesia clip is cached. Without a voice id (a language with no built-in
|
|
80
|
+
* default), there is none to know offline: undefined.
|
|
81
|
+
*/
|
|
82
|
+
export function cartesiaCacheFile(text, voice, cacheDir, voiceId) {
|
|
83
|
+
const language = voice.language ?? "en";
|
|
84
|
+
const id = voiceId ?? voice.id ?? DEFAULT_VOICES[language.split("-")[0].toLowerCase()];
|
|
85
|
+
if (!id)
|
|
86
|
+
return undefined;
|
|
87
|
+
const hash = crypto
|
|
88
|
+
.createHash("sha1")
|
|
89
|
+
.update(JSON.stringify([voice.model ?? DEFAULT_MODEL, id, language, voice.speed ?? 1, text]))
|
|
90
|
+
.digest("hex")
|
|
91
|
+
.slice(0, 16);
|
|
92
|
+
return path.join(cacheDir, `${hash}.wav`);
|
|
93
|
+
}
|
|
83
94
|
/** Duration of a PCM WAV file, from its header. */
|
|
84
95
|
export function wavDuration(buf) {
|
|
85
96
|
if (buf.toString("ascii", 0, 4) !== "RIFF")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cartesia.js","sourceRoot":"","sources":["../../src/voice/cartesia.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,GAAG,GAAG,yBAAyB,CAAC;AACtC,MAAM,OAAO,GAAG,YAAY,CAAC;AAC7B,MAAM,aAAa,GAAG,WAAW,CAAC;AAElC,2HAA2H;AAC3H,MAAM,cAAc,GAA2B;IAC7C,EAAE,EAAE,sCAAsC,EAAE,+BAA+B;IAC3E,EAAE,EAAE,sCAAsC,EAAE,4BAA4B;CACzE,CAAC;AAEF,MAAM,OAAO,UAAW,SAAQ,KAAK;CAAG;AAOxC,MAAM,UAAU,QAAQ;IACtB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,SAAS,CAAC;AACnD,CAAC;AAED,wGAAwG;AACxG,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAA0B,EAAE,KAAY,EAAE,QAAgB;IAC5F,0FAA0F;IAC1F,MAAM,UAAU,GAAG,GAAW,EAAE;QAC9B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,UAAU,CAClB,+IAA+I,CAChJ,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"cartesia.js","sourceRoot":"","sources":["../../src/voice/cartesia.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Voice } from "../scenario/schema.js";
|
|
2
|
+
export declare function elevenLabsKey(): string | undefined;
|
|
3
|
+
/** One sentence as MP3 bytes (every plan can get MP3; raw PCM needs a paid tier). */
|
|
4
|
+
export declare function elevenLabsSpeak(text: string, voice: Voice, key: string, step: number): Promise<Buffer>;
|
|
5
|
+
export declare const ELEVENLABS_DEFAULTS: {
|
|
6
|
+
model: string;
|
|
7
|
+
voice: string;
|
|
8
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { VoiceError } from "./cartesia.js";
|
|
2
|
+
const API = "https://api.elevenlabs.io/v1";
|
|
3
|
+
const DEFAULT_MODEL = "eleven_multilingual_v2";
|
|
4
|
+
/** George, one of ElevenLabs' premade voices; the multilingual model speaks French, German… with it. */
|
|
5
|
+
const DEFAULT_VOICE = "JBFqnCBsd6RMkjVDRZzb";
|
|
6
|
+
export function elevenLabsKey() {
|
|
7
|
+
return process.env.ELEVENLABS_API_KEY || undefined;
|
|
8
|
+
}
|
|
9
|
+
/** One sentence as MP3 bytes (every plan can get MP3; raw PCM needs a paid tier). */
|
|
10
|
+
export async function elevenLabsSpeak(text, voice, key, step) {
|
|
11
|
+
const id = voice.id ?? DEFAULT_VOICE;
|
|
12
|
+
const body = { text, model_id: voice.model ?? DEFAULT_MODEL };
|
|
13
|
+
if (voice.language)
|
|
14
|
+
body.language_code = voice.language.split("-")[0].toLowerCase();
|
|
15
|
+
if (voice.speed)
|
|
16
|
+
body.voice_settings = { speed: Math.max(0.7, Math.min(1.2, voice.speed)) };
|
|
17
|
+
const res = await fetch(`${API}/text-to-speech/${encodeURIComponent(id)}?output_format=mp3_44100_128`, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: { "xi-api-key": key, "Content-Type": "application/json", Accept: "audio/mpeg" },
|
|
20
|
+
body: JSON.stringify(body),
|
|
21
|
+
});
|
|
22
|
+
if (!res.ok) {
|
|
23
|
+
const detail = (await res.text()).slice(0, 400);
|
|
24
|
+
throw new VoiceError(`ElevenLabs refused the narration of step ${step} (${res.status}): ${detail}`);
|
|
25
|
+
}
|
|
26
|
+
return Buffer.from(await res.arrayBuffer());
|
|
27
|
+
}
|
|
28
|
+
export const ELEVENLABS_DEFAULTS = { model: DEFAULT_MODEL, voice: DEFAULT_VOICE };
|
|
29
|
+
//# sourceMappingURL=elevenlabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../src/voice/elevenlabs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,GAAG,GAAG,8BAA8B,CAAC;AAC3C,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,wGAAwG;AACxG,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,CAAC;AACrD,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,KAAY,EAAE,GAAW,EAAE,IAAY;IACzF,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,aAAa,CAAC;IACrC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa,EAAE,CAAC;IACvF,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,8BAA8B,EAAE;QACrG,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE;QACxF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,IAAI,UAAU,CAAC,4CAA4C,IAAI,KAAK,GAAG,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LoadedScenario } from "../scenario/load.js";
|
|
2
|
+
import type { Voice } from "../scenario/schema.js";
|
|
3
|
+
import { type Clip } from "./cartesia.js";
|
|
4
|
+
export type Provider = "cartesia" | "elevenlabs";
|
|
5
|
+
/** The provider to speak with: the scenario's choice, else the one whose key is set (Cartesia first). */
|
|
6
|
+
export declare function pickProvider(voice: Voice, env?: NodeJS.ProcessEnv): Provider;
|
|
7
|
+
/**
|
|
8
|
+
* The narration of each step: a step's own `audio` file when it has one (no key needed), else,
|
|
9
|
+
* with `voice.enabled`, its `say` text spoken by Cartesia or ElevenLabs. Cached by content.
|
|
10
|
+
*/
|
|
11
|
+
export declare function narrate(loaded: LoadedScenario, opts?: {
|
|
12
|
+
noVoice?: boolean;
|
|
13
|
+
log?: (msg: string) => void;
|
|
14
|
+
}): Promise<Map<number, Clip>>;
|
|
15
|
+
/** Where a sentence's ElevenLabs audio is cached. */
|
|
16
|
+
export declare function elevenLabsCacheFile(text: string, voice: Voice, cacheDir: string): string;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { toClip } from "./audio.js";
|
|
5
|
+
import { cartesiaCacheFile, synthesizeAll, voiceKey, VoiceError } from "./cartesia.js";
|
|
6
|
+
import { ELEVENLABS_DEFAULTS, elevenLabsKey, elevenLabsSpeak } from "./elevenlabs.js";
|
|
7
|
+
/** The provider to speak with: the scenario's choice, else the one whose key is set (Cartesia first). */
|
|
8
|
+
export function pickProvider(voice, env = process.env) {
|
|
9
|
+
if (voice.provider)
|
|
10
|
+
return voice.provider;
|
|
11
|
+
if (env.CARTESIA_API_KEY)
|
|
12
|
+
return "cartesia";
|
|
13
|
+
if (env.ELEVENLABS_API_KEY)
|
|
14
|
+
return "elevenlabs";
|
|
15
|
+
throw new VoiceError("Voice-over is enabled but no voice key is set. Set CARTESIA_API_KEY (https://play.cartesia.ai/keys) or ELEVENLABS_API_KEY (https://elevenlabs.io/app/settings/api-keys); or give each step an `audio` file you generated elsewhere; or remove `voice.enabled` (or pass --no-voice).");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The narration of each step: a step's own `audio` file when it has one (no key needed), else,
|
|
19
|
+
* with `voice.enabled`, its `say` text spoken by Cartesia or ElevenLabs. Cached by content.
|
|
20
|
+
*/
|
|
21
|
+
export async function narrate(loaded, opts = {}) {
|
|
22
|
+
const out = new Map();
|
|
23
|
+
if (opts.noVoice)
|
|
24
|
+
return out;
|
|
25
|
+
const cacheDir = path.join(loaded.workDir, "cache", "voice");
|
|
26
|
+
const voice = loaded.scenario.voice ?? {};
|
|
27
|
+
// Title and end cards are left out of the video unless style.cards: so is their narration.
|
|
28
|
+
const cards = loaded.scenario.style?.cards ?? false;
|
|
29
|
+
const toSpeak = new Map();
|
|
30
|
+
for (const [i, s] of loaded.scenario.steps.entries()) {
|
|
31
|
+
if (!cards && ("title" in s || "end" in s))
|
|
32
|
+
continue;
|
|
33
|
+
const step = s;
|
|
34
|
+
if (step.audio)
|
|
35
|
+
out.set(i, await toClip(path.resolve(loaded.dir, step.audio), cacheDir, `The audio of step ${i + 1}`));
|
|
36
|
+
else if (voice.enabled && step.say)
|
|
37
|
+
toSpeak.set(i, step.say);
|
|
38
|
+
}
|
|
39
|
+
if (toSpeak.size === 0)
|
|
40
|
+
return out;
|
|
41
|
+
// Cached clips need no key: with no key set, use the provider whose cache already holds every
|
|
42
|
+
// sentence (a re-render after a style change), and only ask for a key when something is missing.
|
|
43
|
+
const texts = [...toSpeak.values()];
|
|
44
|
+
const provider = voice.provider ??
|
|
45
|
+
(voiceKey()
|
|
46
|
+
? "cartesia"
|
|
47
|
+
: elevenLabsKey()
|
|
48
|
+
? "elevenlabs"
|
|
49
|
+
: texts.every((t) => fs.existsSync(cartesiaCacheFile(t, voice, cacheDir) ?? ""))
|
|
50
|
+
? "cartesia"
|
|
51
|
+
: texts.every((t) => fs.existsSync(elevenLabsCacheFile(t, voice, cacheDir)))
|
|
52
|
+
? "elevenlabs"
|
|
53
|
+
: pickProvider(voice));
|
|
54
|
+
opts.log?.(`Generating narration for ${toSpeak.size} step(s)`);
|
|
55
|
+
if (provider === "cartesia") {
|
|
56
|
+
for (const [i, clip] of await synthesizeAll(toSpeak, voice, cacheDir))
|
|
57
|
+
out.set(i, clip);
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
for (const [i, text] of toSpeak) {
|
|
61
|
+
const mp3 = elevenLabsCacheFile(text, voice, cacheDir);
|
|
62
|
+
if (!fs.existsSync(mp3)) {
|
|
63
|
+
const key = elevenLabsKey();
|
|
64
|
+
if (!key)
|
|
65
|
+
throw new VoiceError("voice.provider is elevenlabs but ELEVENLABS_API_KEY is not set (https://elevenlabs.io/app/settings/api-keys).");
|
|
66
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
67
|
+
fs.writeFileSync(`${mp3}.part`, await elevenLabsSpeak(text, voice, key, i + 1));
|
|
68
|
+
fs.renameSync(`${mp3}.part`, mp3);
|
|
69
|
+
}
|
|
70
|
+
out.set(i, await toClip(mp3, cacheDir, `The narration of step ${i + 1}`));
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/** Where a sentence's ElevenLabs audio is cached. */
|
|
75
|
+
export function elevenLabsCacheFile(text, voice, cacheDir) {
|
|
76
|
+
const id = crypto
|
|
77
|
+
.createHash("sha1")
|
|
78
|
+
.update(JSON.stringify(["elevenlabs", voice.id ?? ELEVENLABS_DEFAULTS.voice, voice.model ?? ELEVENLABS_DEFAULTS.model, voice.language ?? "", voice.speed ?? 1, text]))
|
|
79
|
+
.digest("hex")
|
|
80
|
+
.slice(0, 16);
|
|
81
|
+
return path.join(cacheDir, `el-${id}.mp3`);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=narration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narration.js","sourceRoot":"","sources":["../../src/voice/narration.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-screenplay",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Screen Studio-quality screen recordings for AI agents: write a scenario, Screenplay films it and edits it (smooth cursor, auto-zoom, callouts, voice-over).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"type": "object",
|
|
91
91
|
"properties": {
|
|
92
92
|
"background": {
|
|
93
|
-
"description": "A preset (
|
|
93
|
+
"description": "A preset (dawn, iris, citrus, apricot, coral, blaze, cloud, glacier, tide, meadow; default dawn), a color like #0f172a, an image path (relative to the file that sets it), or a gradient { \"gradient\": [\"#0ea5e9\", \"#6366f1\"], \"angle\": 135 }.",
|
|
94
94
|
"anyOf": [
|
|
95
95
|
{
|
|
96
96
|
"type": "string"
|
|
@@ -139,20 +139,32 @@
|
|
|
139
139
|
"type": "boolean"
|
|
140
140
|
},
|
|
141
141
|
"cursor": {
|
|
142
|
-
"description": "Cursor drawn in the video (default macos).",
|
|
142
|
+
"description": "Cursor drawn in the video: arrow (default, a rounded arrow in the accent color), macos (the classic black arrow), dot or none.",
|
|
143
143
|
"type": "string",
|
|
144
144
|
"enum": [
|
|
145
|
+
"arrow",
|
|
145
146
|
"macos",
|
|
146
147
|
"dot",
|
|
147
148
|
"none"
|
|
148
149
|
]
|
|
149
150
|
},
|
|
150
151
|
"cursorSize": {
|
|
151
|
-
"description": "Cursor scale (default 1).",
|
|
152
|
+
"description": "Cursor scale (default 1: the arrow is about 44 px tall in a 1080p video).",
|
|
152
153
|
"type": "number",
|
|
153
154
|
"minimum": 0.5,
|
|
154
155
|
"maximum": 3
|
|
155
156
|
},
|
|
157
|
+
"click": {
|
|
158
|
+
"description": "What a click shows, in the accent color: ripple (default, a soft disc and two rings), rays, confetti, sparkle or none.",
|
|
159
|
+
"type": "string",
|
|
160
|
+
"enum": [
|
|
161
|
+
"ripple",
|
|
162
|
+
"rays",
|
|
163
|
+
"confetti",
|
|
164
|
+
"sparkle",
|
|
165
|
+
"none"
|
|
166
|
+
]
|
|
167
|
+
},
|
|
156
168
|
"maxZoom": {
|
|
157
169
|
"description": "Highest automatic zoom (default 1.9). Automatic zooms also stop where the capture runs out of pixels, so a small app window that already fills the video is not zoomed; a number in a step's `zoom` still forces it.",
|
|
158
170
|
"type": "number",
|
|
@@ -178,6 +190,10 @@
|
|
|
178
190
|
"none",
|
|
179
191
|
"browser"
|
|
180
192
|
]
|
|
193
|
+
},
|
|
194
|
+
"cards": {
|
|
195
|
+
"description": "Show the title and end cards (default false: `title` and `end` steps are left out of the video). Turn on when the person wants an intro and an outro.",
|
|
196
|
+
"type": "boolean"
|
|
181
197
|
}
|
|
182
198
|
},
|
|
183
199
|
"additionalProperties": false
|
|
@@ -186,15 +202,23 @@
|
|
|
186
202
|
"type": "object",
|
|
187
203
|
"properties": {
|
|
188
204
|
"enabled": {
|
|
189
|
-
"description": "Speak each step's `say` text (default false). Needs CARTESIA_API_KEY.",
|
|
205
|
+
"description": "Speak each step's `say` text (default false). Needs CARTESIA_API_KEY or ELEVENLABS_API_KEY, unless every spoken step has its own `audio` file.",
|
|
190
206
|
"type": "boolean"
|
|
191
207
|
},
|
|
208
|
+
"provider": {
|
|
209
|
+
"description": "Who speaks (default: Cartesia when CARTESIA_API_KEY is set, else ElevenLabs when ELEVENLABS_API_KEY is).",
|
|
210
|
+
"type": "string",
|
|
211
|
+
"enum": [
|
|
212
|
+
"cartesia",
|
|
213
|
+
"elevenlabs"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
192
216
|
"language": {
|
|
193
217
|
"description": "Language code, e.g. en, fr, de (default en).",
|
|
194
218
|
"type": "string"
|
|
195
219
|
},
|
|
196
220
|
"id": {
|
|
197
|
-
"description": "
|
|
221
|
+
"description": "The provider's voice id (default: a narration voice).",
|
|
198
222
|
"type": "string"
|
|
199
223
|
},
|
|
200
224
|
"speed": {
|
|
@@ -203,7 +227,7 @@
|
|
|
203
227
|
"maximum": 1.5
|
|
204
228
|
},
|
|
205
229
|
"model": {
|
|
206
|
-
"description": "
|
|
230
|
+
"description": "The provider's model (default sonic-3.6 for Cartesia, eleven_multilingual_v2 for ElevenLabs).",
|
|
207
231
|
"type": "string"
|
|
208
232
|
}
|
|
209
233
|
},
|
|
@@ -289,6 +313,10 @@
|
|
|
289
313
|
}
|
|
290
314
|
]
|
|
291
315
|
},
|
|
316
|
+
"audio": {
|
|
317
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
318
|
+
"type": "string"
|
|
319
|
+
},
|
|
292
320
|
"hold": {
|
|
293
321
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
294
322
|
"type": "number",
|
|
@@ -341,6 +369,10 @@
|
|
|
341
369
|
}
|
|
342
370
|
]
|
|
343
371
|
},
|
|
372
|
+
"audio": {
|
|
373
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
374
|
+
"type": "string"
|
|
375
|
+
},
|
|
344
376
|
"hold": {
|
|
345
377
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
346
378
|
"type": "number",
|
|
@@ -404,6 +436,10 @@
|
|
|
404
436
|
}
|
|
405
437
|
]
|
|
406
438
|
},
|
|
439
|
+
"audio": {
|
|
440
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
441
|
+
"type": "string"
|
|
442
|
+
},
|
|
407
443
|
"hold": {
|
|
408
444
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
409
445
|
"type": "number",
|
|
@@ -473,6 +509,10 @@
|
|
|
473
509
|
}
|
|
474
510
|
]
|
|
475
511
|
},
|
|
512
|
+
"audio": {
|
|
513
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
514
|
+
"type": "string"
|
|
515
|
+
},
|
|
476
516
|
"hold": {
|
|
477
517
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
478
518
|
"type": "number",
|
|
@@ -525,6 +565,10 @@
|
|
|
525
565
|
}
|
|
526
566
|
]
|
|
527
567
|
},
|
|
568
|
+
"audio": {
|
|
569
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
570
|
+
"type": "string"
|
|
571
|
+
},
|
|
528
572
|
"hold": {
|
|
529
573
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
530
574
|
"type": "number",
|
|
@@ -578,6 +622,10 @@
|
|
|
578
622
|
}
|
|
579
623
|
]
|
|
580
624
|
},
|
|
625
|
+
"audio": {
|
|
626
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
627
|
+
"type": "string"
|
|
628
|
+
},
|
|
581
629
|
"hold": {
|
|
582
630
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
583
631
|
"type": "number",
|
|
@@ -645,6 +693,10 @@
|
|
|
645
693
|
}
|
|
646
694
|
]
|
|
647
695
|
},
|
|
696
|
+
"audio": {
|
|
697
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
698
|
+
"type": "string"
|
|
699
|
+
},
|
|
648
700
|
"hold": {
|
|
649
701
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
650
702
|
"type": "number",
|
|
@@ -701,6 +753,10 @@
|
|
|
701
753
|
}
|
|
702
754
|
]
|
|
703
755
|
},
|
|
756
|
+
"audio": {
|
|
757
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
758
|
+
"type": "string"
|
|
759
|
+
},
|
|
704
760
|
"hold": {
|
|
705
761
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
706
762
|
"type": "number",
|
|
@@ -771,6 +827,10 @@
|
|
|
771
827
|
}
|
|
772
828
|
]
|
|
773
829
|
},
|
|
830
|
+
"audio": {
|
|
831
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
832
|
+
"type": "string"
|
|
833
|
+
},
|
|
774
834
|
"hold": {
|
|
775
835
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
776
836
|
"type": "number",
|
|
@@ -825,6 +885,10 @@
|
|
|
825
885
|
}
|
|
826
886
|
]
|
|
827
887
|
},
|
|
888
|
+
"audio": {
|
|
889
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
890
|
+
"type": "string"
|
|
891
|
+
},
|
|
828
892
|
"hold": {
|
|
829
893
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
830
894
|
"type": "number",
|
|
@@ -871,6 +935,10 @@
|
|
|
871
935
|
"say": {
|
|
872
936
|
"description": "Narration for this step: shown as a caption, and spoken when voice is enabled. The step lasts at least as long as the sentence.",
|
|
873
937
|
"type": "string"
|
|
938
|
+
},
|
|
939
|
+
"audio": {
|
|
940
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
941
|
+
"type": "string"
|
|
874
942
|
}
|
|
875
943
|
},
|
|
876
944
|
"required": [
|
|
@@ -896,6 +964,10 @@
|
|
|
896
964
|
"say": {
|
|
897
965
|
"description": "Narration for this step: shown as a caption, and spoken when voice is enabled. The step lasts at least as long as the sentence.",
|
|
898
966
|
"type": "string"
|
|
967
|
+
},
|
|
968
|
+
"audio": {
|
|
969
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
970
|
+
"type": "string"
|
|
899
971
|
}
|
|
900
972
|
},
|
|
901
973
|
"required": [
|
|
@@ -937,6 +1009,10 @@
|
|
|
937
1009
|
}
|
|
938
1010
|
]
|
|
939
1011
|
},
|
|
1012
|
+
"audio": {
|
|
1013
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
1014
|
+
"type": "string"
|
|
1015
|
+
},
|
|
940
1016
|
"hold": {
|
|
941
1017
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
942
1018
|
"type": "number",
|
|
@@ -999,6 +1075,10 @@
|
|
|
999
1075
|
}
|
|
1000
1076
|
]
|
|
1001
1077
|
},
|
|
1078
|
+
"audio": {
|
|
1079
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
1080
|
+
"type": "string"
|
|
1081
|
+
},
|
|
1002
1082
|
"hold": {
|
|
1003
1083
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
1004
1084
|
"type": "number",
|
|
@@ -1057,6 +1137,10 @@
|
|
|
1057
1137
|
}
|
|
1058
1138
|
]
|
|
1059
1139
|
},
|
|
1140
|
+
"audio": {
|
|
1141
|
+
"description": "An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file.",
|
|
1142
|
+
"type": "string"
|
|
1143
|
+
},
|
|
1060
1144
|
"hold": {
|
|
1061
1145
|
"description": "Extra seconds to stay on the result of this step before the next one.",
|
|
1062
1146
|
"type": "number",
|