mcpField
A
African Speech Corpora Quality Audit

African Speech Corpora Quality Audit

本地服务
github.com科研与教育19 周前更新

关于 African Speech Corpora Quality Audit

面向非洲语言语音数据研究者的只读 MCP 服务,提供以 Wolof 为主的语料目录与质量审计。它区分本地观测、来源公布数据和专家验证,并支持训练集规划与语料比较。

主要功能

  1. 01列出语料变体及验证状态
  2. 02审计文件数、时长与验证依据
  3. 03按任务和质量规划训练集
  4. 04比较语料质量、领域与许可
  5. 05检查 Hugging Face 数据集结构

适用场景

  1. 01筛选 Wolof ASR 训练语料
  2. 02区分专家验证与假定有效数据
  3. 03比较语料许可和语言纯度

MCP 相关

通过 MCP 向客户端提供 8 个只读、幂等工具,用于查询语料、执行审计、规划训练集和检查数据集状态。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"papasega-african-speech-corpora": {
"command": "uvx",
"args": [
"african-speech-mcp"
],
"env": {
"ASM_CATALOG_PATH": "<ASM_CATALOG_PATH>",
"ASM_AUDIT_LOG_PATH": "<ASM_AUDIT_LOG_PATH>",
"ASM_HF_TOKEN": "<ASM_HF_TOKEN>",
"ASM_VALIDATION_LOCK_PATH": "<ASM_VALIDATION_LOCK_PATH>"
}
}
}
}
启动命令uvx african-speech-mcp
需要配置的环境变量
ASM_CATALOG_PATHOptional path to a custom corpus catalog JSON file.
ASM_AUDIT_LOG_PATHOptional path receiving one JSON audit line per tool call.
ASM_HF_TOKEN密钥Optional Hugging Face token, only needed for gated datasets.
ASM_VALIDATION_LOCK_PATHOptional path to a local schema-validation lock bound to the catalog hash.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiafrican-speech-mcp2.0.0

工具

8

收录的工具列表 · 更新于 2 周前

参数类型必填说明
taskany否任务筛选条件。
languageany否ISO 639-3 筛选条件。
include_derivativesboolean否包含衍生数据。

详细介绍

非洲语音语料 MCP

非洲语音语料 MCP

一个只读服务,通过公开的非洲语言语音语料实现 Model Context Protocol。该协议是由 Anthropic 创建的开放标准。语料目前以沃洛夫语为主,另包括富拉语和塞雷尔语。

本项目以沃洛夫语为主。2.0 目录包含 14 个变体:11 个原始来源变体和 3 个衍生变体。富拉语(ful)和塞雷尔语(srr)仅包含 Kallaama 变体,且没有本地指标;本项目不声称覆盖斯瓦希里语或阿姆哈拉语。随附的验证锁定文件生成于 2026 年 8 月 26 日,其中 6 个 Hugging Face 变体可供查询。后续验证运行自然可能产生不同状态。

2.0.0 版本发布于 PyPI,并以 io.github.papasega/african-speech-corpora 的名称发布于官方 MCP Registry。

该服务不会训练模型、下载完整语料,也不会向 Hugging Face、OpenSLR、Kaggle、GitHub 或任何其他远程来源写入数据。

服务测量的内容

质量管线将以下阶段分别处理:

raw audio → usable audio → transcribed audio → audit-accepted audio → expert-verified audio
  • 原始:观测快照中存在的文件。
  • 可用:经过审计中可量化的排除项筛选后保留的文件。
  • 已转录:带有转录文本的音频。
  • 审计认可:明确命名的并集,包括专家验证的材料,以及审计仅假定有效的材料。
  • 专家验证:仅包括 expert_audited 或 source_reported_expert。“先验”评估绝不会纳入此级别。

秒是标准时长表示形式。十进制小时和 HH:MM:SS 字符串在序列化时推导得出。每项已审计指标都会注明其范围、来源、方法、观测日期和置信度。缺失值仍为 null,绝不会转换为零。项目发布的数据保留在 published_metrics 中,与本地观测数据分开。

2026 年沃洛夫语快照

机器可读的源文件是 assets/wolof-audit-2026.csv。协议、局限性以及与源表 TOTAL 单元格的差异记录在 assets/wolof-audit-2026.md 中。

七种沃洛夫语变体有本地观测数据:ALFFA、FLEURS wo_sn、Kallaama Wolof、Urban Bus、Waxal 众包数据、Wolof TTS Baamtu 和 WolBanking77。总数根据这七行重新计算,不会另行存储冗余的手动总数:148,102 个可用文件、64,609 个已转录文件、50,494 个通过审计的文件、2,329,382.06 秒音频、515,185.06 秒已转录音频,以及 302,048.06 秒通过审计的音频。

