video_translate/src/types.ts
2026-03-18 11:42:00 +08:00

66 lines
1.3 KiB
TypeScript

export interface Subtitle {
id: string;
startTime: number;
endTime: number;
originalText: string;
translatedText: string;
speaker: string;
speakerId?: string;
words?: WordTiming[];
confidence?: number;
voiceId: string;
audioUrl?: string;
volume?: number;
age?: string;
voiceCharacteristics?: string;
emotion?: string;
}
export type LlmProvider = 'doubao' | 'gemini';
export type PipelineQuality = 'full' | 'partial' | 'fallback';
export interface WordTiming {
text: string;
startTime: number;
endTime: number;
speakerId: string;
confidence: number;
}
export interface SpeakerTrack {
speakerId: string;
label: string;
gender?: 'male' | 'female' | 'unknown';
}
export interface SubtitlePipelineResult {
subtitles: Subtitle[];
speakers: SpeakerTrack[];
quality: PipelineQuality;
sourceLanguage?: string;
targetLanguage?: string;
duration?: number;
alignmentEngine?: string;
}
export interface TextStyles {
fontFamily: string;
fontSize: number;
color: string;
backgroundColor: string;
alignment: 'left' | 'center' | 'right';
isBold: boolean;
isItalic: boolean;
isUnderline: boolean;
}
export interface Voice {
id: string;
name: string;
tag: string;
avatar: string;
gender: 'male' | 'female' | 'neutral';
language: string;
}