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; }