mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-28 22:55:15 -07:00
Persisted setting (default 50ms) controls how audio chunks are blended together. Set to 0 for a clean hard cut with no overlap.
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import { create } from 'zustand';
|
|
import { persist } from 'zustand/middleware';
|
|
|
|
interface ServerStore {
|
|
serverUrl: string;
|
|
setServerUrl: (url: string) => void;
|
|
|
|
isConnected: boolean;
|
|
setIsConnected: (connected: boolean) => void;
|
|
|
|
mode: 'local' | 'remote';
|
|
setMode: (mode: 'local' | 'remote') => void;
|
|
|
|
keepServerRunningOnClose: boolean;
|
|
setKeepServerRunningOnClose: (keepRunning: boolean) => void;
|
|
|
|
maxChunkChars: number;
|
|
setMaxChunkChars: (value: number) => void;
|
|
|
|
crossfadeMs: number;
|
|
setCrossfadeMs: (value: number) => void;
|
|
}
|
|
|
|
export const useServerStore = create<ServerStore>()(
|
|
persist(
|
|
(set) => ({
|
|
serverUrl: 'http://127.0.0.1:17493',
|
|
setServerUrl: (url) => set({ serverUrl: url }),
|
|
|
|
isConnected: false,
|
|
setIsConnected: (connected) => set({ isConnected: connected }),
|
|
|
|
mode: 'local',
|
|
setMode: (mode) => set({ mode }),
|
|
|
|
keepServerRunningOnClose: false,
|
|
setKeepServerRunningOnClose: (keepRunning) => set({ keepServerRunningOnClose: keepRunning }),
|
|
|
|
maxChunkChars: 800,
|
|
setMaxChunkChars: (value) => set({ maxChunkChars: value }),
|
|
|
|
crossfadeMs: 50,
|
|
setCrossfadeMs: (value) => set({ crossfadeMs: value }),
|
|
}),
|
|
{
|
|
name: 'voicebox-server',
|
|
},
|
|
),
|
|
);
|