@thunderkiller/video-clipper 1.5.3 → 1.5.4
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/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/env.d.ts +49 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +1 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib.d.ts +17 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +17 -0
- package/dist/lib.js.map +1 -0
- package/dist/pipeline/runner.d.ts +23 -0
- package/dist/pipeline/runner.d.ts.map +1 -0
- package/dist/pipeline/runner.js +1 -0
- package/dist/pipeline/runner.js.map +1 -0
- package/dist/pipeline/stages/audioProcessor.d.ts +20 -0
- package/dist/pipeline/stages/audioProcessor.d.ts.map +1 -0
- package/dist/pipeline/stages/audioProcessor.js +1 -0
- package/dist/pipeline/stages/audioProcessor.js.map +1 -0
- package/dist/pipeline/stages/clipExporter.d.ts +15 -0
- package/dist/pipeline/stages/clipExporter.d.ts.map +1 -0
- package/dist/pipeline/stages/clipExporter.js +1 -0
- package/dist/pipeline/stages/clipExporter.js.map +1 -0
- package/dist/pipeline/stages/segmentAnalyzer.d.ts +27 -0
- package/dist/pipeline/stages/segmentAnalyzer.d.ts.map +1 -0
- package/dist/pipeline/stages/segmentAnalyzer.js +1 -0
- package/dist/pipeline/stages/segmentAnalyzer.js.map +1 -0
- package/dist/pipeline/stages/segmentSelector.d.ts +13 -0
- package/dist/pipeline/stages/segmentSelector.d.ts.map +1 -0
- package/dist/pipeline/stages/segmentSelector.js +1 -0
- package/dist/pipeline/stages/segmentSelector.js.map +1 -0
- package/dist/pipeline/stages/videoResolver.d.ts +12 -0
- package/dist/pipeline/stages/videoResolver.d.ts.map +1 -0
- package/dist/pipeline/stages/videoResolver.js +1 -0
- package/dist/pipeline/stages/videoResolver.js.map +1 -0
- package/dist/services/audioAnalyzers/base.d.ts +26 -0
- package/dist/services/audioAnalyzers/base.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/base.js +1 -0
- package/dist/services/audioAnalyzers/base.js.map +1 -0
- package/dist/services/audioAnalyzers/factory.d.ts +23 -0
- package/dist/services/audioAnalyzers/factory.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/factory.js +1 -0
- package/dist/services/audioAnalyzers/factory.js.map +1 -0
- package/dist/services/audioAnalyzers/gemini.d.ts +29 -0
- package/dist/services/audioAnalyzers/gemini.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/gemini.js +1 -0
- package/dist/services/audioAnalyzers/gemini.js.map +1 -0
- package/dist/services/audioAnalyzers/index.d.ts +7 -0
- package/dist/services/audioAnalyzers/index.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/index.js +1 -0
- package/dist/services/audioAnalyzers/index.js.map +1 -0
- package/dist/services/audioAnalyzers/whisper.d.ts +14 -0
- package/dist/services/audioAnalyzers/whisper.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/whisper.js +3 -1
- package/dist/services/audioAnalyzers/whisper.js.map +1 -0
- package/dist/services/audioAnalyzers/yamnet.d.ts +13 -0
- package/dist/services/audioAnalyzers/yamnet.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/yamnet.js +3 -1
- package/dist/services/audioAnalyzers/yamnet.js.map +1 -0
- package/dist/services/audioDownloader/index.d.ts +2 -0
- package/dist/services/audioDownloader/index.d.ts.map +1 -0
- package/dist/services/audioDownloader/index.js +1 -0
- package/dist/services/audioDownloader/index.js.map +1 -0
- package/dist/services/chunkBuilder/index.d.ts +20 -0
- package/dist/services/chunkBuilder/index.d.ts.map +1 -0
- package/dist/services/chunkBuilder/index.js +1 -0
- package/dist/services/chunkBuilder/index.js.map +1 -0
- package/dist/services/clipGenerator/index.d.ts +30 -0
- package/dist/services/clipGenerator/index.d.ts.map +1 -0
- package/dist/services/clipGenerator/index.js +1 -0
- package/dist/services/clipGenerator/index.js.map +1 -0
- package/dist/services/clipRefiner/index.d.ts +9 -0
- package/dist/services/clipRefiner/index.d.ts.map +1 -0
- package/dist/services/clipRefiner/index.js +1 -0
- package/dist/services/clipRefiner/index.js.map +1 -0
- package/dist/services/eventDetector/index.d.ts +28 -0
- package/dist/services/eventDetector/index.d.ts.map +1 -0
- package/dist/services/eventDetector/index.js +1 -0
- package/dist/services/eventDetector/index.js.map +1 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts +41 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts.map +1 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.js +1 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.js.map +1 -0
- package/dist/services/llmAnalyzer/index.d.ts +8 -0
- package/dist/services/llmAnalyzer/index.d.ts.map +1 -0
- package/dist/services/llmAnalyzer/index.js +1 -0
- package/dist/services/llmAnalyzer/index.js.map +1 -0
- package/dist/services/metadataExtractor/index.d.ts +12 -0
- package/dist/services/metadataExtractor/index.d.ts.map +1 -0
- package/dist/services/metadataExtractor/index.js +1 -0
- package/dist/services/metadataExtractor/index.js.map +1 -0
- package/dist/services/segmentRanker/index.d.ts +3 -0
- package/dist/services/segmentRanker/index.d.ts.map +1 -0
- package/dist/services/segmentRanker/index.js +1 -0
- package/dist/services/segmentRanker/index.js.map +1 -0
- package/dist/services/signalMerger/index.d.ts +5 -0
- package/dist/services/signalMerger/index.d.ts.map +1 -0
- package/dist/services/signalMerger/index.js +1 -0
- package/dist/services/signalMerger/index.js.map +1 -0
- package/dist/services/transcriptAnalyzers/base.d.ts +25 -0
- package/dist/services/transcriptAnalyzers/base.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/base.js +1 -0
- package/dist/services/transcriptAnalyzers/base.js.map +1 -0
- package/dist/services/transcriptAnalyzers/factory.d.ts +21 -0
- package/dist/services/transcriptAnalyzers/factory.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/factory.js +1 -0
- package/dist/services/transcriptAnalyzers/factory.js.map +1 -0
- package/dist/services/transcriptAnalyzers/gemini.d.ts +18 -0
- package/dist/services/transcriptAnalyzers/gemini.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/gemini.js +1 -0
- package/dist/services/transcriptAnalyzers/gemini.js.map +1 -0
- package/dist/services/transcriptAnalyzers/index.d.ts +7 -0
- package/dist/services/transcriptAnalyzers/index.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/index.js +1 -0
- package/dist/services/transcriptAnalyzers/index.js.map +1 -0
- package/dist/services/transcriptAnalyzers/whisper.d.ts +18 -0
- package/dist/services/transcriptAnalyzers/whisper.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/whisper.js +3 -1
- package/dist/services/transcriptAnalyzers/whisper.js.map +1 -0
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts +15 -0
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/ytdlp.js +1 -0
- package/dist/services/transcriptAnalyzers/ytdlp.js.map +1 -0
- package/dist/services/transcriptDetector/index.d.ts +53 -0
- package/dist/services/transcriptDetector/index.d.ts.map +1 -0
- package/dist/services/transcriptDetector/index.js +1 -0
- package/dist/services/transcriptDetector/index.js.map +1 -0
- package/dist/services/transcriptFetcher/index.d.ts +26 -0
- package/dist/services/transcriptFetcher/index.d.ts.map +1 -0
- package/dist/services/transcriptFetcher/index.js +1 -0
- package/dist/services/transcriptFetcher/index.js.map +1 -0
- package/dist/services/urlParser/index.d.ts +12 -0
- package/dist/services/urlParser/index.d.ts.map +1 -0
- package/dist/services/urlParser/index.js +1 -0
- package/dist/services/urlParser/index.js.map +1 -0
- package/dist/services/videoDownloader/index.d.ts +27 -0
- package/dist/services/videoDownloader/index.d.ts.map +1 -0
- package/dist/services/videoDownloader/index.js +1 -0
- package/dist/services/videoDownloader/index.js.map +1 -0
- package/dist/types/analyzer.d.ts +21 -0
- package/dist/types/analyzer.d.ts.map +1 -0
- package/dist/types/analyzer.js +1 -0
- package/dist/types/analyzer.js.map +1 -0
- package/dist/types/audio.d.ts +26 -0
- package/dist/types/audio.d.ts.map +1 -0
- package/dist/types/audio.js +1 -0
- package/dist/types/audio.js.map +1 -0
- package/dist/types/cache.d.ts +7 -0
- package/dist/types/cache.d.ts.map +1 -0
- package/dist/types/cache.js +1 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/cli.d.ts +23 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +1 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +90 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/downloader.d.ts +11 -0
- package/dist/types/downloader.d.ts.map +1 -0
- package/dist/types/downloader.js +1 -0
- package/dist/types/downloader.js.map +1 -0
- package/dist/types/factory.d.ts +3 -0
- package/dist/types/factory.d.ts.map +1 -0
- package/dist/types/factory.js +1 -0
- package/dist/types/factory.js.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pipeline.d.ts +48 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +1 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/types/segment.d.ts +42 -0
- package/dist/types/segment.d.ts.map +1 -0
- package/dist/types/segment.js +1 -0
- package/dist/types/segment.js.map +1 -0
- package/dist/types/transcript.d.ts +20 -0
- package/dist/types/transcript.d.ts.map +1 -0
- package/dist/types/transcript.js +1 -0
- package/dist/types/transcript.js.map +1 -0
- package/dist/types/video.d.ts +44 -0
- package/dist/types/video.d.ts.map +1 -0
- package/dist/types/video.js +1 -0
- package/dist/types/video.js.map +1 -0
- package/dist/utils/cache.d.ts +34 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +1 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/chunker.d.ts +38 -0
- package/dist/utils/chunker.d.ts.map +1 -0
- package/dist/utils/chunker.js +1 -0
- package/dist/utils/chunker.js.map +1 -0
- package/dist/utils/dumper.d.ts +12 -0
- package/dist/utils/dumper.d.ts.map +1 -0
- package/dist/utils/dumper.js +1 -0
- package/dist/utils/dumper.js.map +1 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +1 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/logger.d.ts +6 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/modelFactory.d.ts +14 -0
- package/dist/utils/modelFactory.d.ts.map +1 -0
- package/dist/utils/modelFactory.js +1 -0
- package/dist/utils/modelFactory.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +20 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/redactConfig.d.ts +7 -0
- package/dist/utils/redactConfig.d.ts.map +1 -0
- package/dist/utils/redactConfig.js +1 -0
- package/dist/utils/redactConfig.js.map +1 -0
- package/dist/utils/sliceAudio.d.ts +2 -0
- package/dist/utils/sliceAudio.d.ts.map +1 -0
- package/dist/utils/sliceAudio.js +1 -0
- package/dist/utils/sliceAudio.js.map +1 -0
- package/package.json +26 -2
- package/requirements.txt +5 -0
- package/scripts/detect_events.py +81 -0
- package/scripts/detect_events_whisper.py +101 -0
- package/scripts/transcribe_whisper.py +70 -0
- package/.env.example +0 -130
- package/CHANGELOG.md +0 -102
- package/CONTRIBUTING.md +0 -100
- package/commitlint.config.js +0 -25
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,YAAY,EAAE,OAAO,EAAE,CAAC;AAMxB,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA+HjD;AAMD,wBAAgB,UAAU,IAAI,IAAI,CA0CjC"}
|
package/dist/cli.js
CHANGED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import 'dotenv/config';
|
|
2
|
+
export declare const config: {
|
|
3
|
+
LLM_PROVIDER: "openai" | "anthropic" | "google" | "xai" | "mistral" | "groq" | "zai" | "openrouter" | "custom";
|
|
4
|
+
SCORE_THRESHOLD: number;
|
|
5
|
+
TOP_N_SEGMENTS: number;
|
|
6
|
+
CHUNK_LENGTH_SEC: number;
|
|
7
|
+
CHUNK_OVERLAP_SEC: number;
|
|
8
|
+
MICRO_BLOCK_SEC: number;
|
|
9
|
+
LLM_MODEL: string;
|
|
10
|
+
LLM_MAX_RETRIES: number;
|
|
11
|
+
DOWNLOAD_DIR: string;
|
|
12
|
+
OUTPUT_DIR: string;
|
|
13
|
+
CACHE_DIR: string;
|
|
14
|
+
DUMP_OUTPUTS: boolean;
|
|
15
|
+
LLM_CONCURRENCY: number;
|
|
16
|
+
CLIP_CONCURRENCY: number;
|
|
17
|
+
AUDIO_GEMINI_MODEL: string;
|
|
18
|
+
DOWNLOAD_SECTIONS_MODE: number | "all";
|
|
19
|
+
FFMPEG_PRESET: "ultrafast" | "superfast" | "veryfast" | "fast" | "medium" | "slow" | "slower";
|
|
20
|
+
TIMESTAMP_OFFSET_SECONDS: number;
|
|
21
|
+
TRANSCRIPT_PROVIDER: string;
|
|
22
|
+
AUDIO_DETECTION_ENABLED: boolean;
|
|
23
|
+
AUDIO_PROVIDER: string;
|
|
24
|
+
AUDIO_WHISPER_MODEL: "medium" | "tiny" | "base" | "small" | "large-v3";
|
|
25
|
+
AUDIO_CONFIDENCE_THRESHOLD: number;
|
|
26
|
+
AUDIO_CLIP_PRE_ROLL: number;
|
|
27
|
+
AUDIO_CLIP_POST_ROLL: number;
|
|
28
|
+
AUDIO_LLM_BOOST_WINDOW: number;
|
|
29
|
+
AUDIO_LLM_SCORE_BOOST: number;
|
|
30
|
+
GAME_PROFILE: "valorant" | "fps" | "boss_fight" | "general";
|
|
31
|
+
OPENAI_API_KEY?: string | undefined;
|
|
32
|
+
ANTHROPIC_API_KEY?: string | undefined;
|
|
33
|
+
GOOGLE_GENERATIVE_AI_API_KEY?: string | undefined;
|
|
34
|
+
XAI_API_KEY?: string | undefined;
|
|
35
|
+
MISTRAL_API_KEY?: string | undefined;
|
|
36
|
+
GROQ_API_KEY?: string | undefined;
|
|
37
|
+
ZAI_API_KEY?: string | undefined;
|
|
38
|
+
OPENROUTER_API_KEY?: string | undefined;
|
|
39
|
+
CUSTOM_OPENAI_API_KEY?: string | undefined;
|
|
40
|
+
CUSTOM_OPENAI_BASE_URL?: string | undefined;
|
|
41
|
+
MAX_CHUNKS?: number | undefined;
|
|
42
|
+
LLM_SYSTEM_PROMPT?: string | undefined;
|
|
43
|
+
AUDIO_EXTRA_INSTRUCTIONS?: string | undefined;
|
|
44
|
+
FFMPEG_PATH?: string | undefined;
|
|
45
|
+
FFPROBE_PATH?: string | undefined;
|
|
46
|
+
YT_DLP_COOKIES_FROM_BROWSER?: "chrome" | "firefox" | "safari" | "brave" | "edge" | "opera" | "chromium" | undefined;
|
|
47
|
+
YT_DLP_COOKIES_FILE?: string | undefined;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAiBvB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAe,CAAC"}
|
package/dist/config/env.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACnD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/config/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
import { log } from './utils/logger.js';
|
|
2
3
|
import { formatConfig } from './utils/redactConfig.js';
|
|
3
4
|
import { config } from './config/index.js';
|
|
@@ -33,3 +34,4 @@ runPipeline(args).catch((err) => {
|
|
|
33
34
|
log.error(err instanceof Error ? err.message : String(err));
|
|
34
35
|
process.exit(1);
|
|
35
36
|
});
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAErC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACtC,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAChD,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC7C,GAAG,CAAC,IAAI,CACN,8FAA8F,CAC/F,CAAC;AACJ,CAAC;AAED,GAAG,CAAC,IAAI,CACN,kCAAkC,MAAM,CAAC,SAAS,GAAG;IACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;QACrE,CAAC,CAAC,0BAA0B,IAAI,CAAC,gBAAgB,GAAG;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/D,CAAC;AACF,GAAG,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5C,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC9B,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/lib.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public programmatic API for @thunderkiller/video-clipper.
|
|
3
|
+
*
|
|
4
|
+
* Import from this entrypoint when using the package as a library:
|
|
5
|
+
*
|
|
6
|
+
* import { runPipeline, parseArgs, config } from '@thunderkiller/video-clipper'
|
|
7
|
+
*
|
|
8
|
+
* For CLI usage, use the `video-clipper` binary that is installed alongside
|
|
9
|
+
* the package (mapped via the `bin` field in package.json).
|
|
10
|
+
*/
|
|
11
|
+
export { runPipeline } from './pipeline/runner.js';
|
|
12
|
+
export { parseArgs, printUsage } from './cli.js';
|
|
13
|
+
export { config } from './config/index.js';
|
|
14
|
+
export { scriptPath, PACKAGE_ROOT } from './utils/paths.js';
|
|
15
|
+
export type { Config, TranscriptLine, MicroBlock, LLMChunk, AnalyzedSegment, RankedSegment, ChunkEvaluation, AudioEvent, MergedCandidate, VideoMetadata, PipelineResult, CliArgs, ChunkWindow, VideoResolverResult, AudioProcessorOpts, SegmentAnalyzerOpts, SegmentAnalyzerResult, SegmentSelectorOpts, ClipExporterOpts, LLMAnalyzerResult, LLMAnalyzerOpts, TranscriptDetectorResult, DownloadMode, DownloadResultAll, DownloadResultSegments, DownloadResult, SegmentRefinement, TranscriptProviderName, AudioProviderName, } from './types/index.js';
|
|
16
|
+
export { ConfigSchema, TranscriptLineSchema, MicroBlockSchema, LLMChunkSchema, AnalyzedSegmentSchema, RankedSegmentSchema, ChunkEvaluationSchema, AudioEventSchema, MergedCandidateSchema, VideoMetadataSchema, PipelineResultSchema, SegmentRefinementSchema, } from './types/index.js';
|
|
17
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG5D,YAAY,EACV,MAAM,EACN,cAAc,EACd,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
|
package/dist/lib.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public programmatic API for @thunderkiller/video-clipper.
|
|
3
|
+
*
|
|
4
|
+
* Import from this entrypoint when using the package as a library:
|
|
5
|
+
*
|
|
6
|
+
* import { runPipeline, parseArgs, config } from '@thunderkiller/video-clipper'
|
|
7
|
+
*
|
|
8
|
+
* For CLI usage, use the `video-clipper` binary that is installed alongside
|
|
9
|
+
* the package (mapped via the `bin` field in package.json).
|
|
10
|
+
*/
|
|
11
|
+
export { runPipeline } from './pipeline/runner.js';
|
|
12
|
+
export { parseArgs, printUsage } from './cli.js';
|
|
13
|
+
export { config } from './config/index.js';
|
|
14
|
+
export { scriptPath, PACKAGE_ROOT } from './utils/paths.js';
|
|
15
|
+
// Zod schemas for consumers who want to validate data themselves
|
|
16
|
+
export { ConfigSchema, TranscriptLineSchema, MicroBlockSchema, LLMChunkSchema, AnalyzedSegmentSchema, RankedSegmentSchema, ChunkEvaluationSchema, AudioEventSchema, MergedCandidateSchema, VideoMetadataSchema, PipelineResultSchema, SegmentRefinementSchema, } from './types/index.js';
|
|
17
|
+
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmC5D,iEAAiE;AACjE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CliArgs } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs the full video-clipper pipeline for the given CLI arguments.
|
|
4
|
+
*
|
|
5
|
+
* Stage ordering:
|
|
6
|
+
* 1. resolveVideo — parse URL, extract video ID + metadata
|
|
7
|
+
* 2. downloadAudio — download WAV so Whisper/Gemini transcript providers can use it
|
|
8
|
+
* 3. processAudio — detect audio events per window (reuses downloaded WAV)
|
|
9
|
+
* 4a. analyzeSegments — fetch transcript + LLM pass 1 (informed by audio events)
|
|
10
|
+
* 5. selectSegments — merge signals, rank, threshold filter
|
|
11
|
+
* 4b. refineRankedSegments — LLM pass 2 to tighten clip boundaries
|
|
12
|
+
* 6. exportClips — download video + run ffmpeg (only if --clip)
|
|
13
|
+
*
|
|
14
|
+
* downloadAudio runs before analyzeSegments so that `audioPath` is available
|
|
15
|
+
* for Whisper/Gemini transcript providers. processAudio reuses the same WAV.
|
|
16
|
+
*
|
|
17
|
+
* Hard errors (invalid URL, transcript failure, all LLM chunks failed) are
|
|
18
|
+
* thrown so the caller can catch, log, and exit(1). Soft failures (audio
|
|
19
|
+
* detection, individual clip failures) are logged as warnings and the pipeline
|
|
20
|
+
* continues.
|
|
21
|
+
*/
|
|
22
|
+
export declare function runPipeline(args: CliArgs): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAejE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoG9D"}
|
package/dist/pipeline/runner.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Cache } from '../../utils/cache.js';
|
|
2
|
+
import type { AudioEvent, AudioProcessorOpts } from '../../types/index.js';
|
|
3
|
+
export type { AudioProcessorOpts };
|
|
4
|
+
/**
|
|
5
|
+
* Stage 3 — Audio Processor
|
|
6
|
+
*
|
|
7
|
+
* Downloads audio-only WAV, slices it into chunks using the generic
|
|
8
|
+
* `buildWindows` utility, runs event detection on each slice via an
|
|
9
|
+
* EventDetector (constructed from the ordered provider chain in config),
|
|
10
|
+
* and persists the results to cache.
|
|
11
|
+
*
|
|
12
|
+
* The provider chain is built once per run from `config.AUDIO_PROVIDER`
|
|
13
|
+
* (e.g. "gemini,whisper") via `createAnalyzerChain`. The EventDetector
|
|
14
|
+
* walks the chain in order, falling back to the next analyzer on failure.
|
|
15
|
+
*
|
|
16
|
+
* Returns an empty array immediately when audio detection is disabled via
|
|
17
|
+
* `--no-audio` or the `AUDIO_DETECTION_ENABLED` config flag.
|
|
18
|
+
*/
|
|
19
|
+
export declare function processAudio(videoId: string, duration: number, cache: Cache, opts: AudioProcessorOpts): Promise<AudioEvent[]>;
|
|
20
|
+
//# sourceMappingURL=audioProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioProcessor.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/audioProcessor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC,CA4FvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioProcessor.js","sourceRoot":"","sources":["../../../src/pipeline/stages/audioProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RankedSegment, ClipExporterOpts } from '../../types/index.js';
|
|
2
|
+
export type { ClipExporterOpts };
|
|
3
|
+
/**
|
|
4
|
+
* Stage 6 — Clip Exporter
|
|
5
|
+
*
|
|
6
|
+
* Handles all three clip-generation modes:
|
|
7
|
+
* 1. Local video — user supplied --local-video; run ffmpeg directly
|
|
8
|
+
* 2. Segments -- --download-sections N; download top-N clips via yt-dlp
|
|
9
|
+
* --download-sections, then copy to outputs/
|
|
10
|
+
* 3. Full video — download full video with yt-dlp, then cut clips with ffmpeg
|
|
11
|
+
*
|
|
12
|
+
* @returns Array of absolute paths to the generated clip files.
|
|
13
|
+
*/
|
|
14
|
+
export declare function exportClips(videoId: string, segments: RankedSegment[], opts: ClipExporterOpts): Promise<string[]>;
|
|
15
|
+
//# sourceMappingURL=clipExporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipExporter.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/clipExporter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipExporter.js","sourceRoot":"","sources":["../../../src/pipeline/stages/clipExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAK/C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,QAAyB,EACzB,IAAsB;IAEtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAClD,OAAO,aAAa,CAClB,IAAI,CAAC,UAAU,EACf,QAAQ,EACR,OAAO,EACP,IAAI,CAAC,SAAS,EACd,MAAM,CAAC,gBAAgB,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,sBAAsB,CAAC;IAEhF,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAE/D,IAAI,kBAAkB,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CACN,aAAa,gBAAgB,uBAAuB,kBAAkB,CAAC,MAAM,iCAAiC,CAC/G,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,eAAe,kBAAkB,CAAC,MAAM,6CAA6C,CAAC,CAAC;QAChG,MAAM,cAAc,GAAG,MAAM,aAAa,CACxC,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,IAAI,cAAc,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC/F,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/E,IAAI,cAAc,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,aAAa,CAClB,cAAc,CAAC,IAAI,EACnB,QAAQ,EACR,OAAO,EACP,IAAI,CAAC,SAAS,EACd,MAAM,CAAC,gBAAgB,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Cache } from '../../utils/cache.js';
|
|
2
|
+
import type { AudioEvent, MicroBlock, RankedSegment, SegmentAnalyzerOpts, SegmentAnalyzerResult } from '../../types/index.js';
|
|
3
|
+
export type { SegmentAnalyzerOpts, SegmentAnalyzerResult };
|
|
4
|
+
/**
|
|
5
|
+
* Stage 4a — Segment Analyzer (LLM pass 1)
|
|
6
|
+
*
|
|
7
|
+
* Builds a TranscriptDetector from config.TRANSCRIPT_PROVIDER and an
|
|
8
|
+
* LLMAnalyzer that owns it. Fetches the transcript (cache-first) and runs
|
|
9
|
+
* LLM chunk analysis informed by pre-computed audio events.
|
|
10
|
+
*
|
|
11
|
+
* Returns raw ChunkEvaluation results plus transcript data (lines, microBlocks,
|
|
12
|
+
* chunks) so the runner has everything it needs for ranking.
|
|
13
|
+
*
|
|
14
|
+
* NOTE: `processTranscript` no longer needs to run as a separate stage before
|
|
15
|
+
* this function — `LLMAnalyzer.analyze()` handles transcript fetching internally.
|
|
16
|
+
*/
|
|
17
|
+
export declare function analyzeSegments(videoId: string, audioPath: string | null, audioEvents: AudioEvent[], cache: Cache, opts: SegmentAnalyzerOpts): Promise<SegmentAnalyzerResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Stage 4b — Segment Refiner (LLM pass 2)
|
|
20
|
+
*
|
|
21
|
+
* Calls refineSegments() directly — no TranscriptDetector needed here since
|
|
22
|
+
* refinement only tightens clip boundaries and never touches the transcript.
|
|
23
|
+
* Separated from `analyzeSegments` because ranking (stage 5) must happen
|
|
24
|
+
* between the two passes.
|
|
25
|
+
*/
|
|
26
|
+
export declare function refineRankedSegments(rankedSegments: RankedSegment[], microBlocks: MicroBlock[], _cache: Cache, opts: Pick<SegmentAnalyzerOpts, 'maxParallel' | 'noCache'>): Promise<RankedSegment[]>;
|
|
27
|
+
//# sourceMappingURL=segmentAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentAnalyzer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,EAAE,UAAU,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,aAAa,EAAE,EAC/B,WAAW,EAAE,UAAU,EAAE,EACzB,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,SAAS,CAAC,GACzD,OAAO,CAAC,aAAa,EAAE,CAAC,CAG1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentAnalyzer.js","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAY/C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,SAAwB,EACxB,WAAyB,EACzB,KAAY,EACZ,IAAyB;IAEzB,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAE1D,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAChE,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACxE,OAAO;QACP,SAAS;QACT,WAAW;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,cAA+B,EAC/B,WAAyB,EACzB,MAAa,EACb,IAA0D;IAE1D,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACxC,OAAO,cAAc,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ChunkEvaluation, AudioEvent, RankedSegment, SegmentSelectorOpts } from '../../types/index.js';
|
|
2
|
+
export type { SegmentSelectorOpts };
|
|
3
|
+
/**
|
|
4
|
+
* Stage 5 — Segment Selector
|
|
5
|
+
*
|
|
6
|
+
* Merges transcript LLM evaluations with audio events (if any), then ranks
|
|
7
|
+
* and deduplicates candidates to produce the final ordered list of segments.
|
|
8
|
+
*
|
|
9
|
+
* This stage sits between the two LLM passes: it runs after `analyzeSegments`
|
|
10
|
+
* (pass 1) and its output feeds `refineRankedSegments` (pass 2).
|
|
11
|
+
*/
|
|
12
|
+
export declare function selectSegments(chunkEvals: ChunkEvaluation[], audioEvents: AudioEvent[], opts: SegmentSelectorOpts): RankedSegment[];
|
|
13
|
+
//# sourceMappingURL=segmentSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentSelector.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentSelector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,aAAa,EACb,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,eAAe,EAAE,EAC7B,WAAW,EAAE,UAAU,EAAE,EACzB,IAAI,EAAE,mBAAmB,GACxB,aAAa,EAAE,CAajB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentSelector.js","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAU5C;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,UAA6B,EAC7B,WAAyB,EACzB,IAAyB;IAEzB,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CACN,sBAAsB,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oBAAoB,IAAI,CAAC,SAAS,EAAE,CACjH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { VideoResolverResult } from '../../types/index.js';
|
|
2
|
+
export type { VideoResolverResult };
|
|
3
|
+
/**
|
|
4
|
+
* Stage 1 — Video Resolver
|
|
5
|
+
*
|
|
6
|
+
* Parses a raw YouTube URL into a validated video ID, fetches metadata
|
|
7
|
+
* (title + duration), and enforces the optional --max-duration guard.
|
|
8
|
+
*
|
|
9
|
+
* @throws {Error} on invalid URL, metadata fetch failure, or exceeded duration
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveVideo(rawUrl: string, maxDurationSec?: number): Promise<VideoResolverResult>;
|
|
12
|
+
//# sourceMappingURL=videoResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoResolver.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/videoResolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAwB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoResolver.js","sourceRoot":"","sources":["../../../src/pipeline/stages/videoResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,cAAuB;IAEvB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,yBAAyB,OAAO,KAAK,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAChD,GAAG,CAAC,IAAI,CACN,WAAW,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAChH,CAAC;IAEF,IAAI,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,QAAQ,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,+CAA+C;gBAC7C,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,cAAc,CAAC,GAAG,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AudioEvent } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Contract every audio analyzer implementation must satisfy.
|
|
4
|
+
*
|
|
5
|
+
* Each concrete analyzer (Gemini, Whisper, YAMNet) extends this class and
|
|
6
|
+
* implements `detect()`. The `source` property is used to tag the events they
|
|
7
|
+
* return so downstream code knows which backend produced them.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const analyzer = new GeminiAudioAnalyzer();
|
|
11
|
+
* const events = await analyzer.detect(audioPath, gameProfile, offsetSec, durationSec);
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class AudioAnalyzer {
|
|
14
|
+
abstract readonly source: AudioEvent['source'];
|
|
15
|
+
/**
|
|
16
|
+
* Detect audio events in the given WAV slice.
|
|
17
|
+
*
|
|
18
|
+
* @param audioPath - Path to the WAV audio slice on disk
|
|
19
|
+
* @param gameProfile - Profile key used to tune detection prompts/classes
|
|
20
|
+
* @param chunkOffsetSec - Absolute start time of this slice within the full video (seconds)
|
|
21
|
+
* @param chunkDurationSec - Duration of this slice in seconds
|
|
22
|
+
* @returns Array of detected events with absolute timestamps
|
|
23
|
+
*/
|
|
24
|
+
abstract detect(audioPath: string, gameProfile: string, chunkOffsetSec: number, chunkDurationSec: number): Promise<AudioEvent[]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,8BAAsB,aAAa;IACjC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE/C;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CACb,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/base.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,aAAa;CAkBlC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AudioAnalyzer } from './base.js';
|
|
2
|
+
import type { AudioProviderName } from '../../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Parses the AUDIO_PROVIDER config string into an ordered list of provider names.
|
|
5
|
+
*
|
|
6
|
+
* Accepts a comma-separated list: "gemini,whisper" → ['gemini', 'whisper']
|
|
7
|
+
* Single values still work: "yamnet" → ['yamnet']
|
|
8
|
+
*
|
|
9
|
+
* Backward-compat: "both" is mapped to ['gemini', 'whisper'] with a deprecation warning.
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseProviderChain(providerString: string): AudioProviderName[];
|
|
12
|
+
/**
|
|
13
|
+
* Builds an ordered array of AudioAnalyzer instances from a provider chain string.
|
|
14
|
+
*
|
|
15
|
+
* The EventDetector will walk this array in order — if the first analyzer fails,
|
|
16
|
+
* it falls back to the next, and so on.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // AUDIO_PROVIDER=gemini,whisper → [GeminiAudioAnalyzer, WhisperAudioAnalyzer]
|
|
20
|
+
* const chain = createAnalyzerChain(config.AUDIO_PROVIDER);
|
|
21
|
+
*/
|
|
22
|
+
export declare function createAnalyzerChain(providerString: string): AudioAnalyzer[];
|
|
23
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA0B9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,EAAE,CAa3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEpF;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAAsB;IACvD,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CACN,uFAAuF,CACxF,CAAC;QACF,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAG,cAAc;SACzB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAyB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,uEAAuE,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAA4B,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,IAAI,mBAAmB,EAAE,CAAC;YACnC,KAAK,SAAS;gBACZ,OAAO,IAAI,oBAAoB,EAAE,CAAC;YACpC,KAAK,QAAQ;gBACX,OAAO,IAAI,mBAAmB,EAAE,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AudioEvent } from '../../types/index.js';
|
|
2
|
+
import { AudioAnalyzer } from './base.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves a Gemini `time_sec` value to true decimal seconds.
|
|
5
|
+
*
|
|
6
|
+
* Gemini inconsistently returns either MM.SS notation (e.g. 1.03 meaning 63s)
|
|
7
|
+
* or true decimal seconds (e.g. 53.403). This function disambiguates using
|
|
8
|
+
* the known chunk duration:
|
|
9
|
+
*
|
|
10
|
+
* 1. If the fractional part > 0.59, it cannot be a seconds component (seconds
|
|
11
|
+
* only go 0-59), so it must be true decimal seconds — use as-is.
|
|
12
|
+
* 2. Otherwise, check if the MM.SS conversion produces a value within the
|
|
13
|
+
* valid chunk range [0, chunkDurationSec). If yes, treat as MM.SS.
|
|
14
|
+
* 3. Fallback: use the value as true decimal seconds (the format we asked for).
|
|
15
|
+
*
|
|
16
|
+
* YAMNet always returns true decimal seconds and does NOT use this function.
|
|
17
|
+
*/
|
|
18
|
+
export declare function normalizeGeminiTime(value: number, chunkDurationSec: number): number;
|
|
19
|
+
/**
|
|
20
|
+
* Uses Google Gemini's multimodal API to detect audio events in a WAV slice.
|
|
21
|
+
* Understands game context semantically — best accuracy for gaming content.
|
|
22
|
+
*
|
|
23
|
+
* Requires GOOGLE_GENERATIVE_AI_API_KEY to be set.
|
|
24
|
+
*/
|
|
25
|
+
export declare class GeminiAudioAnalyzer extends AudioAnalyzer {
|
|
26
|
+
readonly source: "gemini";
|
|
27
|
+
detect(audioPath: string, gameProfile: string, chunkOffsetSec: number, chunkDurationSec: number): Promise<AudioEvent[]>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/gemini.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAoC1C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAanF;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;IAE9B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;CAiDzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { AudioAnalyzer } from './base.js';
|
|
2
|
+
export { GeminiAudioAnalyzer, normalizeGeminiTime } from './gemini.js';
|
|
3
|
+
export { WhisperAudioAnalyzer, getPythonBin } from './whisper.js';
|
|
4
|
+
export { YAMNetAudioAnalyzer } from './yamnet.js';
|
|
5
|
+
export { createAnalyzerChain, parseProviderChain } from './factory.js';
|
|
6
|
+
export type { AudioProviderName } from '../../types/index.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -3,3 +3,4 @@ export { GeminiAudioAnalyzer, normalizeGeminiTime } from './gemini.js';
|
|
|
3
3
|
export { WhisperAudioAnalyzer, getPythonBin } from './whisper.js';
|
|
4
4
|
export { YAMNetAudioAnalyzer } from './yamnet.js';
|
|
5
5
|
export { createAnalyzerChain, parseProviderChain } from './factory.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AudioEvent } from '../../types/index.js';
|
|
2
|
+
import { AudioAnalyzer } from './base.js';
|
|
3
|
+
export declare function getPythonBin(): Promise<string>;
|
|
4
|
+
/**
|
|
5
|
+
* Uses OpenAI Whisper (local) to transcribe the audio chunk and scan the
|
|
6
|
+
* resulting transcript for hype keywords per game profile.
|
|
7
|
+
*
|
|
8
|
+
* Requires: pip install openai-whisper
|
|
9
|
+
*/
|
|
10
|
+
export declare class WhisperAudioAnalyzer extends AudioAnalyzer {
|
|
11
|
+
readonly source: "whisper";
|
|
12
|
+
detect(audioPath: string, gameProfile: string, chunkOffsetSec: number, _chunkDurationSec: number): Promise<AudioEvent[]>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=whisper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whisper.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/whisper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAS1C,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBpD;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,QAAQ,CAAC,MAAM,EAAG,SAAS,CAAU;IAE/B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC;CAmCzB"}
|