screenci 0.0.68 → 0.0.69
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 +1 -1
- package/dist/cli.d.ts +3 -18
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +105 -154
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +13 -13
- package/dist/docs/manifest.js +4 -4
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/studio.video.d.ts +2 -0
- package/dist/docs/video-sources/studio.video.d.ts.map +1 -0
- package/dist/docs/video-sources/studio.video.js +57 -0
- package/dist/docs/video-sources/studio.video.js.map +1 -0
- package/dist/e2e/htmlRasterizer.e2e.d.ts +2 -0
- package/dist/e2e/htmlRasterizer.e2e.d.ts.map +1 -0
- package/dist/e2e/htmlRasterizer.e2e.js +107 -0
- package/dist/e2e/htmlRasterizer.e2e.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +141 -53
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +533 -78
- package/dist/src/asset.js.map +1 -1
- package/dist/src/audio.d.ts +113 -0
- package/dist/src/audio.d.ts.map +1 -0
- package/dist/src/audio.js +204 -0
- package/dist/src/audio.js.map +1 -0
- package/dist/src/defaults.d.ts +7 -1
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +7 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/events.d.ts +134 -6
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +73 -2
- package/dist/src/events.js.map +1 -1
- package/dist/src/htmlRasterizer.d.ts +110 -0
- package/dist/src/htmlRasterizer.d.ts.map +1 -0
- package/dist/src/htmlRasterizer.js +364 -0
- package/dist/src/htmlRasterizer.js.map +1 -0
- package/dist/src/init.d.ts +17 -0
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +127 -7
- package/dist/src/init.js.map +1 -1
- package/dist/src/linkSession.d.ts +36 -0
- package/dist/src/linkSession.d.ts.map +1 -0
- package/dist/src/linkSession.js +122 -0
- package/dist/src/linkSession.js.map +1 -0
- package/dist/src/performance.d.ts +1 -3
- package/dist/src/performance.d.ts.map +1 -1
- package/dist/src/performance.js +0 -12
- package/dist/src/performance.js.map +1 -1
- package/dist/src/recording.d.ts +1 -1
- package/dist/src/recording.d.ts.map +1 -1
- package/dist/src/recordingData.d.ts +2 -2
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/runtimeContext.d.ts +38 -0
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +25 -0
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/types.d.ts +25 -7
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +34 -1
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +120 -19
- package/dist/src/video.js.map +1 -1
- package/dist/src/voices.d.ts +22 -9
- package/dist/src/voices.d.ts.map +1 -1
- package/dist/src/voices.js +6 -24
- package/dist/src/voices.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -2
- package/skills/screenci/SKILL.md +27 -5
- package/skills/screenci/references/init.md +2 -0
- package/skills/screenci/references/record.md +6 -1
package/dist/src/video.js
CHANGED
|
@@ -9,13 +9,14 @@ import { setActiveCueRecorder } from './cue.js';
|
|
|
9
9
|
import { setActiveHideRecorder } from './hide.js';
|
|
10
10
|
import { setActiveAutoZoomRecorder, setActiveZoomPage } from './autoZoom.js';
|
|
11
11
|
import { setActiveAssetRecorder } from './asset.js';
|
|
12
|
-
import {
|
|
12
|
+
import { setActiveAudioRecorder } from './audio.js';
|
|
13
|
+
import { DEFAULT_VIDEO_OPTIONS, DEFAULT_ASPECT_RATIO, DEFAULT_QUALITY, DEFAULT_FPS, DEFAULT_VIDEO_ENCODER, } from './defaults.js';
|
|
13
14
|
import { EventRecorder } from './events.js';
|
|
14
15
|
import { bindClickRecorderToPage, instrumentBrowser, instrumentContext, setActiveClickRecorder, } from './instrument.js';
|
|
15
16
|
import { logger } from './logger.js';
|
|
16
17
|
import { setMousePosition } from './mouse.js';
|
|
17
18
|
import { getChromiumLaunchOptions } from './browserLaunchOptions.js';
|
|
18
|
-
import { createScreenCIRuntimeContext, runWithScreenCIRuntimeContext, setActiveScreenCIRuntimeContext, setRuntimeAssetRecorder, setRuntimeAutoZoomRecorder, setRuntimeClickRecorder, setRuntimeCueRecorder, setRuntimeHideRecorder, setRuntimePage, } from './runtimeContext.js';
|
|
19
|
+
import { createScreenCIRuntimeContext, runWithScreenCIRuntimeContext, setActiveScreenCIRuntimeContext, setRuntimeAssetRecorder, setRuntimeAudioRecorder, setRuntimeAutoZoomRecorder, setRuntimeClickRecorder, setRuntimeCueRecorder, setRuntimeHideRecorder, setRuntimePage, } from './runtimeContext.js';
|
|
19
20
|
import { escapeFileSystemPathSegment } from './fileSystemName.js';
|
|
20
21
|
import { resolveRecordingTimingDuration } from './runtimeMode.js';
|
|
21
22
|
export const POST_VIDEO_PAUSE = 500;
|
|
@@ -67,7 +68,98 @@ export async function positionMouseAtViewportCenter(page, dimensions) {
|
|
|
67
68
|
setMousePosition(page, viewportCenter);
|
|
68
69
|
return viewportCenter;
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Encoder arguments for the screencast's realtime first pass, per preset.
|
|
73
|
+
*
|
|
74
|
+
* We keep the recorder's realtime first pass as the final artifact (the second
|
|
75
|
+
* pass is disabled below via `runSecondPass`), so these are the only encoder
|
|
76
|
+
* settings that reach the saved recording. playwright-recorder-plus has no
|
|
77
|
+
* public option for the first-pass encoder, so `applyFirstPassEncoderArgs`
|
|
78
|
+
* overrides the recorder's internal first-pass args at runtime. Doing it at
|
|
79
|
+
* runtime (rather than patching the dependency on disk) means it works for
|
|
80
|
+
* every install: npm, pnpm and yarn, with no postinstall step.
|
|
81
|
+
*
|
|
82
|
+
* - `'sharp'` is tuned for text-heavy UI: `-tune stillimage` and a low `-crf`
|
|
83
|
+
* preserve sharp glyph edges, while `-preset veryfast` stays above realtime
|
|
84
|
+
* so the screencast stream never backpressures (which drops frames and
|
|
85
|
+
* shortens the timeline).
|
|
86
|
+
* - `'fast'` mirrors the library's original `-preset ultrafast -crf 18` for
|
|
87
|
+
* resource-constrained CI that cannot keep up with the sharper encode.
|
|
88
|
+
*
|
|
89
|
+
* Both use `yuv420p` so the output stays decodable by the downstream NVDEC
|
|
90
|
+
* CUDA render pipeline (4:4:4 H.264 is not reliably hardware-decodable).
|
|
91
|
+
*/
|
|
92
|
+
const FIRST_PASS_ARGS_BY_ENCODER = {
|
|
93
|
+
sharp: [
|
|
94
|
+
'-c:v',
|
|
95
|
+
'libx264',
|
|
96
|
+
'-preset',
|
|
97
|
+
'veryfast',
|
|
98
|
+
'-crf',
|
|
99
|
+
'12',
|
|
100
|
+
'-tune',
|
|
101
|
+
'stillimage',
|
|
102
|
+
'-pix_fmt',
|
|
103
|
+
'yuv420p',
|
|
104
|
+
'-movflags',
|
|
105
|
+
'+faststart',
|
|
106
|
+
],
|
|
107
|
+
fast: [
|
|
108
|
+
'-c:v',
|
|
109
|
+
'libx264',
|
|
110
|
+
'-preset',
|
|
111
|
+
'ultrafast',
|
|
112
|
+
'-crf',
|
|
113
|
+
'18',
|
|
114
|
+
'-pix_fmt',
|
|
115
|
+
'yuv420p',
|
|
116
|
+
'-movflags',
|
|
117
|
+
'+faststart',
|
|
118
|
+
],
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Resolve the first-pass encoder args for a given preset. Exported for testing.
|
|
122
|
+
*/
|
|
123
|
+
export function resolveRecordingFirstPassArgs(encoder = DEFAULT_VIDEO_ENCODER) {
|
|
124
|
+
return FIRST_PASS_ARGS_BY_ENCODER[encoder];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Replace the output-encoder tail of a built first-pass ffmpeg arg list.
|
|
128
|
+
*
|
|
129
|
+
* The recorder's first-pass args contain two `-c:v` flags: the first selects
|
|
130
|
+
* the mjpeg input decoder, the last selects the output encoder. We swap
|
|
131
|
+
* everything from that last `-c:v` to the end with `encoderArgs` (which start
|
|
132
|
+
* at their own `-c:v`), leaving the input/rate flags before it untouched.
|
|
133
|
+
*
|
|
134
|
+
* Pure and exported for testing. Throws if no output encoder is present, so a
|
|
135
|
+
* future change to the recorder's internals fails loudly instead of silently
|
|
136
|
+
* recording with the wrong encoder.
|
|
137
|
+
*/
|
|
138
|
+
export function overrideFirstPassEncoderArgs(currentArgs, encoderArgs) {
|
|
139
|
+
const encoderStart = currentArgs.lastIndexOf('-c:v');
|
|
140
|
+
if (encoderStart === -1) {
|
|
141
|
+
throw new Error('playwright-recorder-plus first-pass args contained no output encoder (-c:v); ' +
|
|
142
|
+
'cannot apply the configured capture encoder. The recorder internals may have changed.');
|
|
143
|
+
}
|
|
144
|
+
return [...currentArgs.slice(0, encoderStart), ...encoderArgs];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Override the recorder's first-pass encoder in place, before `start()`.
|
|
148
|
+
*
|
|
149
|
+
* `attachRecorder` builds `config.firstPassArgs` eagerly but only spawns the
|
|
150
|
+
* first-pass ffmpeg process on `start()`, so mutating it here (with
|
|
151
|
+
* `autoStart: false`) takes effect for the actual recording.
|
|
152
|
+
*/
|
|
153
|
+
export function applyFirstPassEncoderArgs(recorder, encoderArgs) {
|
|
154
|
+
const config = recorder.config;
|
|
155
|
+
const current = config?.firstPassArgs;
|
|
156
|
+
if (!config || !Array.isArray(current)) {
|
|
157
|
+
throw new Error('playwright-recorder-plus recorder did not expose config.firstPassArgs; ' +
|
|
158
|
+
'cannot apply the configured capture encoder. The recorder internals may have changed.');
|
|
159
|
+
}
|
|
160
|
+
config.firstPassArgs = overrideFirstPassEncoderArgs(current, encoderArgs);
|
|
161
|
+
}
|
|
162
|
+
async function startScreencastRecording(page, outputPath, fps, quality, aspectRatio, encoder) {
|
|
71
163
|
const { width, height } = getDimensions(aspectRatio, quality);
|
|
72
164
|
const recorder = await attachRecorder(page, {
|
|
73
165
|
path: outputPath,
|
|
@@ -76,24 +168,27 @@ async function startScreencastRecording(page, outputPath, fps, quality, aspectRa
|
|
|
76
168
|
size: { width, height },
|
|
77
169
|
fps,
|
|
78
170
|
jpegQuality: 100,
|
|
79
|
-
ffmpegArgs: [
|
|
80
|
-
'-c:v',
|
|
81
|
-
'libx264',
|
|
82
|
-
'-preset',
|
|
83
|
-
'slow',
|
|
84
|
-
'-tune',
|
|
85
|
-
'stillimage',
|
|
86
|
-
'-crf',
|
|
87
|
-
'12',
|
|
88
|
-
'-pix_fmt',
|
|
89
|
-
'yuv444p',
|
|
90
|
-
'-movflags',
|
|
91
|
-
'frag_keyframe+empty_moov',
|
|
92
|
-
],
|
|
93
171
|
});
|
|
172
|
+
// Apply the configured capture encoder. The library has no public option for
|
|
173
|
+
// the first-pass encoder, so we override the recorder's internal first-pass
|
|
174
|
+
// args in place (before start(), which autoStart: false guarantees).
|
|
175
|
+
applyFirstPassEncoderArgs(recorder, resolveRecordingFirstPassArgs(encoder));
|
|
94
176
|
recorder.runSecondPass = async (firstPass) => firstPass;
|
|
95
177
|
return recorder;
|
|
96
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Fails the recording if any overlay was `start()`ed but never `end()`ed.
|
|
181
|
+
* Every live overlay must be paired so the renderer never sees a dangling
|
|
182
|
+
* `assetStart` with no `assetEnd`. Only called on the success path, so it never
|
|
183
|
+
* masks an error thrown by the video function itself.
|
|
184
|
+
*/
|
|
185
|
+
export function assertAllOverlaysEnded(runtimeContext) {
|
|
186
|
+
const open = [...runtimeContext.asset.activeRuns.keys()];
|
|
187
|
+
if (open.length === 0)
|
|
188
|
+
return;
|
|
189
|
+
const names = open.map((name) => `"${name}"`).join(', ');
|
|
190
|
+
throw new Error(`[screenci] Overlay(s) ${names} were started with .start() but never ended. Call end() for each overlay before the video function returns.`);
|
|
191
|
+
}
|
|
97
192
|
async function withActiveRecordingContext(params) {
|
|
98
193
|
const { runtimeContext, page, recorder, fn } = params;
|
|
99
194
|
setActiveScreenCIRuntimeContext(runtimeContext);
|
|
@@ -104,16 +199,20 @@ async function withActiveRecordingContext(params) {
|
|
|
104
199
|
setRuntimeHideRecorder(recorder);
|
|
105
200
|
setRuntimeAutoZoomRecorder(recorder);
|
|
106
201
|
setRuntimeAssetRecorder(recorder);
|
|
202
|
+
setRuntimeAudioRecorder(recorder);
|
|
107
203
|
setRuntimeClickRecorder(recorder);
|
|
108
204
|
setActiveCueRecorder(recorder);
|
|
109
205
|
setActiveHideRecorder(recorder);
|
|
110
206
|
setActiveAutoZoomRecorder(recorder);
|
|
111
207
|
setActiveZoomPage(page);
|
|
112
208
|
setActiveAssetRecorder(recorder);
|
|
209
|
+
setActiveAudioRecorder(recorder);
|
|
113
210
|
setActiveClickRecorder(recorder);
|
|
114
211
|
bindClickRecorderToPage(page, recorder);
|
|
115
212
|
setRuntimePage(page);
|
|
116
|
-
|
|
213
|
+
const result = await fn();
|
|
214
|
+
assertAllOverlaysEnded(runtimeContext);
|
|
215
|
+
return result;
|
|
117
216
|
});
|
|
118
217
|
}
|
|
119
218
|
finally {
|
|
@@ -199,6 +298,7 @@ const _videoBase = base.extend({
|
|
|
199
298
|
const aspectRatio = recordOptions.aspectRatio ?? DEFAULT_ASPECT_RATIO;
|
|
200
299
|
const quality = recordOptions.quality ?? DEFAULT_QUALITY;
|
|
201
300
|
const fps = recordOptions.fps ?? DEFAULT_FPS;
|
|
301
|
+
const encoder = recordOptions.encoder ?? DEFAULT_VIDEO_ENCODER;
|
|
202
302
|
const dimensions = getDimensions(aspectRatio, quality);
|
|
203
303
|
const directoryName = escapeFileSystemPathSegment(testInfo.title);
|
|
204
304
|
// Create directory path: .screenci/[video-title]/
|
|
@@ -220,6 +320,7 @@ const _videoBase = base.extend({
|
|
|
220
320
|
recorder,
|
|
221
321
|
page,
|
|
222
322
|
testFilePath: testInfo.file,
|
|
323
|
+
recordingDir: videoDir,
|
|
223
324
|
});
|
|
224
325
|
await setupMouseTracking(page, recorder);
|
|
225
326
|
// Navigate to blank page to ensure window is ready and rendered
|
|
@@ -227,7 +328,7 @@ const _videoBase = base.extend({
|
|
|
227
328
|
// Wait for browser window to be fully rendered before starting recording
|
|
228
329
|
// This prevents black screen captures
|
|
229
330
|
await page.waitForTimeout(resolveRecordingTimingDuration(1500));
|
|
230
|
-
const screenRecorder = await startScreencastRecording(page, videoPath, fps, quality, aspectRatio);
|
|
331
|
+
const screenRecorder = await startScreencastRecording(page, videoPath, fps, quality, aspectRatio, encoder);
|
|
231
332
|
await positionMouseAtViewportCenter(page, dimensions);
|
|
232
333
|
await screenRecorder.start();
|
|
233
334
|
// Mark the moment the video recording actually begins after the cursor is positioned.
|
package/dist/src/video.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAU/C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/video.ts"],"names":[],"mappings":"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"}
|
package/dist/src/voices.d.ts
CHANGED
|
@@ -24,22 +24,33 @@ export type ModelType = (typeof modelTypes)[keyof typeof modelTypes];
|
|
|
24
24
|
*
|
|
25
25
|
* ```ts
|
|
26
26
|
* createNarration({
|
|
27
|
-
* en: { voice: voices.Aria, intro: 'Hello' },
|
|
28
|
-
* fi: { voice: voices.Aria, intro: 'Hei' },
|
|
27
|
+
* en: { voice: { name: voices.Aria }, intro: 'Hello' },
|
|
28
|
+
* fi: { voice: { name: voices.Aria }, intro: 'Hei' },
|
|
29
29
|
* })
|
|
30
30
|
* ```
|
|
31
31
|
*
|
|
32
|
-
* ElevenLabs voices are passed
|
|
32
|
+
* ElevenLabs voices are passed by provider voice id, or cloned from a local
|
|
33
|
+
* audio/video sample — both via `voices.elevenlabs(...)`:
|
|
33
34
|
*
|
|
34
35
|
* ```ts
|
|
35
36
|
* createNarration({
|
|
36
37
|
* en: {
|
|
37
|
-
* voice: voices.elevenlabs({ voiceId: 'tMvyQtpCVQ0DkixuYm6J' }),
|
|
38
|
+
* voice: { name: voices.elevenlabs({ voiceId: 'tMvyQtpCVQ0DkixuYm6J' }) },
|
|
38
39
|
* intro: 'Hello',
|
|
39
40
|
* },
|
|
41
|
+
* fi: {
|
|
42
|
+
* voice: { name: voices.elevenlabs({ path: './my-voice.mp3' }) },
|
|
43
|
+
* intro: 'Hei',
|
|
44
|
+
* },
|
|
40
45
|
* })
|
|
41
46
|
* ```
|
|
42
47
|
*/
|
|
48
|
+
declare function elevenlabsVoice(ref: {
|
|
49
|
+
voiceId: string;
|
|
50
|
+
}): ElevenLabsVoiceKey;
|
|
51
|
+
declare function elevenlabsVoice(ref: {
|
|
52
|
+
path: string;
|
|
53
|
+
}): CustomVoiceRef;
|
|
43
54
|
export declare const voices: {
|
|
44
55
|
/** Male — Clear — Direct and structured, ideal for straightforward explanations. */
|
|
45
56
|
readonly Adrian: "Adrian";
|
|
@@ -101,9 +112,7 @@ export declare const voices: {
|
|
|
101
112
|
readonly Victor: "Victor";
|
|
102
113
|
/** Female — Upbeat — Positive and motivating, encouraging continued interaction. */
|
|
103
114
|
readonly Zoe: "Zoe";
|
|
104
|
-
readonly elevenlabs:
|
|
105
|
-
voiceId: string;
|
|
106
|
-
}) => ElevenLabsVoiceKey;
|
|
115
|
+
readonly elevenlabs: typeof elevenlabsVoice;
|
|
107
116
|
};
|
|
108
117
|
export type ModelVoiceKey = keyof Omit<typeof voices, 'elevenlabs'>;
|
|
109
118
|
export type ElevenLabsVoiceKey = `elevenlabs:${string}`;
|
|
@@ -116,12 +125,16 @@ export declare const supportedLanguages: readonly ["ar", "bn", "nl", "en", "fr",
|
|
|
116
125
|
export type Lang = SupportedBaseLanguageCode;
|
|
117
126
|
/**
|
|
118
127
|
* A reference to a local audio or video file for ElevenLabs Instant Voice Cloning.
|
|
119
|
-
*
|
|
128
|
+
* Build one with `voices.elevenlabs({ path })` and pass it as the voice `name`
|
|
129
|
+
* in `createNarration` to clone a voice from the file at `path`.
|
|
120
130
|
*
|
|
121
131
|
* @example
|
|
122
132
|
* ```ts
|
|
123
133
|
* createNarration({
|
|
124
|
-
* en: {
|
|
134
|
+
* en: {
|
|
135
|
+
* voice: { name: voices.elevenlabs({ path: './my-voice.mp3' }) },
|
|
136
|
+
* intro: 'Hello.',
|
|
137
|
+
* },
|
|
125
138
|
* })
|
|
126
139
|
* ```
|
|
127
140
|
*/
|
package/dist/src/voices.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEpE
|
|
1
|
+
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,iBAAS,eAAe,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAAA;AACtE,iBAAS,eAAe,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAAA;AAY/D,eAAO,MAAM,MAAM;IACjB,oFAAoF;;IAGpF,2FAA2F;;IAG3F,+EAA+E;;IAG/E,+EAA+E;;IAG/E,4FAA4F;;IAG5F,+FAA+F;;IAG/F,yFAAyF;;IAGzF,gGAAgG;;IAGhG,+EAA+E;;IAG/E,qFAAqF;;IAGrF,0FAA0F;;IAG1F,iFAAiF;;IAGjF,+EAA+E;;IAG/E,sFAAsF;;IAGtF,uEAAuE;;IAGvE,4FAA4F;;IAG5F,4FAA4F;;IAG5F,sFAAsF;;IAGtF,qFAAqF;;IAGrF,yFAAyF;;IAGzF,4EAA4E;;IAG5E,+EAA+E;;IAG/E,wEAAwE;;IAGxE,6FAA6F;;IAG7F,gFAAgF;;IAGhF,oFAAoF;;IAGpF,6EAA6E;;IAG7E,iFAAiF;;IAGjF,sFAAsF;;IAGtF,oFAAoF;;;CAI5E,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,MAAM,EAAE,YAAY,CAAC,CAAA;AACnE,MAAM,MAAM,kBAAkB,GAAG,cAAc,MAAM,EAAE,CAAA;AAEvD,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,kBAAkB,CAAA;AAKzD,QAAA,MAAM,0BAA0B,oeA+EtB,CAAA;AAEV,KAAK,yBAAyB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5E,eAAO,MAAM,kBAAkB,oeAA6B,CAAA;AAE5D,qEAAqE;AACrE,MAAM,MAAM,IAAI,GAAG,yBAAyB,CAAA;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA"}
|
package/dist/src/voices.js
CHANGED
|
@@ -16,29 +16,11 @@ export const modelTypes = {
|
|
|
16
16
|
expressive: 'expressive',
|
|
17
17
|
consistent: 'consistent',
|
|
18
18
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* ```ts
|
|
25
|
-
* createNarration({
|
|
26
|
-
* en: { voice: voices.Aria, intro: 'Hello' },
|
|
27
|
-
* fi: { voice: voices.Aria, intro: 'Hei' },
|
|
28
|
-
* })
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* ElevenLabs voices are passed explicitly by provider voice id:
|
|
32
|
-
*
|
|
33
|
-
* ```ts
|
|
34
|
-
* createNarration({
|
|
35
|
-
* en: {
|
|
36
|
-
* voice: voices.elevenlabs({ voiceId: 'tMvyQtpCVQ0DkixuYm6J' }),
|
|
37
|
-
* intro: 'Hello',
|
|
38
|
-
* },
|
|
39
|
-
* })
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
19
|
+
function elevenlabsVoice(ref) {
|
|
20
|
+
return 'path' in ref
|
|
21
|
+
? { path: ref.path }
|
|
22
|
+
: `elevenlabs:${ref.voiceId}`;
|
|
23
|
+
}
|
|
42
24
|
// DOCS_SYNC:
|
|
43
25
|
// Keep the "Available voices" section in docs/narration-and-localization.md
|
|
44
26
|
// in sync with this list and the voice character blurbs below.
|
|
@@ -103,7 +85,7 @@ export const voices = {
|
|
|
103
85
|
Victor: 'Victor',
|
|
104
86
|
/** Female — Upbeat — Positive and motivating, encouraging continued interaction. */
|
|
105
87
|
Zoe: 'Zoe',
|
|
106
|
-
elevenlabs:
|
|
88
|
+
elevenlabs: elevenlabsVoice,
|
|
107
89
|
};
|
|
108
90
|
// DOCS_SYNC:
|
|
109
91
|
// Keep the "Available languages" section in docs/narration-and-localization.md
|
package/dist/src/voices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;CAChB,CAAA;
|
|
1
|
+
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"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"}
|