import type { AssembleManifestEntry } from './types.js'; /** Filename of the combined narration track (always mp3, see audio-concat.ts). */ export declare const COMBINED_NARRATION_FILENAME = "narration-combined.mp3"; /** A single narration segment: one scene's text. */ export interface TtsSegment { /** 1-based scene index, used for filenames + manifest ordering. */ sceneIndex: number; text: string; } export interface TtsInput { /** * Path to a transcript JSON file (per-scene narration). Standalone and * SEALCAM+-embedded shapes are supported — see `transcript.ts`. */ transcriptPath?: string; /** Optional editable-transcript per-scene overrides (editable_transcript.json). */ transcriptEditsPath?: string; /** Inline segments, used instead of `transcriptPath` when provided. */ segments?: TtsSegment[]; voiceId: string; modelId?: string; stability?: number; similarityBoost?: number; style?: number; speed?: number; /** Boost similarity to original voice (default true). */ speakerBoost?: boolean; outputFormat?: string; /** Directory to write per-scene + combined audio into. */ outputDir: string; /** Read from ELEVENLABS_API_KEY when omitted. */ apiKey?: string; /** Skip provider calls and file writes; report intended actions only. */ dryRun?: boolean; /** Optional override of ffprobe path for duration probing. */ ffprobeBin?: string; /** * Concatenate the per-scene audio into a single narration track * ({@link COMBINED_NARRATION_FILENAME} in `outputDir`). Default off. */ combine?: boolean; /** * With `combine`: pad each scene's audio with trailing silence to its scene * duration so the combined track stays aligned to the slide timeline. */ padToDuration?: boolean; /** Target per-scene on-screen durations, seconds (in scene order). */ sceneDurationsSec?: number[]; /** Optional override of ffmpeg path for the combined-track concat. */ ffmpegBin?: string; } export interface TtsSceneOutput { sceneIndex: number; path: string; durationMs: number; sizeBytes: number; } export interface TtsResult { status: 'complete' | 'dry-run'; /** Per-scene audio file paths. */ scenes: TtsSceneOutput[]; /** Path to the combined narration track (set when `combine` is on). */ combinedPath?: string; manifest: AssembleManifestEntry[]; /** Advisory notes (e.g. multi-voice scenes flattened to a single voice). */ warnings: string[]; } /** * Generate per-scene narration audio from a transcript or inline segments. * * TODO(3b later sub-commits): * - conductor / sync-to-slides: re-time slides to narration (the inverse of * `padToDuration`; `narration-fit.ts` plans this but the baker is unwired). * - bake-narration / speech-to-speech (swap) subcommands. * - per-speaker multi-voice synthesis (multi-voice scenes currently flatten * to one voice — see `transcript.ts`). */ export declare function generateTts(input: TtsInput): Promise; //# sourceMappingURL=tts.d.ts.map