Skip to main content
Glama

dialogue-transcriber

转录对话,并找出谁说了什么。

CI PyPI License: Apache-2.0 Python

把它指向一段采访、小组讨论、会议录音或 YouTube URL,你就能得到一份每一行都标注了说话人的转录稿——外加一个 Web UI,用于检查说话人聚类、收听任意片段,并手动修正标签。

审查 UI:说话人聚类、波形、时间线和可搜索的转录稿

工作原理

audio  ──►  transcribe  ──►  segment  ──►  extract_clips  ──►  embed  ──►  cluster
              (Whisper)        (sentence-       (ffmpeg)       (TitaNet)    (UMAP +
                               level)                                       KMeans +
                                                                            silhouette)

Whisper 生成词级时间戳;单词被分组为句子片段;每个片段的音频用 NVIDIA NeMo TitaNet 嵌入;嵌入在 UMAP 投影上进行聚类;最终转录稿以 Speaker 1Speaker 2…… 的标签输出。每个阶段都按内容哈希缓存,因此重新运行和调整配置都很便宜。

Related MCP server: AssemblyAI MCP Server

快速开始

ffmpegffprobe 必须在 PATH 中(macOS 上执行 brew install ffmpeg)。

# No install needed:
uvx --from "dialogue-transcriber[all]" transcriber transcribe interview.mp3

# Or install the tool:
uv tool install "dialogue-transcriber[all]"

transcriber transcribe interview.mp3 --participants 2
transcriber transcribe "https://www.youtube.com/watch?v=..." --backend openai
transcriber serve interview.mp3        # review UI on http://127.0.0.1:8000

默认后端在本地运行 faster-whisper--backend openai 则改用 OpenAI Whisper API(需要 OPENAI_API_KEY,在没有 GPU 的机器上快得多)。密钥可以在环境中导出,也可以放在项目中的 .env 文件里——CLI 会从工作目录(或最近的父目录)加载 .env,而导出的变量始终优先于文件。

数据存放在哪里?

  • 流水线缓存:你运行命令的目录下的 ./.transcriber-cache/(可用 --work-dir 覆盖)——包含分块、每片段剪辑、嵌入、YouTube 下载以及 Web UI 的任务状态。可以安全删除;它会重新构建。

  • 转录稿:写在输入音频旁边(interview.txt),或 --output 指向的位置;--output - 则打印到标准输出。

  • 模型权重(本地后端):首次下载到 ~/.cache(Hugging Face / NeMo)。Whisper large-v3 的下载量约为 3 GB,因此首次本地运行需要一些时间。

使用默认的本地后端时,数据不会离开你的机器;--backend openai 会将音频发送到 OpenAI API。

选择你的附加功能

[all] 是最简单的选择。对于较小的安装:

uv pip install dialogue-transcriber              # core only
uv pip install "dialogue-transcriber[local]"     # + faster-whisper backend
uv pip install "dialogue-transcriber[openai]"    # + OpenAI Whisper API backend
uv pip install "dialogue-transcriber[cluster]"   # + scikit-learn / UMAP
uv pip install "dialogue-transcriber[embed]"     # + NeMo TitaNet speaker embedder
uv pip install "dialogue-transcriber[api]"       # + FastAPI backend (powers the web UI)
uv pip install "dialogue-transcriber[youtube]"   # + yt-dlp downloader
uv pip install "dialogue-transcriber[oip]"       # + MCP server for OIP consumers

CLI

# Full pipeline; writes a speaker-labeled transcript next to the audio
transcriber transcribe path/to/audio.mp3

# Speakers, language, format
transcriber transcribe interview.mp3 --participants 3 --language sv --format vtt

# Machine-readable output on stdout (see "For AI agents" below)
transcriber transcribe interview.mp3 --format json --output -

# Pull audio from YouTube
transcriber download "https://www.youtube.com/watch?v=..."

# Pipeline + web UI
transcriber serve interview.mp3 --participants 3

格式:txt(合并说话人轮次)、vttsrtjson。传入 --context "names, jargon" 来为 Whisper 提供它应该预期的词汇。--output - 将转录稿流式输出到标准输出,将摘要输出到标准错误,因此输出可以干净地管道化。

Web UI

