利用LLM集成将音频录音转换为带智能摘要的专业Markdown文档
这种技能将音频对文本的复制与专业的Markdown输出自动化, 提取丰富的技术元数据( 语音、 时间戳、 语言、 文件大小、 持续时间) 和 generra
功能概述
这种技能将音频对文本的复制与专业的Markdown输出自动化, 提取丰富的技术元数据( 语音、 时间戳、 语言、 文件大小、 持续时间) 和 generra是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
用途
本技能可自动完成音频到文本的转录,并以专业 Markdown 格式输出,同时提取丰富的技术元数据(说话人、时间戳、语言、文件大小、时长),并生成结构化的会议纪要和高管摘要。它默认使用 Faster-Whisper 或 Whisper,无需任何配置——不依赖硬编码路径,也不需要 API 密钥,可在任意项目中通用运行。
受 Plaud 等工具启发,该技能将原始音频录音转化为可操作的文档,特别适用于会议、访谈、讲座及内容分析等场景。
适用场景
当出现以下情况时,请调用本技能:
- 用户需将音频/视频文件转录为文本
- 用户希望从录音中自动生成会议纪要
- 用户需要在对话中识别说话人(声纹分离,diarization)
- 用户需要字幕/标题(SRT、VTT 格式)
- 用户希望为长时音频内容生成高管摘要
- 用户提出类似“转录这段音频”、“将音频转为文本”、“根据录音生成会议记录”等表述
- 用户拥有常见格式的音频文件(MP3、WAV、M4A、OGG、FLAC、WEBM)
工作流程
步骤 0:发现阶段(自动检测转录工具)
目标:在无需用户配置的前提下,识别系统中已安装的转录引擎。
操作:
运行检测命令,查找已安装的工具:
# 检查 Faster-Whisper(首选,速度提升 4–5 倍)
if python3 -c "import faster_whisper" 2>/dev/null; then
TRANSCRIBER="faster-whisper"
echo "✅ Faster-Whisper detected (optimized)"
# 回退至原始 Whisper
elif python3 -c "import whisper" 2>/dev/null; then
TRANSCRIBER="whisper"
echo "✅ OpenAI Whisper detected"
else
TRANSCRIBER="none"
echo "⚠️ No transcription tool found"
fi
# 检查 ffmpeg(用于音频格式转换)
if command -v ffmpeg &>/dev/null; then
echo "✅ ffmpeg available (format conversion enabled)"
else
echo "ℹ️ ffmpeg not found (limited format support)"
fi
若未找到转录器:
提供使用预置脚本的自动安装选项:
echo "⚠️ No transcription tool found"
echo ""
echo "🔧 Auto-install dependencies? (Recommended)"
read -p "Run installation script? [Y/n]: " AUTO_INSTALL
if [[ ! "$AUTO_INSTALL" =~ ^[Nn] ]]; then
# 获取技能目录(兼容仓库直装与符号链接安装)
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 运行安装脚本
if [[ -f "$SKILL_DIR/scripts/install-requirements.sh" ]]; then
bash "$SKILL_DIR/scripts/install-requirements.sh"
else
echo "❌ Installation script not found"
echo ""
echo "📦 Manual installation:"
echo " pip install faster-whisper # Recommended"
echo " pip install openai-whisper # Alternative"
echo " brew install ffmpeg # Optional (macOS)"
exit 1
fi
# 验证安装是否成功
if python3 -c "import faster_whisper" 2>/dev/null || python3 -c "import whisper" 2>/dev/null; then
echo "✅ Installation successful! Proceeding with transcription..."
else
echo "❌ Installation failed. Please install manually."
exit 1
fi
else
echo ""
echo "📦 Manual installation required:"
echo ""
echo "Recommended (fastest):"
echo " pip install faster-whisper"
echo ""
echo "Alternative (original):"
echo " pip install openai-whisper"
echo ""
echo "Optional (format conversion):"
echo " brew install ffmpeg # macOS"
echo " apt install ffmpeg # Linux"
echo ""
exit 1
fi
该机制确保用户只需一次确认即可完成依赖安装;如需手动安装,亦可随时选择跳过。
若已找到转录器:
继续执行步骤 0b(CLI 工具检测)。
步骤 1:验证音频文件
目标:确认文件存在、检查格式并提取元数据。
操作:
接收用户提供的文件路径或 URL:
- 本地文件:
meeting.mp3 - URL:
https://example.com/audio.mp3(下载至临时目录)
- 本地文件:
验证文件是否存在:
if [[ ! -f "$AUDIO_FILE" ]]; then
echo "❌ File not found: $AUDIO_FILE"
exit 1
fi
- 使用 ffprobe 或 file 工具提取元数据:
# 获取文件大小
FILE_SIZE=$(du -h "$AUDIO_FILE" | cut -f1)
# 使用 ffprobe 获取时长与格式
DURATION=$(ffprobe -v error -show_entries format=duration
-of default=noprint_wrappers=1:nokey=1 "$AUDIO_FILE" 2>/dev/null)
FORMAT=$(ffprobe -v error -select_streams a:0 -show_entries
stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$AUDIO_FILE" 2>/dev/null)
# 将时长转换为 HH:MM:SS 格式
DURATION_HMS=$(date -u -r "$DURATION" +%H:%M:%S 2>/dev/null || echo "Unknown")
- 检查文件大小(若过大则向云 API 场景发出警告):
SIZE_MB=$(du -m "$AUDIO_FILE" | cut -f1)
if [[ $SIZE_MB -gt 25 ]]; then
echo "⚠️ Large file ($FILE_SIZE) - processing may take several minutes"
fi
- 验证格式(支持格式:MP3、WAV、M4A、OGG、FLAC、WEBM):
EXTENSION="${AUDIO_FILE##*.}"
SUPPORTED_FORMATS=("mp3" "wav" "m4a" "ogg" "flac" "webm" "mp4")
if [[ ! " ${SUPPORTED_FORMATS[@]} " =~ " ${EXTENSION,,} " ]]; then
echo "⚠️ Unsupported format: $EXTENSION"
if command -v ffmpeg &>/dev/null; then
echo "🔄 Converting to WAV..."
ffmpeg -i "$AUDIO_FILE" -ar 16000 "${AUDIO_FILE%.*}.wav" -y
AUDIO_FILE="${AUDIO_FILE%.*}.wav"
else
echo "❌ Install ffmpeg to convert formats: brew install ffmpeg"
exit 1
fi
fi
步骤 3:生成 Markdown 输出
目标:创建包含元数据、转录文本、会议纪要及摘要的结构化 Markdown 文档。
输出模板:
# Audio Transcription Report
## 📊 Metadata
| Field | Value |
|-------|-------|
| **File Name** | {filename} |
| **File Size** | {file_size} |
| **Duration** | {duration_hms} |
| **Language** | {language} ({language_code}) |
| **Processed Date** | {process_date} |
| **Speakers Identified** | {num_speakers} |
| **Transcription Engine** | {engine} (model: {model}) |
## 📋 Meeting Minutes
### Participants
- {speaker_1}
- {speaker_2}
- ...
### Topics Discussed
1. **{topic_1}** ({timestamp})
- {key_point_1}
- {key_point_2}
2. **{topic_2}** ({timestamp})
- {key_point_1}
### Decisions Made
- ✅ {decision_1}
- ✅ {decision_2}
### Action Items
- [ ] **{action_1}** - Assigned to: {speaker} - Due: {date_if_mentioned}
- [ ] **{action_2}** - Assigned to: {speaker}
*Generated by audio-transcriber skill v1.0.0*
*Transcription engine: {engine} | Processing time: {elapsed_time}s*
实现方式:
使用 Python 或 Bash 调用 AI 模型(Claude/GPT)完成智能摘要:
def generate_meeting_minutes(segments):
"""Extract topics, decisions, action items from transcription."""
# Group segments by topic (simple clustering by timestamps)
topics = cluster_by_topic(segments)
# Identify action items (keywords: "should", "will", "need to", "action")
action_items = extract_action_items(segments)
# Identify decisions (keywords: "decided", "agreed", "approved")
decisions = extract_decisions(segments)
return {
"topics": topics,
"decisions": decisions,
"action_items": action_items
}
def generate_summary(segments, max_paragraphs=5):
"""Create executive summary using AI (Claude/GPT via API or local model)."""
full_text = " ".join([s["text"] for s in segments])
# Use Chain of Density approach (from prompt-engineer frameworks)
summary_prompt = f"""
Summarize the following transcription in {max_paragraphs} concise paragraphs.
Focus on key topics, decisions, and action items.
Transcription:
{full_text}
"""
# Call AI model (placeholder - user can integrate Claude API or use local model)
summary = call_ai_model(summary_prompt)
return summary
输出文件命名规则:
# v1.1.0:采用时间戳避免覆盖已有文件
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
TRANSCRIPT_FILE="transcript-${TIMESTAMP}.md"
ATA_FILE="ata-${TIMESTAMP}.md"
echo "$TRANSCRIPT_CONTENT" > "$TRANSCRIPT_FILE"
echo "✅ Transcript salvo: $TRANSCRIPT_FILE"
if [[ -n "$ATA_CONTENT" ]]; then
echo "$ATA_CONTENT" > "$ATA_FILE"
echo "✅ Ata salva: $ATA_FILE"
fi
场景 A:用户提供自定义 Prompt
工作流程:
显示用户输入的 Prompt:
📝 Prompt fornecido pelo usuário: ┌──────────────────────────────────┐ │ [User's prompt preview] │ └──────────────────────────────────┘
如有 Prompt Engineer 工具可用,自动优化 Prompt:
🔧 Melhorando prompt com prompt-engineer... [Invokes: gh copilot -p "melhore este prompt: {user_prompt}"]同时展示优化前后两个版本:
✨ Versão melhorada: ┌──────────────────────────────────┐ │ Role: Você é um documentador... │ │ Instructions: Transforme... │ │ Steps: 1) ... 2) ... │ │ End Goal: ... │ └──────────────────────────────────┘ 📝 Versão original: ┌──────────────────────────────────┐ │ [User's original prompt] │ └──────────────────────────────────┘
询问用户选择使用哪个版本:
💡 Usar versão melhorada? [s/n] (default: s):
按用户选择处理:
- 若选 “s”:使用优化版
- 若选 “n”:使用原始版
大语言模型(LLM)处理(两种场景均适用)
Prompt 最终确定后执行:
from rich.progress import Progress, SpinnerColumn, TextColumn
def process_with_llm(transcript, prompt, cli_tool='claude'):
full_prompt = f"{prompt}nn---nnTranscrição:nn{transcript}"
with Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
transient=True
) as progress:
progress.add_task(
description=f"🤖 Processando com {cli_tool}...",
total=None
)
if cli_tool == 'claude':
result = subprocess.run(
['claude', '-'],
input=full_prompt,
capture_output=True,
text=True,
timeout=300 # 5 minutes
)
elif cli_tool == 'gh-copilot':
result = subprocess.run(
['gh', 'copilot', 'suggest', '-t', 'shell', full_prompt],
capture_output=True,
text=True,
timeout=300
)
if result.returncode == 0:
return result.stdout.strip()
else:
return None
进度提示示例:
🤖 Processando com claude... ⠋ [After completion:] ✅ Ata gerada com sucesso!
最终输出
成功(生成两个文件):
💾 Salvando arquivos... ✅ Arquivos criados: - transcript-20260203-023045.md (transcript puro) - ata-20260203-023045.md (processado com LLM) 🧹 Removidos arquivos temporários: metadata.json, transcription.json ✅ Concluído! Tempo total: 3m 45s
仅生成转录文本(用户拒绝 LLM 处理):
💾 Salvando arquivos... ✅ Arquivo criado: - transcript-20260203-023045.md ℹ️ Ata não gerada (processamento LLM recusado pelo usuário) 🧹 Removidos arquivos temporários: metadata.json, transcription.json ✅ Concluído!
步骤 5:显示结果摘要
目标:展示任务完成状态及后续建议操作。
输出:
echo ""
echo "✅ Transcription Complete!"
echo ""
echo "📊 Results:"
echo " File: $OUTPUT_FILE"
echo " Language: $LANGUAGE"
echo " Duration: $DURATION_HMS"
echo " Speakers: $NUM_SPEAKERS"
echo " Words: $WORD_COUNT"
echo " Processing time: ${ELAPSED_TIME}s"
echo ""
echo "📝 Generated:"
echo " - $OUTPUT_FILE (Markdown report)"
[if alternative formats:]
echo " - ${OUTPUT_FILE%.*}.srt (Subtitles)"
echo " - ${OUTPUT_FILE%.*}.json (Structured data)"
echo ""
echo "🎯 Next steps:"
echo " 1. Review meeting minutes and action items"
echo " 2. Share report with participants"
echo " 3. Track action items to completion"
使用示例
示例 1:基础转录
用户输入:
copilot> transcribe audio to markdown: meeting-2026-02-02.mp3
技能输出:
✅ Faster-Whisper detected (optimized) ✅ ffmpeg available (format conversion enabled) 📂 File: meeting-2026-02-02.mp3 📊 Size: 12.3 MB ⏱️ Duration: 00:45:32 🎙️ Processing... [████████████████████] 100% ✅ Language detected: Portuguese (pt-BR) 👥 Speakers identified: 4 📝 Generating Markdown output... ✅ Transcription Complete! 📊 Results: File: meeting-2026-02-02.md Language: pt-BR Duration: 00:45:32 Speakers: 4 Words: 6,842 Processing time: 127s 📝 Generated: - meeting-2026-02-02.md (Markdown report) 🎯 Next steps: 1. Review meeting minutes and action items 2. Share report with participants 3. Track action items to completion
示例 3:批量处理
用户输入:
copilot> transcreva estes áudios: recordings/*.mp3
技能输出:
📦 Batch mode: 5 files found 1. team-standup.mp3 2. client-call.mp3 3. brainstorm-session.mp3 4. product-demo.mp3 5. retrospective.mp3 🎙️ Processing batch... [1/5] team-standup.mp3 ✅ (2m 34s) [2/5] client-call.mp3 ✅ (15m 12s) [3/5] brainstorm-session.mp3 ✅ (8m 47s) [4/5] product-demo.mp3 ✅ (22m 03s) [5/5] retrospective.mp3 ✅ (11m 28s) ✅ Batch Complete! 📝 Generated 5 Markdown reports ⏱️ Total processing time: 6m 15s
示例 5:大文件警告
用户输入:
copilot> transcribe audio to markdown: conference-keynote.mp3
技能输出:
✅ Faster-Whisper detected (optimized) 📂 File: conference-keynote.mp3 📊 Size: 87.2 MB ⏱️ Duration: 02:15:47 ⚠️ Large file (87.2 MB) - processing may take several minutes Continue? [Y/n]:
用户输入:Y
🎙️ Processing... (this may take 10-15 minutes) [████░░░░░░░░░░░░░░░░] 20% - Estimated time remaining: 12m
本技能具备平台无关性,可在任何支持 GitHub Copilot CLI 的终端环境中运行。它不依赖特定项目配置或外部 API,严格遵循零配置设计哲学。
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章