From 4d127a038bf768eded68aae3cfa5c1b12241bdac Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Fri, 27 Mar 2026 00:55:15 +0100 Subject: chore: normalize line endings --- apps/web/src/lib/transcription/caption.ts | 98 +++++++++++++++---------------- apps/web/src/lib/transcription/types.ts | 94 ++++++++++++++--------------- 2 files changed, 96 insertions(+), 96 deletions(-) (limited to 'apps/web/src/lib/transcription') 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; +} diff --git a/apps/web/src/lib/transcription/types.ts b/apps/web/src/lib/transcription/types.ts index 9724ad70..c4a87aa8 100644 --- a/apps/web/src/lib/transcription/types.ts +++ b/apps/web/src/lib/transcription/types.ts @@ -1,47 +1,47 @@ -import type { LanguageCode } from "@/constants/language-constants"; - -export type TranscriptionLanguage = LanguageCode | "auto"; - -export interface TranscriptionSegment { - text: string; - start: number; - end: number; -} - -export interface TranscriptionResult { - text: string; - segments: TranscriptionSegment[]; - language: string; -} - -export type TranscriptionStatus = - | "idle" - | "loading-model" - | "transcribing" - | "complete" - | "error"; - -export interface TranscriptionProgress { - status: TranscriptionStatus; - progress: number; - message?: string; -} - -export type TranscriptionModelId = - | "whisper-tiny" - | "whisper-small" - | "whisper-medium" - | "whisper-large-v3-turbo"; - -export interface TranscriptionModel { - id: TranscriptionModelId; - name: string; - huggingFaceId: string; - description: string; -} - -export interface CaptionChunk { - text: string; - startTime: number; - duration: number; -} +import type { LanguageCode } from "@/constants/language-constants"; + +export type TranscriptionLanguage = LanguageCode | "auto"; + +export interface TranscriptionSegment { + text: string; + start: number; + end: number; +} + +export interface TranscriptionResult { + text: string; + segments: TranscriptionSegment[]; + language: string; +} + +export type TranscriptionStatus = + | "idle" + | "loading-model" + | "transcribing" + | "complete" + | "error"; + +export interface TranscriptionProgress { + status: TranscriptionStatus; + progress: number; + message?: string; +} + +export type TranscriptionModelId = + | "whisper-tiny" + | "whisper-small" + | "whisper-medium" + | "whisper-large-v3-turbo"; + +export interface TranscriptionModel { + id: TranscriptionModelId; + name: string; + huggingFaceId: string; + description: string; +} + +export interface CaptionChunk { + text: string; + startTime: number; + duration: number; +} -- cgit v1.3.1