transcriber serve 运行一个 FastAPI 后端,并服务打包好的 React 前端。你可以获得:

  • 一个 UMAP 散点图,每个点代表一个片段,按聚类着色——套索选择一个聚类即可批量重命名;

  • 一个连续波形,每个片段对应一个区域——点击或拖动即可播放任意内容;

  • 一个甘特图风格的说话人时间线;

  • 一个支持全文搜索的虚拟化转录稿;

  • 可内联重命名的说话人标签(重命名会在服务端持久化);

  • TXT / VTT / SRT 导出;

  • 键盘导航(↑/↓ 切换片段,Space 播放/暂停,/ 搜索)。

多个任务可以并行运行;通过侧边栏添加更多任务。

serve 会自动选择后端:当 OPENAI_API_KEY 可用(环境变量或 .env)时使用 openai,否则使用 local。传入 --backend 可显式选择。(一个遗留的单任务 Dash UI 仍可通过 transcriber ui 使用。)

面向 AI 智能体

这个项目既为人类设计,也为智能体驱动而构建。

Claude Code 技能——该仓库同时也是一个插件市场。安装该技能后,Claude Code 将知道如何按需转录和区分音频:

/plugin marketplace add Novia-RDI-Seafaring/transcriber
/plugin install dialogue-transcriber@dialogue-transcriber

结构化输出——--format json --output - 在标准输出上输出一个稳定的结构:

{
  "speakers": ["Speaker 1", "Speaker 2"],
  "n_segments": 42,
  "duration": 512.3,
  "segments": [
    {"speaker": "Speaker 1", "start": 0.0, "end": 4.2, "text": "..."}
  ]
}

MCP / OIP——该包是一个开放摄取协议生产者,因此任何支持 OIP 的消费者(例如 Anchor)都可以在无需修改消费者端的情况下摄取转录稿:

transcriber oip install --data-dir ~/transcripts     # register the producer
transcriber oip ingest audio.mp3 --data-dir ~/transcripts
transcriber oip serve                                # MCP server (also: transcriber-mcp)

工具命名空间:transcribe。区域类型:transcript_segmentsource_ref.kindaudio-timestamp

库使用

from transcriber.config import ClusterConfig, PipelineConfig, TranscribeConfig
from transcriber.pipeline import run_pipeline
from transcriber.render import render_txt

cfg = PipelineConfig(
    transcribe=TranscribeConfig(backend="local", language="en"),
    cluster=ClusterConfig(participants=2),
)
result = run_pipeline("interview.mp3", config=cfg)
print(render_txt(result.segments))

PipelineResult.segments 是一个 SpeakerSegment 记录列表,包含句子文本、时间范围、磁盘上的剪辑以及分配的说话人。PipelineResult.cluster.projection 是用于绘图的 2-D UMAP。

后端

关注点

默认

通过以下方式覆盖

转录

faster-whisper large-v3

--backend openai

嵌入

nvidia/speakerverification_en_titanet_large

run_pipeline 传入 embedder=

聚类

UMAP(2) + KMeans + silhouette

传入 ClusterConfig

YouTube

yt-dlp

替换 YouTubeDownloader

所有后端都是 Protocol——参见 transcriber/transcribe/base.pytranscriber/embed/base.py。测试使用内存中的假对象,因此运行测试套件不需要重型模型。

开发

参见 CONTRIBUTING.md 了解指南,以及 CHANGELOG.md 了解发布历史。

git clone https://github.com/Novia-RDI-Seafaring/transcriber
cd transcriber
uv venv
uv pip install -e ".[dev,cluster,api,openai,embed,youtube]"
(cd web && pnpm install && pnpm build)   # so `transcriber serve` can serve the UI

pytest                  # core + clustering + api tests
pytest -m "not slow"    # skip heavy/network tests
ruff check src tests

前端工作:cd web && pnpm devhttp://127.0.0.1:5173,将 /api 代理到 :8000),并在另一个 shell 中运行 transcriber serve … --port 8000

发布:发布 GitHub release 会触发 .github/workflows/release.yml,它会构建前端,将其打包到 wheel 中,并通过可信发布发布到 PyPI。

许可证

Apache-2.0——参见 LICENSE

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
3Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Transcripts from YouTube, TikTok, Instagram and podcasts (Spotify, Apple, RSS), as clean JSON.

  • Transform video, audio and images, and generate media from prompts. FFmpeg, captions, models.

  • Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Novia-RDI-Seafaring/transcriber'

If you have feedback or need assistance with the MCP directory API, please join our Discord server