docs: 新增中文改动记录 CHANGELOG(2026-09-18 TTS 调整/真人配音/凭据修复)

This commit is contained in:
2570050763@qq.com 2026-09-18 15:07:12 +08:00
parent 74110fbe7a
commit d587a279a6

72
docs/CHANGELOG.md Normal file
View File

@ -0,0 +1,72 @@
# 改动记录CHANGELOG
本文件按时间**倒序**记录每次改动的**位置**与**内容**,中文注释,便于后续接手的同学快速定位。
---
## 2026-09-18TTS 页面调整 + 真人声音配音模式 + 推送凭据修复
**分支**`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`(现约 576582 行)
- **改动**:把「图片转文字 / 生成前查错字 / 自动分段」三张 `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`(音频文件选择)
- 新增函数(约 405470 行):
- `startRecording()``navigator.mediaDevices.getUserMedia` + `MediaRecorder` 录音,停止后转成 data URL 存入 `myVoice`
- `stopRecording()`:停止录音
- `handleVoiceFile()`:上传音频文件(类型校验 + 8 MB 上限)
- `clearMyVoice()`:清除样本,回到内置音色
- `createSpeech()` 改为**双通道**:有 `myVoice` → 调 `/tts-clone`;否则走原 `/tts/v1/audio/speech`
- 面板 JSX约 584600 行):位于三张功能卡下方,包含 `🎙 真人声音配音模式` 标题、使用说明、`● 录制我的声音 / ■ 停止录音`、`上传声音`、`清除样本`、样本试听条与「已就绪」状态
**服务端 `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 16 `next dev` 自动生成的 AI 说明文件
- `next-env.d.ts`:自动生成文件,保持生产路径(`.next/types/...`),未提交 dev 路径的临时改动