mcpField
F
file-transcribe

file-transcribe

github.com/open-kbs创意与媒体062 次安装2 周前更新
代码仓库

关于 file-transcribe

File Transcription Skill 通过项目的 AI 代理调用 Gemini,将音频和视频文件转写为文本,适用于会议、访谈、讲座和播客等录音。它支持说话人标签、时间戳、语言提示和词汇表等选项。

主要功能

  1. 01转写音频和视频文件
  2. 02自动检测录音语言
  3. 03添加说话人标签和时间戳
  4. 04设置语言提示和词汇表
  5. 05拆分并拼接长录音

适用场景

  1. 01将会议录音转成文本
  2. 02转写讲座或播客
  3. 03生成带说话人标记的访谈记录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/open-kbs/skills-file-transcribe --skill file-transcribe

安装后在 Claude Code 中输入/file-transcribe确认已加载。

附带文件transcribe.mjs

详细介绍

# 文件转录技能

通过项目的 AI 代理,使用 Gemini 转录音频或视频文件。 无需 API 密钥——费用按 token 从项目额度中扣除,与聊天调用相同 (最后一行会显示已消耗的额度)。系统会自动检测语言;同一录音中包含多种语言也没问题。

默认引擎:gemini-flash-latest——能够保留多人交谈和难辨片段、遵循词汇表并标注说话者。设置 MODEL=gemini-3.5-transcribe 可切换到 Google 专用的 STT 模型:价格更低,且提供词级时间戳,但会悄悄跳过多人录音中的难辨片段,因此仅适用于清晰的单人音频。

使用场景

  • 转录音频文件(MP3、WAV、OGG、FLAC、M4A 等)
  • 转录视频文件(MP4、MKV、MOV、AVI、WebM 等)
  • 将会议 / 访谈 / 讲座 / 播客转换为文本,并可选择标明发言者

命令

node .claude/skills/file-transcribe/transcribe.mjs <input-file> [output.txt]

(如果通过 npx skills add 安装,则路径为 .agents/skills/file-transcribe/。)

  • <input-file> — 音频或视频文件(必填)
  • [output.txt] — 输出路径(默认值为 transcript.txt)

示例

# Auto-detected language, clean readable text
node .claude/skills/file-transcribe/transcribe.mjs .uploads/meeting.mp3

# Who said what (Speaker 1 / Speaker 2 …) with a time per paragraph
SPEAKERS=1 TIMESTAMPS=1 node .claude/skills/file-transcribe/transcribe.mjs .uploads/interview.mp4 interview.txt

# Language hint + names/terms the model must spell right
TRANSCRIBE_LANG=bg VOCAB="Пламен,PartsHub,Kubernetes" node .claude/skills/file-transcribe/transcribe.mjs .uploads/call.ogg

# Cheap dedicated STT model with word-level timestamps (clean single-speaker audio)
MODEL=gemini-3.5-transcribe TIMESTAMPS=1 node .claude/skills/file-transcribe/transcribe.mjs .uploads/lecture.mp3

选项(环境变量)

变量默认值描述
MODELgemini-flash-latest或 gemini-3.5-transcribe(见上文)
TRANSCRIBE_LANGauto语言提示:bg、en、de-DE 等
STYLEsmartsmart = 添加标点、整理格式并移除填充词;verbatim = 保留说出的每个词
SPEAKERSoff1 → 按段落标注“Speaker N:”
TIMESTAMPSoff1 → 在每段开头添加 [hh:mm:ss];使用 MODEL=gemini-3.5-transcribe 时还会生成 <output>.words.json(词级起止时间)
VOCAB—用逗号分隔的名称 / 术语列表,用于确保拼写正确(使用 gemini-3.5-transcribe 时,不能与 SPEAKERS / TIMESTAMPS 同时使用)
CHUNK_SECONDS1800长录音的分段长度。上限为 3600(一次代理调用必须在 3 分钟内完成);使用 gemini-3.5-transcribe 和 SPEAKERS / TIMESTAMPS 时为 1800(该模型单次调用的限制)。独立运行时默认值为 1500
BATCH2并行分段请求数

工作原理

  1. ffmpeg 将输入转换为单声道 16 kHz MP3(也包括视频中的音轨)
  2. 时长超过 CHUNK_SECONDS 的录音会被分段
  3. 每个片段由预览服务提供,并连同所选模型发送至代理的 /v1/audio/transcriptions
  4. 按顺序拼接结果(将片段偏移量加到时间戳上),并写入文件
  5. 清理临时文件

说话者标签按片段分别标注:在长录音中,第 2 个片段的“Speaker 1”不一定是第 1 个片段中的“Speaker 1”。对于必须保持说话者标签一致的多人录音,请将录音控制在一个片段内(CHUNK_SECONDS 最大可设为 3600)。 使用 gemini-3.5-transcribe 时,SPEAKERS / TIMESTAMPS 会强制使用逐字转录模式。如果某个片段以 finish_reason 警告结束,说明模型因输出限制而提前截断了内容——请调低 CHUNK_SECONDS。

要求

  • ffmpeg(如果运行 ffmpeg -version 失败,请执行 sudo apt-get update && sudo apt-get install -y ffmpeg)
  • 托管平台(Studio 容器中已设置 SERVER_URL 和 KB_ID),或在 Studio 外独立使用时提供 GEMINI_API_KEY

工作流

  1. 确认输入文件存在(位于 .uploads/ 或用户提供的路径)
  2. 运行命令;最后一行会显示已消耗的额度
  3. 读取输出文件,并向用户提供转录文本
  4. 将转录文本移至 / 保存到用户指定的位置

评论

支持 Markdown