/** * 音频配置类 */ export declare class AudioConfig { static readonly DEFAULT_SAMPLE_RATE = 16000; static readonly DEFAULT_NUM_CHANNELS = 1; static readonly DEFAULT_PLAYER_SAMPLE_RATE = 16000; static readonly DEFAULT_FRAME_MS = 600; static readonly DEFAULT_SILENCE_THRESHOLD = 1; static readonly DEFAULT_SILENCE_DURATION = 1000; static readonly DEFAULT_ECHO_CANCELLATION = true; static readonly DEFAULT_NOISE_SUPPRESSION = true; static readonly DEFAULT_AUTO_GAIN_CONTROL = false; readonly sampleRate: number; readonly numChannels: number; readonly playerSampleRate: number; readonly frameMs: number; readonly silenceThreshold: number; readonly silenceDuration: number; /** 回声消除(AEC):用于降低程序播放声被麦克风录入 */ readonly echoCancellation: boolean; /** 噪声抑制:用于降低环境噪声 */ readonly noiseSuppression: boolean; /** 自动增益控制(AGC):用于自动调节输入音量 */ readonly autoGainControl: boolean; constructor(options?: AudioConfigOptions); } /** * 音频配置选项接口 */ export declare interface AudioConfigOptions { /** 录音采样率(默认:16000) */ sampleRate?: number; /** 录音声道数(默认:1) */ numChannels?: number; /** 播放采样率(默认:16000) */ playerSampleRate?: number; /** 每帧音频长度(毫秒,默认:600) */ frameMs?: number; /** 静音阈值(默认:1,越大越“难”触发静音) */ silenceThreshold?: number; /** 静音持续时间(毫秒,默认:1000) */ silenceDuration?: number; /** 回声消除(AEC):用于降低程序播放声被麦克风录入(默认:开启) */ echoCancellation?: boolean; /** 噪声抑制:用于降低环境噪声(默认:开启) */ noiseSuppression?: boolean; /** 自动增益控制(AGC):用于自动调节输入音量(默认:关闭) */ autoGainControl?: boolean; } export declare class AudioPlayer extends EventTarget { static readonly BLEND_SHAPE_EVENT = "blendShapeEvent"; static readonly PLAY_END_EVENT = "playEndEvent"; private audioContext; private source; private gainNode; private audioChunks; playing: boolean; muted: boolean; bs: number[]; private config; private playToken; private readonly unlockAudioContext; constructor(config?: AudioConfig); addAudio(audioStr: string, bsArray: [][]): void; /** * 设置静音状态 * @param muted true 为静音,false 为正常音量 * @param smooth 是否使用平滑过渡(默认 true) */ setMute(muted: boolean, smooth?: boolean): void; stop(): void; dispose(): void; private playNextAudioChunk; private createAudioBufferFromInt16Base64; } /** * 音频录制器类,负责麦克风录音和音频数据处理 * 使用 AudioWorklet (替代已弃用的 ScriptProcessor) 进行高性能音频处理 */ export declare class AudioRecorder extends EventTarget { static readonly FRAME_EVENT = "frameEvent"; static readonly POWER_EVENT = "powerEvent"; private audioContext; private mediaStream; private sourceNode; private workletNode; private audioQueue; private isRecording; private config; private silenceStartTime; private frameSamples; constructor(config?: AudioConfig); /** * 开始录制 */ startRecording(): Promise; /** * 停止录制 */ stopRecording(): Promise; /** * 处理音频数据 (From AudioWorklet) */ private handleAudioProcess; /** * 处理并发送音频帧 */ private processAndSendFrames; private resample; private floatTo16LEBytes; private uint8ToBase64; /** * 清理资源 */ private cleanup; /** * 获取录音状态 */ get recording(): boolean; /** * 销毁实例 */ dispose(): void; } /** * 对话管理器类,负责管理WebSocket连接、音频录制和相关事件处理 */ declare class ChatManager extends EventTarget { static readonly ASR_EVENT = "asrEvent"; static readonly SUBTITLE_EVENT = "subtitleEvent"; static readonly BLEND_SHAPE_EVENT = "blendShapeEvent"; static readonly PLAY_END_EVENT = "playEndEvent"; static readonly POWER_EVENT = "powerEvent"; static readonly DIS_CONNECT_EVENT = "disConnectEvent"; static readonly CLIENTS_FULL_EVENT = "clientsFullEvent"; private chatSocket; private readonly chatServerUrl; private isChatConnected; private readonly audioRecorder; readonly audioPlayer: AudioPlayer; private readonly audioConfig; private readonly fileSaver; /** * 是否启用数据保存功能 (保存音频和BS数据到本地JSON文件) */ enableA2ESaving: boolean; constructor(serverUrl: string, audioOptions?: AudioConfigOptions); /** * 连接音频服务器 * @param uid 可选的用户标识 * @param voice 可选的音色标识 * @param llm 可选的LLM模型标识 * @returns Promise 连接建立完成的Promise */ connect(uid?: string, voice?: string, llm?: string): Promise; /** * 发送身份标识信息(如果需要) */ private sendIdentityIfNeeded; /** * 处理服务器消息 */ private handleServerMessage; /** * 发送语音对话音频数据到服务器 */ private sendAudioData; /** * 发送对话文本到服务器 */ sendTextData(data: string): void; /** * 发送无脑TTS文本到服务器 */ sendTtsTextData(data: string): void; /** * 重置对话服务器 */ resetChatServer(): void; /** * 断开对话服务器 */ disconnect(): void; /** * 开始麦克风录音 */ startMic(): Promise; /** * 停止麦克风录音 */ stopMic(): Promise; /** * 获取音频配置 */ getAudioConfig(): AudioConfig; /** * 获取连接状态 */ get isConnected(): boolean; /** * 获取录音状态 */ get isRecording(): boolean; /** * 播放本地JSON文件中的音频和BlendShape数据 * @param url JSON文件地址 */ playA2EJson(url: string): Promise; /** * 保存A2E数据 */ saveA2EJson(): Promise; /** * 销毁资源 */ dispose(): void; } export { ChatManager } export default ChatManager; export { }