mirror of
https://github.com/R0m1k3/EveFlow.git
synced 2026-10-14 10:46:44 +02:00
- electron/voice: model catalog (Whisper base/small/turbo, SenseVoice, Kokoro v1.0, Piper fr), streaming tar.bz2 downloader with progress, sherpa-onnx worker running in an Electron utilityProcess (transcribe / synthesize / status / unload), IPC + bridge. - Renderer: 'local' providers for STT and TTS, Settings → Modèles locaux (download, progress, delete, activate), speaker selection, hands-free wake word with a tolerant matcher (accents, punctuation, edit distance) and attention window after a bare wake word. - Packaging: native addon and worker unpacked from the asar; release 2.1.0. Validated on Linux: Kokoro (fr) → Whisper base round trip, Piper (fr) → Whisper round trip. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Wn5VX9HNbJ7N54hR24u9Y
23 lines
1.1 KiB
TypeScript
23 lines
1.1 KiB
TypeScript
import { ipcMain } from 'electron';
|
|
import { VOICE_IPC, type SynthesizeRequest, type TranscribeRequest } from '../../shared/voice';
|
|
import { engineStatus, synthesize, transcribe, unload } from './engine';
|
|
import { cancelDownload, downloadModel, listModels, removeModel } from './models';
|
|
|
|
export function registerVoiceIpc(): void {
|
|
ipcMain.handle(VOICE_IPC.status, () => engineStatus());
|
|
ipcMain.handle(VOICE_IPC.modelsList, () => listModels());
|
|
ipcMain.handle(VOICE_IPC.modelsDownload, (event, id: string) => downloadModel(id, event.sender));
|
|
ipcMain.handle(VOICE_IPC.modelsCancel, (_e, id: string) => {
|
|
cancelDownload(id);
|
|
return true;
|
|
});
|
|
ipcMain.handle(VOICE_IPC.modelsRemove, async (_e, id: string) => {
|
|
await unload(id).catch(() => undefined);
|
|
await removeModel(id);
|
|
return listModels();
|
|
});
|
|
ipcMain.handle(VOICE_IPC.transcribe, (_e, req: TranscribeRequest) => transcribe(req));
|
|
ipcMain.handle(VOICE_IPC.synthesize, (_e, req: SynthesizeRequest) => synthesize(req));
|
|
ipcMain.handle(VOICE_IPC.unload, (_e, id?: string) => unload(id));
|
|
}
|