summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/transcription/caption.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-03-27 00:55:15 +0100
committerMaze Winther <mazewinther@gmail.com>2026-03-29 15:56:48 +0200
commit4d127a038bf768eded68aae3cfa5c1b12241bdac (patch)
tree16bbb801caf6770546cff4fdb37b6408ec9ead98 /apps/web/src/lib/transcription/caption.ts
parent82817cb50cb0487350573d6129130aec705f924b (diff)
downloadopencut-4d127a038bf768eded68aae3cfa5c1b12241bdac.tar.gz
chore: normalize line endings
Diffstat (limited to 'apps/web/src/lib/transcription/caption.ts')
-rw-r--r--apps/web/src/lib/transcription/caption.ts98
1 files changed, 49 insertions, 49 deletions
diff --git a/apps/web/src/lib/transcription/caption.ts b/apps/web/src/lib/transcription/caption.ts
index c7c1b7b4..6f73ddec 100644
--- a/apps/web/src/lib/transcription/caption.ts
+++ b/apps/web/src/lib/transcription/caption.ts
@@ -1,49 +1,49 @@
-import type { TranscriptionSegment, CaptionChunk } from "@/lib/transcription/types";
-import {
- DEFAULT_WORDS_PER_CAPTION,
- MIN_CAPTION_DURATION_SECONDS,
-} from "@/constants/transcription-constants";
-
-export function buildCaptionChunks({
- segments,
- wordsPerChunk = DEFAULT_WORDS_PER_CAPTION,
- minDuration = MIN_CAPTION_DURATION_SECONDS,
-}: {
- segments: TranscriptionSegment[];
- wordsPerChunk?: number;
- minDuration?: number;
-}): CaptionChunk[] {
- const captions: CaptionChunk[] = [];
- let globalEndTime = 0;
-
- for (const segment of segments) {
- const words = segment.text.trim().split(/\s+/);
- if (words.length === 0 || (words.length === 1 && words[0] === "")) continue;
-
- const segmentDuration = segment.end - segment.start;
- const wordsPerSecond = words.length / segmentDuration;
-
- const chunks: string[] = [];
- for (let i = 0; i < words.length; i += wordsPerChunk) {
- chunks.push(words.slice(i, i + wordsPerChunk).join(" "));
- }
-
- let chunkStartTime = segment.start;
- for (const chunk of chunks) {
- const chunkWords = chunk.split(/\s+/).length;
- const chunkDuration = Math.max(minDuration, chunkWords / wordsPerSecond);
- const adjustedStartTime = Math.max(chunkStartTime, globalEndTime);
-
- captions.push({
- text: chunk,
- startTime: adjustedStartTime,
- duration: chunkDuration,
- });
-
- globalEndTime = adjustedStartTime + chunkDuration;
- chunkStartTime += chunkDuration;
- }
- }
-
- return captions;
-}
+import type { TranscriptionSegment, CaptionChunk } from "@/lib/transcription/types";
+import {
+ DEFAULT_WORDS_PER_CAPTION,
+ MIN_CAPTION_DURATION_SECONDS,
+} from "@/constants/transcription-constants";
+
+export function buildCaptionChunks({
+ segments,
+ wordsPerChunk = DEFAULT_WORDS_PER_CAPTION,
+ minDuration = MIN_CAPTION_DURATION_SECONDS,
+}: {
+ segments: TranscriptionSegment[];
+ wordsPerChunk?: number;
+ minDuration?: number;
+}): CaptionChunk[] {
+ const captions: CaptionChunk[] = [];
+ let globalEndTime = 0;
+
+ for (const segment of segments) {
+ const words = segment.text.trim().split(/\s+/);
+ if (words.length === 0 || (words.length === 1 && words[0] === "")) continue;
+
+ const segmentDuration = segment.end - segment.start;
+ const wordsPerSecond = words.length / segmentDuration;
+
+ const chunks: string[] = [];
+ for (let i = 0; i < words.length; i += wordsPerChunk) {
+ chunks.push(words.slice(i, i + wordsPerChunk).join(" "));
+ }
+
+ let chunkStartTime = segment.start;
+ for (const chunk of chunks) {
+ const chunkWords = chunk.split(/\s+/).length;
+ const chunkDuration = Math.max(minDuration, chunkWords / wordsPerSecond);
+ const adjustedStartTime = Math.max(chunkStartTime, globalEndTime);
+
+ captions.push({
+ text: chunk,
+ startTime: adjustedStartTime,
+ duration: chunkDuration,
+ });
+
+ globalEndTime = adjustedStartTime + chunkDuration;
+ chunkStartTime += chunkDuration;
+ }
+ }
+
+ return captions;
+}