5.0 KiB
5.0 KiB
改动记录(CHANGELOG)
本文件按时间倒序记录每次改动的位置与内容,中文注释,便于后续接手的同学快速定位。
2026-09-18:TTS 页面调整 + 真人声音配音模式 + 推送凭据修复
分支:feat/chip-resources
最新提交:74110fb(已推送)
线上状态:已发布到 www.kaotings.com,服务器 45.197.145.138 上的 release 为 ~/releases/74110fb-www(systemd 服务 kaotings-web,Caddy 反代 127.0.0.1:3000)
1. 删除「减负区」标题与说明文字(提交 b4c3a99)
- 文件:
app/tts/page.tsx - 位置:原输入卡片下方独立区块的头部
- 删除内容:
03 / Assist、减负区、把识别、校对和分段交给系统,客户只需要确认内容和听结果。 - 连带处理:移除该区块上已失效的
aria-labelledby="assist-title"(全站无其它引用)
2. 三个功能卡移到「音色清单」文字下方(提交 d79c6cb、12eef4b)
- 文件:
app/tts/page.tsx(现约 576–582 行) - 改动:把「图片转文字 / 生成前查错字 / 自动分段」三张
assist-card从页面底部独立区块移入「01 / Input 输入文本」卡片内部,放在音色清单已更新 · N 个音色这行文字下方,用md:grid-cols-3三列对齐 - 功能保全:隐藏的图片选择
input(fileInputRef)与 OCR 提示helperMessage一并迁入,行为不变 - 删除:原底部独立区块(移走卡片后只剩「少打字 · 少校对 · 少返工」徽标,已随区块删除)
- 说明:
d79c6cb先放到编辑器下方,12eef4b按反馈修正到「音色清单」下方,最终位置以后者为准
3. 新增「真人声音配音模式」(提交 14bc759)
前端 app/tts/page.tsx
- 新增状态:
myVoice(声音样本{ name, dataUrl })、recording(是否正在录音) - 新增 ref:
recorderRef(MediaRecorder 实例)、voiceFileRef(音频文件选择) - 新增函数(约 405–470 行):
startRecording():navigator.mediaDevices.getUserMedia+MediaRecorder录音,停止后转成 data URL 存入myVoicestopRecording():停止录音handleVoiceFile():上传音频文件(类型校验 + 8 MB 上限)clearMyVoice():清除样本,回到内置音色
createSpeech()改为双通道:有myVoice→ 调/tts-clone;否则走原/tts/v1/audio/speech- 面板 JSX(约 584–600 行):位于三张功能卡下方,包含
🎙 真人声音配音模式标题、使用说明、● 录制我的声音 / ■ 停止录音、上传声音、清除样本、样本试听条与「已就绪」状态
服务端 app/tts-clone/route.ts(新增文件)
POST /tts-clone,入参{ text, reference_audio(data URL), response_format, speed }- 读取服务端环境变量
TTS_CLONE_URL转发给克隆引擎;未配置时返回 501(前端提示「真人配音引擎尚未接通,请先选择内置音色」,不假装成功);上游失败返回 502 - 路径选择原因:线上 Caddy 中
/api/*转发到 FastAPI(:8000)、/tts/*转发到 TTS 引擎,只有/tts-clone这类路径会落到 Next.js
样式 app/globals.css
- 新增
.voice-clone-panel(380 行)与.voice-clone-panel.is-ready(388 行):青色描边面板,样本就绪后高亮
本地联调 services/mock-tts/server.mjs
- 新增
POST /v1/audio/clone-speech(174 行):校验文本与reference_audio后返回演示音频 - 配合未提交的
.env.local中TTS_CLONE_URL=http://127.0.0.1:8100/v1/audio/clone-speech,本地可跑通「录音/上传 → 生成」全流程
待后续程序员跟进
- 实测上游 TTS 引擎(
qwen3-tts,129 个固定音色)目前没有声音克隆接口:无音色注册端点,未知参数会被静默忽略 - 引擎方提供克隆接口后,只需在服务器为
kaotings-web增加环境变量TTS_CLONE_URL(指向克隆接口)即可启用,前端零改动
4. 推送凭据问题修复(提交 438a4d7、cee2074)
- 文件:
docs/OPERATIONS.md§8 - 内容:Gitea 的 OAuth access token 仅 1 小时有效,而 Git Credential Manager 无法感知过期 → 闲置超 1 小时后第一次推送必失败(
remote: Verify/Authentication failed) - 修复:新增凭据助手
C:/Users/kts/.git-credential-kaotings.mjs,每次用 refresh token 换新 access token;全局配置中按「空值重置 + 助手 + manager」排序(详见该章节)
5. 本地配置纳入版本管理(提交 74110fb)
next.config.ts:新增rewrites(),仅当设置了TTS_MOCK_UPSTREAM时把/tts/v1/*代理到本地 mock TTS(生产不设置该变量,行为不变)AGENTS.md/CLAUDE.md:Next.js 16next dev自动生成的 AI 说明文件next-env.d.ts:自动生成文件,保持生产路径(.next/types/...),未提交 dev 路径的临时改动