重要局限性:

  • FLEURS、Urban Bus、Waxal、Wolof TTS 和 WolBanking77 中标为“先验”的观测属于 audit_assumed_valid,并非经专家验证;
  • 此快照明确显示 ALFFA 的经专家验证文件数为零;
  • 153 个 Kallaama 文件是较长的广播或访谈录音,并非 153 段语音轮次;其中 36 个文件和 12:49:36 的时长依据本地协议的 source_reported_expert 口径统计;
  • Urban Bus 含有大量法语内容,但没有量化其占比,因此其 language_purity=mixed_fr;
  • Waxal 将 517:38:05 的原始音频(尤其适用于 SSL)与仅供监督式 ASR 使用的 13:41:28 已转录音频区分开来;
  • 本地 Wolof TTS Baamtu 快照包含 36,009 个文件和 37:04:49 音频,与四舍五入后的公开指标不同;默认情况下,此 TTS 语料库不纳入 ASR;
  • WolBanking77 区分了观测到的 2,563 个音频文件和其他来源报告的 9,791 条文本短语;
  • Afrivoice 发布了 530.74 小时的沃洛夫语音频,其中包括 102.96 小时的已转录音频。这些是来源发布的数据,并非 2026 年本地审计的测量结果,也不能作为经专家验证的证据。该数据集在 Hugging Face 上设有自动门控,因此若不接受其访问条件并提供令牌,就无法独立核查其文件、架构、数据拆分和时长;因此其状态仍为 audit_status=pending;
  • 由于无法获取确切的来源观测日期,observed_at=2026 有意仅精确到年份。

安装

此软件包需要 Python 3.11 或更高版本。推荐使用 Python 3.12,并在下文明确指定,以免虚拟环境意外沿用 Python 3.9 等较旧的系统解释器:

从 PyPI 安装已发布的版本:

python3.12 --version
python3.12 -m venv .venv
source .venv/bin/activate
python --version
python -m pip install "african-speech-mcp==2.0.0"

用于开发时,请检出代码并以可编辑模式安装开发依赖:

git clone https://github.com/papasega/african-speech-mcp.git
cd african-speech-mcp
python3.12 --version
python3.12 -m venv .venv
source .venv/bin/activate
python --version
python -m pip install -e ".[dev]"

两个版本命令都应显示 Python 3.12.x。只有在 python 可执行文件对应的版本已是 Python 3.11 或更高时,使用 python -m venv .venv 创建环境才是安全的。如果安装失败并出现类似以下错误:

ERROR: Package 'african-speech-mcp' requires a different Python: 3.9.6 not in '>=3.11'

说明虚拟环境是使用 Python 3.9.6 创建的。请停用该环境,删除或重命名本地 .venv,必要时安装 Python 3.12,然后使用 python3.12 -m venv .venv 重新创建环境。虚拟环境会保留创建时使用的解释器;激活环境不会升级 Python。

stdio 服务无需参数即可启动:

african-speech-mcp

也可以显式启动:

african-speech-mcp serve --transport stdio
african-speech-mcp serve --transport streamable-http

安装软件包后的 Claude Desktop 配置示例,建议使用绝对路径:

{
  "mcpServers": {
    "african-speech-corpora": {
      "command": "/absolute/path/to/.venv/bin/african-speech-mcp"
    }
  }
}

2.0.0 版本已发布到 PyPI,可使用 pip 安装。开发或使用尚未发布的更改时,应选择从仓库安装。

MCP 工具

所有 8 个工具均声明 read_only_hint=true、destructive_hint=false 和 idempotent_hint=true。

工具用途
list_corpora列出各变体、审计状态、推荐用途和验证状态。
audit_corpus返回数量、时长、验证依据、警告以及单独发布的统计数据。
plan_training_set制定计划,不重复计算衍生数据集,也不默认纳入基准测试集。
filter_segments仅在存在行级清单时进行筛选;否则拒绝承诺排除内容。
compare_corpora比较质量、领域、语言纯度、许可证和指标时效性。
search_segments在远程架构已通过验证的变体中搜索行。
corpus_stats仅返回该变体配置的大小,并报告架构差异。
cite_corpus返回衍生数据集的许可证、引文及其父级引文。

概念示例:

audit_corpus(corpus="waxal-crowdsource")

plan_training_set(language="wol", task="asr", quality="transcribed")
plan_training_set(language="wol", task="asr", quality="expert_verified")
plan_training_set(
  language="wol",
  task="asr",
  quality="audit_accepted",
  include_mixed_language=true,
)

filter_segments(
  corpus="waxal-crowdsource",
  exclude_duplicates=true,
  exclude_non_wolof=true,
  exclude_corrupt=true,
)

最后一次调用目前返回 filter_available=false。汇总数据表明,Waxal 包含 430 个重复文件和 22 个损坏或非沃洛夫语文件,但没有提供行标识符。因此,服务不会假装自己移除了这些行。

plan_training_set 的语义

quality 支持以下值:

  • any:按任务和许可证选择,无需转录;
  • transcribed:使用实际转录时长;
  • audit_accepted:纳入专家验证和默认有效的材料,并显示明细和警告;
  • expert_verified:仅使用真正经过专家验证的依据;
  • wolof_only:排除 mixed_fr、mixed、unknown 以及缺乏充分语言纯度证据的变体。

