feat(subtitles): use loaded subtitles to guide generation timing (#249)

This commit is contained in:
2026-09-18 00:24:42 -07:00
committed by GitHub
parent 186d4a0640
commit a8c16147ad
24 changed files with 965 additions and 75 deletions
+17 -2
View File
@@ -11,6 +11,10 @@ import { runSubtitleGenerationProcess } from './subtitle-generation-process';
import { publishSubtitleGenerationFile } from './subtitle-generation-files';
import { formatTimestamp } from './subtitle-generation-srt';
import { transcribeSubtitleDialogue } from './subtitle-generation-dialogue';
import {
loadSubtitleGenerationReference,
type SubtitleGenerationReference,
} from './subtitle-generation-reference';
import {
requireSubtitleGenerationTools,
resolveSubtitleGenerationTools,
@@ -174,6 +178,7 @@ export async function generateJapaneseSubtitles(input: {
modelDirectory: string;
mediaPath: string;
audioStreamIndex?: number;
references?: readonly SubtitleGenerationReference[];
outputPath?: string;
onProgress?: (progress: SubtitleGenerationProgress) => void;
signal?: AbortSignal;
@@ -257,11 +262,21 @@ export async function generateJapaneseSubtitles(input: {
percent: 0,
message: 'Generating Japanese subtitles...',
});
const referenceStarts = await loadSubtitleGenerationReference({
references: input.references ?? [],
mediaPath,
ffmpegPath: tools.ffmpeg,
directory: temporaryDirectory,
audioOffset: audio.offset,
onProgress: input.onProgress,
signal: input.signal,
});
let srt: string;
if (tools.vad !== null) {
if (tools.vad !== null || referenceStarts.length > 0) {
srt = await transcribeSubtitleDialogue({
config: input.config,
tools: { ...tools, vad: tools.vad },
tools,
referenceStarts,
modelPath: model.path,
wavPath,
directory: temporaryDirectory,