Vokturz's picture
Add StyleTTS2 support with KokoroTTS integration
79eafc9
export interface Section {
title: string
items: string[]
}
export interface ClassificationOutput {
sequence: string
labels: string[]
scores: number[]
}
export interface ChatMessage {
role: 'system' | 'user' | 'assistant'
content: string
}
export interface GenerationOutput {
role: 'assistant'
content: string
}
export type WorkerStatus =
| 'initiate'
| 'ready'
| 'output'
| 'loading'
| 'progress'
| 'error'
| 'disposed'
export interface WorkerMessage {
status: WorkerStatus
progress?: number
error?: string
output?: any
}
export interface ZeroShotWorkerInput {
type: 'classify'
text: string
labels: string[]
model: string
dtype: QuantizationType
}
export interface TextClassificationWorkerInput {
type: 'classify'
text: string
model: string
dtype: QuantizationType
config?: {
top_k?: number
}
}
export interface TextGenerationWorkerInput {
type: 'generate'
prompt?: string
messages?: ChatMessage[]
hasChatTemplate: boolean
model: string
config?: {
temperature?: number
max_new_tokens?: number
top_p?: number
top_k?: number
do_sample?: boolean
}
dtype: QuantizationType
}
export interface FeatureExtractionWorkerInput {
type: 'extract' | 'load'
texts?: string[]
model: string
dtype: QuantizationType
config: {
pooling: 'mean' | 'cls'
normalize: boolean
}
}
export interface TextToSpeechWorkerInput {
type: 'synthesize'
text: string
model: string
dtype: QuantizationType
isStyleTTS2: boolean
config?: {
speakerEmbeddings?: string
voice?: string
}
}
export interface ImageClassificationWorkerInput {
type: 'classify'
image: string | ImageData | HTMLImageElement | HTMLCanvasElement
model: string
dtype: QuantizationType
config: {
top_k?: number
}
}
export interface ImageClassificationResult {
label: string
score: number
}
export interface ImageExample {
id: string
name: string
url: string
file?: File
predictions?: ImageClassificationResult[]
isLoading?: boolean
}
export interface EmbeddingExample {
id: string
text: string
embedding?: number[]
isLoading?: boolean
}
export interface SimilarityResult {
exampleId: string
similarity: number
}
const q8Types = ['q8', 'int8', 'bnb8', 'uint8'] as const
const q4Types = ['q4', 'bnb4', 'q4f16'] as const
const fp16Types = ['fp16'] as const
const fp32Types = ['fp32'] as const
type q8 = (typeof q8Types)[number]
type q4 = (typeof q4Types)[number]
type fp16 = (typeof fp16Types)[number]
type fp32 = (typeof fp32Types)[number]
export type QuantizationType = q8 | q4 | fp16 | fp32
export const allQuantizationTypes = [
...q8Types,
...q4Types,
...fp16Types,
...fp32Types
] as const
export interface ModelInfo {
id: string
name: string
architecture: string
parameters: number
likes: number
downloads: number
createdAt: string
isCompatible?: boolean
incompatibilityReason?: string
supportedQuantizations: QuantizationType[]
baseId?: string
readme?: string
hasChatTemplate: boolean // text-generation only
isStyleTTS2: boolean // text-to-speech only
widgetData?: any
voices: string[] // text-to-speech only
}
export interface ModelInfoResponse {
id: string
createdAt: string
config?: {
architectures: string[]
model_type: string
tokenizer_config?: {
chat_template?: string
}
}
lastModified: string
pipeline_tag: string
tags: string[]
cardData?: {
base_model: string
}
baseId?: string
transformersInfo: {
pipeline_tag: string
auto_model: string
processor: string
}
safetensors?: {
parameters: {
BF16?: number
F16?: number
F32?: number
total?: number
}
}
siblings?: {
rfilename: string
}[]
widgetData?: any
modelId?: string
isCompatible: boolean
incompatibilityReason?: string
supportedQuantizations: QuantizationType[]
likes: number
downloads: number
readme?: string
voices: string[] // text-to-speech only
}