whisper-api-fast / src /hooks /useWorker.ts
Carl Combrinck
Add support for microphone input
260b4c9
raw
history blame contribute delete
637 Bytes
import { useState } from "react";
export interface MessageEventHandler {
(event: MessageEvent): void;
}
export function useWorker(messageEventHandler: MessageEventHandler): Worker {
// Create new worker once and never again
const [worker] = useState(() => createWorker(messageEventHandler));
return worker;
}
function createWorker(messageEventHandler: MessageEventHandler): Worker {
const worker = new Worker(new URL("../worker.js", import.meta.url), {
type: "module",
});
// Listen for messages from the Web Worker
worker.addEventListener("message", messageEventHandler);
return worker;
}