Skip to content

feat(tts): serve Piper voice model from voice.shadow.wang CDN - #39

Merged
WardLu merged 1 commit into
mainfrom
codex/voice-cdn-cors
Aug 15, 2026
Merged

feat(tts): serve Piper voice model from voice.shadow.wang CDN#39
WardLu merged 1 commit into
mainfrom
codex/voice-cdn-cors

Conversation

@WardLu

@WardLu WardLu commented Aug 15, 2026

Copy link
Copy Markdown
Owner

背景

v1.3.7 的离线英语语音把 en_US-lessac-high 模型(约 115MB,分片)随包打进 public/。本次将语音模型托管迁移到 voice.shadow.wang CDN(en_US-ljspeech-medium,约 63.5MB),首次下载后缓存进浏览器,可离线合成,不上传录音。CDN 侧 CORS 已配置并实测通过。

改动(6 个文件,仅语音 CDN/CORS 相关)

  • src/piper-tts.jsVOICE 指向 https://voice.shadow.wang/piper/en_US-ljspeech-medium;移除本地分片拼接与 worker runtime 选择(本地推理在主线程执行);下载进度依赖响应 Content-Length
  • vercel.json:CSP connect-src 增加 https://voice.shadow.wang(线上 CSP 需随本次部署更新,否则仍会拦截 CDN 请求)。
  • scripts/check.mjs:语音路径发布门槛检查改为 CDN URL。
  • tests/unit/piper-tts.test.jstests/e2e/offline-tts-error.spec.jstests/e2e/offline-tts-warmup.spec.js:同步 CDN 路径与主线程 runtime 断言。

验证

  • npm run verify 全绿(public/security 检查 + 构建 + check-build + 72 个单元测试)。
  • 语音相关 e2e 串行全部通过:offline-tts-warmup 5 个、offline 25 个、offline-tts-error + tts-system-fallback 2 个。
  • CDN CORS 已实测:两个文件响应头均含 Access-Control-Allow-Origin: https://sm.shadow.wangAllow-Methods: GET, HEAD, OPTIONSExpose-Headers: Content-Length, Content-Range, ...;真实浏览器从 https://sm.shadow.wang 跨域 fetch:.onnx.json 200 type: cors.onnx Range 206 content-range: bytes 0-1023/63531379

注意事项(有意保持最小改动,未纳入本 PR)

  • public/piper/en_US-lessac-high.onnx.part-*(约 115MB)与 public/worker/* 仍保留在仓库/构建产物中但不再被引用,建议后续单独 PR 清理。
  • 本机全量并行跑 e2e 存在既有时序 flaky(单文件/串行均通过),与本次改动无关。
  • 部署后建议验证:sm.shadow.wang 响应头 CSP 含 voice.shadow.wang;触发一次语音下载确认 CDN 拉取成功。

- 语音模型改由 CDN(voice.shadow.wang)首次下载,浏览器缓存后可离线使用
- CSP connect-src 增加 voice.shadow.wang
- 移除本地分片模型与 worker runtime 选择,本地推理在主线程执行
- 更新单元测试与语音相关 e2e 断言
@vercel

vercel Bot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
shadow-mate Ready Ready Preview Aug 15, 2026 1:28pm

@WardLu
WardLu merged commit 0ba5f29 into main Aug 15, 2026
6 checks passed
WardLu added a commit that referenced this pull request Aug 15, 2026
- 移除 v1.3.7 遗留的本地 en_US-lessac-high 分片模型(约 115MB)与 Worker 运行时文件
  (PR #39 已切换 voice.shadow.wang CDN + 主线程推理,不再使用)
- 同步 release-gate.config.json、scripts/check.mjs、scripts/security-check.mjs、
  THIRD_PARTY_NOTICES.md、piper-dev-server e2e 与 public/sw.js 中的引用
- 已通过 npm run verify、release:check 与语音相关 e2e(33 项)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant