这是一款用于重写 Git 仓库历史的命令行工具,可作为 git filter-branch 的替代品。
每个插件拥有独立的 Spring Bean 容器,插件 Bean 之间不直接混在主容器中。
// src/services/ttsApi.tsexport class TtsService { private ws: WebSocket | null = null; connect(ttsVcn: string, text: string, callbacks: { onAudioChunk: (audio: string) => void; onCharTimeMap: (charTimeMap: CharTimeMap[]) => void; onComplete: () => void; onError?: (error: string) => void; }) { // 生成鉴权参数 const authUrl = `/user/v1/ws/tts?tts_vcn=${ttsVcn}`; const authHeaders = generateAuthHeaders('GET', authUrl, {}); // 连接本地代理 const wsUrl = `ws://localhost:8080?tts_vcn=${authHeaders['X-TOKEN']}`; this.ws = new WebSocket(wsUrl); this.ws.onopen = () => { // 发送文本 this.ws?.send(JSON.stringify({ text })); }; this.ws.onmessage = (event) => { const message = JSON.parse(event.data); if (message.data_type === 'AUDIO' && message.data) { // 音频数据(base64) callbacks.onAudioChunk(message.data); } else if (message.data_type === 'CHAR_TIME_MAP' && message.data) { // 字符时间映射(用于高亮) const charTimeMap = JSON.parse(message.data); callbacks.onCharTimeMap(charTimeMap); } if (message.inference_end) { callbacks.onComplete(); } }; }}PCM音频流解码与播放魔珐星云返回的是PCM格式音频,需要正确解码:
例如: “CSDN授权”、“CSDN官方”及近似含义的词语;含有“CSDN”等代表CSDN及其关联公司的名称、标识或特殊含义词语。