starchild-widget
Version:
Starchild Widget
96 lines • 2.42 kB
TypeScript
/**
* WebSocket Realtime Voice Manager
* 管理全局的 WebSocket 连接,使用自定义事件系统
*/
export type RealtimeEventType = 'transcription.delta' | 'transcription.completed' | 'connection.stateChange' | 'error' | 'speech.started' | 'speech.stopped';
export interface RealtimeEventData {
'transcription.delta': {
delta: string;
};
'transcription.completed': {
transcript: string;
};
'connection.stateChange': {
state: 'connecting' | 'open' | 'closing' | 'closed';
};
error: {
error: Error;
};
'speech.started': Record<string, never>;
'speech.stopped': Record<string, never>;
}
type EventListener<T extends RealtimeEventType> = (data: RealtimeEventData[T]) => void;
/**
* WebSocket 实时语音管理器(单例模式)
*/
export declare class RealtimeVoiceManager {
private static instance;
private ws;
private audioContext;
private audioProcessor;
private mediaStream;
private sessionData;
private isInitialized;
private isTranscribing;
private eventListeners;
private initializingPromise;
private constructor();
/**
* 获取单例实例
*/
static getInstance(): RealtimeVoiceManager;
/**
* 销毁单例实例
*/
static destroyInstance(): void;
/**
* 添加事件监听器
*/
on<T extends RealtimeEventType>(event: T, listener: EventListener<T>): void;
/**
* 移除事件监听器
*/
off<T extends RealtimeEventType>(event: T, listener: EventListener<T>): void;
/**
* 触发事件
*/
private emit;
/**
* 初始化 WebSocket 连接
*/
initialize(): Promise<void>;
/**
* 执行实际的初始化逻辑
*/
private doInitialize;
/**
* 发送会话配置
*/
private sendSessionConfig;
/**
* 设置 WebSocket 事件处理器
*/
private setupWebSocketHandlers;
/**
* 开始语音转录
*/
startTranscription(): Promise<MediaStream>;
/**
* 停止语音转录(但保持连接)
*/
stopTranscription(): void;
/**
* 完全销毁(关闭连接)
*/
destroy(): void;
/**
* 检查是否已初始化
*/
isReady(): boolean;
/**
* 检查是否正在转录
*/
isActive(): boolean;
}
export {};
//# sourceMappingURL=realtimeManager.d.ts.map