UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

67 lines (66 loc) 1.87 kB
import { AsSchematic } from "@e280/comrade"; import { DataType, DeviceType, Pipeline } from "@huggingface/transformers"; import { Driver } from "../../../driver/driver.js"; export type TranscriberSchematic = AsSchematic<{ work: { prepare(spec: TranscriberSpec): Promise<void>; transcribe(request: TranscriptionRequest): Promise<Transcription>; }; host: { loading(load: Loading): Promise<void>; deliverReport(report: TranscriptionReport): Promise<void>; deliverTranscription(transcription: string): Promise<void>; }; }>; export type Loading = { total: number; progress: number; }; export type TranscribeOptions = { pipe: Pipeline; spec: TranscriberSpec; request: TranscriptionRequest; callbacks: TranscriptionCallbacks; }; export type TranscriberPipeOptions = { spec: TranscriberSpec; onLoading: (loading: Loading) => void; }; export type SpeechTime = [start: number, end: number]; export type Transcription = { text: string; chunks: { text: string; timestamp: SpeechTime; }[]; }; export type TranscriberSpec = { model: string; dtype: DataType; device: DeviceType; chunkLength: number; strideLength: number; }; export type TranscriptionOptions = { source: Blob; language: string | null; } & TranscriptionCallbacks; export type TranscriptionRequest = { audio: ArrayBufferLike; language: string | null; duration: number; }; export type TranscriptionReport = { progress: number; tokensPerSecond: number; }; export type TranscriptionCallbacks = { onReport: (report: TranscriptionReport) => void; onTranscription: (transcription: string) => void; }; export type TranscriberOptions = { driver: Driver; spec: TranscriberSpec; workerUrl: URL | string; onLoading: (loading: Loading) => void; };