关于 file-transcribe
File Transcription Skill 通过项目的 AI 代理调用 Gemini,将音频和视频文件转写为文本,适用于会议、访谈、讲座和播客等录音。它支持说话人标签、时间戳、语言提示和词汇表等选项。
主要功能
- 01转写音频和视频文件
- 02自动检测录音语言
- 03添加说话人标签和时间戳
- 04设置语言提示和词汇表
- 05拆分并拼接长录音
适用场景
- 01将会议录音转成文本
- 02转写讲座或播客
- 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
选项(环境变量)
| 变量 | 默认值 | 描述 |
|---|---|---|
MODEL | gemini-flash-latest | 或 gemini-3.5-transcribe(见上文) |
TRANSCRIBE_LANG | auto | 语言提示:bg、en、de-DE 等 |
STYLE | smart | smart = 添加标点、整理格式并移除填充词;verbatim = 保留说出的每个词 |
SPEAKERS | off | 1 → 按段落标注“Speaker N:” |
TIMESTAMPS | off | 1 → 在每段开头添加 [hh:mm:ss];使用 MODEL=gemini-3.5-transcribe 时还会生成 <output>.words.json(词级起止时间) |
VOCAB | — | 用逗号分隔的名称 / 术语列表,用于确保拼写正确(使用 gemini-3.5-transcribe 时,不能与 SPEAKERS / TIMESTAMPS 同时使用) |
CHUNK_SECONDS | 1800 | 长录音的分段长度。上限为 3600(一次代理调用必须在 3 分钟内完成);使用 gemini-3.5-transcribe 和 SPEAKERS / TIMESTAMPS 时为 1800(该模型单次调用的限制)。独立运行时默认值为 1500 |
BATCH | 2 | 并行分段请求数 |
工作原理
- ffmpeg 将输入转换为单声道 16 kHz MP3(也包括视频中的音轨)
- 时长超过
CHUNK_SECONDS的录音会被分段 - 每个片段由预览服务提供,并连同所选模型发送至代理的
/v1/audio/transcriptions - 按顺序拼接结果(将片段偏移量加到时间戳上),并写入文件
- 清理临时文件
说话者标签按片段分别标注:在长录音中,第 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
工作流
- 确认输入文件存在(位于
.uploads/或用户提供的路径) - 运行命令;最后一行会显示已消耗的额度
- 读取输出文件,并向用户提供转录文本
- 将转录文本移至 / 保存到用户指定的位置