Common Voice · Mozilla 开源语音捐赠与公开语音数据集平台 · 自托管部署全指南
项目仓库: https://github.com/mozilla/voice-web(现主仓库为 common-voice/common-voice)
开源协议:MPL 2.0 · 技术栈:TypeScript + React · 部署方式:Docker +
docker compose · 本地地址:http://localhost:9000 ·
数据集更新:季度发布 · 仓库分支:main
说明:任务清单登记仓库
Mozilla/voice-web为旧名,项目主仓库已迁移到common-voice/common-voice。本文按官方 DEVELOPMENT.md 给出自托管路径。
1 项目简介
Common Voice 是 Mozilla 发起的语音捐赠平台:邀请全球用户录制并朗读句子,汇聚成公共领域(CC0)的语音数据集,用于训练语音识别等工具。它本身是一个 Web 应用,包含前端(React + TypeScript)、服务端、数据集打包服务等模块。
平台代码按月发布、数据集按季度发布。
1.1 核心信息一览
| 项目项 | 内容 |
|---|---|
| 项目名称 | Common Voice |
| 仓库地址 | github.com/common-voice/common-voice |
| 项目定位 | 语音捐赠采集平台 + 公共领域语音数据集 |
| 开源协议 | MPL 2.0 |
| 技术栈 | TypeScript + React |
| 部署 | Docker + docker compose |
| 本地地址 | http://localhost:9000 |
| 数据集许可 | CC0 公共领域 |
| 更新节奏 | 平台代码月度 / 数据集季度 |
1.2 适用场景
- 想自托管一个语音采集平台,为某种语言收集语音样本。
- 需要复用 Common Voice 的句子采集、验证流程做自有数据集。
- 研究者/开发者需要本地化部署平台做二次开发。
1.3 能力边界(官方口径)
- 官方说明:由于资源限制,除本文档给出的内容外,不提供商业自托管之外的协助;商业托管需联系 commonvoice@mozilla.com。
spontaneous-speech组件不在开源仓库中。- 本地化(翻译)只能通过 Mozilla Pontoon 平台提交,不接受直接 PR。
2 功能特性
- 语音采集:用户录制与朗读句子,形成语音捐赠。
- 句子验证:社区投票校验语音质量。
- 多语言支持:通过 LANGUAGE.md 流程新增语言。
- 数据集打包:
bundler服务生成数据集发布包。 - 公共领域数据:句子与数据集以 CC0 发布。
3 官方界面预览
本仓库 README 未提供界面截图,实际界面以本地启动后访问
http://localhost:9000 或在线版 commonvoice.mozilla.org
为准。
4 官方跳转链接汇总
| 类别 | 链接 | 说明 |
|---|---|---|
| 仓库主页 | https://github.com/common-voice/common-voice | 源码 |
| 在线平台 | https://commonvoice.mozilla.org | 官方在线版 |
| 开发环境文档 | docs/DEVELOPMENT.md | 自托管指南 |
| 数据集元数据 | github.com/common-voice/cv-dataset | 数据集发布 |
| 论坛 | Discourse | 社区讨论 |
5 前置要求与服务器配置
5.1 软件前提
- git。
- Docker 与 docker compose。
- Auth0 或同类认证服务:用于用户认证(官方要求)。
5.2 硬件建议
| 项目 | 建议 |
|---|---|
| 部署 | Docker Compose 一键起,2C4G 起步 |
| 存储 | 按语音数据量增长 |
| 端口 | 9000 |
6 方式一:Docker Compose 自托管(官方路径)
# 1. 克隆仓库
git clone https://github.com/common-voice/common-voice.git
cd common-voice
# 2. 配置认证(Auth0 或同类)
# 3. 复制环境文件
cp .env-local-docker.example .env-local-docker
# 按实际上下文编辑 .env-local-docker
# 4. 启动容器
docker compose up
# 5. 导入语言句子后刷新 redis 缓存,再重启容器启动后访问 http://localhost:9000。
7 项目结构(官方说明)
| 目录 | 说明 |
|---|---|
web/ |
网站前端(React + TypeScript) |
server/ |
服务端应用逻辑(TypeScript) |
bundler/ |
数据集发布打包服务 |
common/ |
前后端共享类型 |
locales/ |
已启用语言信息(自动生成) |
scripts/ |
数据管理脚本 |
8 配置项说明
| 配置 | 位置 | 说明 |
|---|---|---|
.env-local-docker |
仓库根目录 | 由 .env-local-docker.example 复制后编辑 |
| Auth0 | 环境变量 | 用户认证服务 |
| 端口 | 9000 | 本地访问端口 |
9 常用运维命令
# 启动
docker compose up
# 导入句子后刷新 redis 缓存
docker compose exec redis redis-cli FLUSHALL
# 重启容器
docker compose restart10 常见故障排查
- Couldn't connect to Docker daemon:Docker 未启动或当前用户无权限,启动 Docker 并把用户加入 docker 组。
docker-compose up导致/code/node_modules文件权限错误:官方 Troubleshooting 中有专门说明,按文档调整挂载权限。- 语言句子导入后不生效:刷新 redis 缓存后重启容器。
- 本地化 PR 被拒:官方不接受直接改翻译的 PR,请走 Pontoon 平台。
11 风险与合规说明
- 许可证:MPL 2.0,句子与数据集以 CC0 公共领域发布。
- 自托管支持:官方除文档外不提供免费自托管支持,商业合作需邮件联系。
- 数据合规:语音捐赠涉及个人声音,自托管需自行做好隐私与知情同意。
- 非官方声明:本文基于官方仓库 README 与 DEVELOPMENT.md 整理,命令以 main 分支最新为准。