From ad4727c50740ed8a23fe359e7cdc9b728a242267 Mon Sep 17 00:00:00 2001 From: "3371392206@qq.com" <3371392206@qq.com> Date: Sun, 30 Aug 2026 15:56:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(tts):=20voice=20=E5=91=BD=E4=B8=AD=20log=20?= =?UTF-8?q?=E8=B7=9F=E5=90=88=E6=88=90=20log=20=E4=B8=80=E8=87=B4=E6=89=93?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug 报告: 同一次请求, controller/tts.go:193 输出明文 speaker [tts] voice=chun 命中 (speaker=S_G8tEKnaJ1 ...) 但 adapter/volcano/synthesis.go:148 输出打码 TTS 合成成功 - 音色=S_G8****naJ1 不一致 — 同一进程同一请求, 一处裸奔一处打码, 脱裤子放屁。 修法: 全部用 telemetry.MaskSpeaker (前4+****+后4)。 不动 telemetry.SpeakerLabel (sha1[:8] 不可逆哈希, /metrics 用, 保留)。 注意: server log 仍能看到带前缀/后缀的 speaker (e.g. S_G8****naJ1), 但 *完整* speaker 不可见, 防 log 泄漏给非 root 用户。 如果 log 路径对外可读, 仍需考虑更严的方案 (e.g. 整体不 log speaker), 但自托管单用户场景下, 这个折中 OK。 未 push (待用户 push) --- controller/tts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controller/tts.go b/controller/tts.go index d2579fe..727a249 100644 --- a/controller/tts.go +++ b/controller/tts.go @@ -190,7 +190,7 @@ func OpenaiTTSHandler(w http.ResponseWriter, r *http.Request) { opts.Model = v.Model } log.Printf("[tts] voice=%s 命中 (speaker=%s resource=%s model=%s) - 客户端=%s", - req.Voice, v.Speaker, v.ResourceID, v.Model, middleware.GetClientIP(r)) + req.Voice, telemetry.MaskSpeaker(v.Speaker), v.ResourceID, v.Model, middleware.GetClientIP(r)) } ctx, cancel := context.WithTimeout(r.Context(), setting.TTSTimeout)