@omnimedia/omnitool
Version:
open source video processing tools
83 lines (66 loc) • 1.69 kB
text/typescript
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
}