UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

83 lines (66 loc) 1.69 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 }