metric_source 可以是 latest_audit(默认值)或 published。时长未知的变体仍会列在 hours_unknown_for 中。FLEURS 是基准测试集,除非设置 include_benchmarks=true,否则不会纳入训练。使用 Urban Bus 必须设置 include_mixed_language=true。除非明确启用,否则 TTS 变体不会纳入 ASR;衍生数据集也绝不会添加到其父级数据集中。未知、非商业、相同方式共享或未经确认的许可证会触发相应警告;commercial_use=null 绝不会被标示为兼容商业用途。

持久化的 Hugging Face 验证

african-speech-mcp validate
african-speech-mcp validate --write
african-speech-mcp validate --output validation-lock.json

验证会检查数据集标识符、配置、拆分、转录列,以及任何已声明的语言列。锁定文件通过原子替换写入,并记录 checked_at、观测到的架构信息和稳定指纹。该文件还会绑定目录哈希,因此服务会拒绝过期的锁定文件。

默认情况下,--write 会在当前目录中创建 validation-lock.json,而不会修改已安装的软件包。之后可通过以下方式使用:

export ASM_VALIDATION_LOCK_PATH="$PWD/validation-lock.json"
african-speech-mcp

可能的状态包括 unverified、verified、gated、unavailable、schema_mismatch 和 quality_blocked。如果预期配置或列缺失,即使标识符有响应,也绝不会将其标记为 verified。对于 Afrivoice,请在验证前在本地设置 ASM_HF_TOKEN;该令牌不会被序列化或记录到日志中。

corpus_stats 严格按配置筛选,因此 FLEURS wo_sn 绝不会包含其他语言的数据。没有单独配置的多语言分布必须声明语言列和可接受的值。当服务无法保证筛选结果时,会拒绝请求或返回明确警告。

目录与架构

src/african_speech_mcp/
├── audit.py              # audited CSV, duration formats, deterministic aggregation
├── catalog.py            # Pydantic v2 variants and invariants
├── cli.py                # serve, validate, catalog-show
├── config.py             # ASM_* settings
├── hf_client.py          # GET only, retries, bounded concurrency
├── models.py             # structured responses
├── server.py             # eight MCP tools
├── validation.py         # schema inspection and atomic lock files
└── data/
    ├── corpora.json      # single canonical catalog
    └── validation-lock.json

根目录下不再有第二份 corpora.json。审计 CSV 仍以 assets/ 下的文件为准,且 Hatch 会确定性地将其纳入 wheel。测试会检查 CSV 与目录之间的总数和引用关系。

常用变量包括 ASM_CATALOG_PATH、ASM_VALIDATION_LOCK_PATH、ASM_AUDIT_LOG_PATH、ASM_HF_TOKEN、ASM_REQUEST_TIMEOUT_S、ASM_REQUEST_RETRIES 和 ASM_VALIDATION_CONCURRENCY。运行时日志会写入 stderr,以便 stdout 保留给 stdio 协议。

贡献审计或清单

新增审计必须:

  1. 在 CSV 中添加单元行,不得手动添加 TOTAL 行;
  2. 提供 audit_id、observed_at、source_reference、method、confidence 和 verification basis;
  3. 区分观测到的零值和缺失值;
  4. 在匹配的变体中引用该审计;
  5. 使用 Markdown 记录限制,并添加一致性测试。

若要启用实际筛选,请提供带版本号的清单,至少包含:

audit_id,corpus_key,revision,row_id,audio_path,is_duplicate,is_empty,is_corrupt,is_wolof,transcript_quality,reason

标识符必须来自经过审计的快照。绝不能根据汇总计数臆造标识符。

开发和发布准备

python -m pip install -e ".[dev]"
ruff check src tests scripts
pytest -q
python -m build

CI 会在 Python 3.11 和 3.12 上运行这些检查,在干净的环境中安装构建好的 wheel,并测试 CLI 和真实的 MCP stdio 交互。版本 2.0.0 是一次有文档记录的不兼容版本:现在,公共单元是单语言、单任务、单配置的变体,并提供了结构更丰富的质量响应。

发布非预发布版的 GitHub Release 会运行 .github/workflows/publish-pypi.yml。该工作流会验证附加的分发包,通过 Trusted Publishing 将其发布到 PyPI,然后验证匹配的 server.json,并通过 GitHub OIDC 将其发布到官方 MCP Registry。不存储任何长期有效的 PyPI 或 MCP Registry 令牌。如果 PyPI 发布成功但注册表步骤失败,请使用相同的标签手动重新运行工作流,并设置 registry_only=true;如果检测到已处于活动状态的注册表版本,则会将其视为成功。

许可证

服务代码根据 Apache-2.0 许可证授权。每个语料库均保留其自身的许可证。标记为 TO BE CONFIRMED 或 SEE DATASET ... 的目录条目有意保持不确定,使用前必须根据主要来源进行核实,尤其是用于商业用途时。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。