audio-transcriber

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Purpose

用途

This skill automates audio-to-text transcription with professional Markdown output, extracting rich technical metadata (speakers, timestamps, language, file size, duration) and generating structured meeting minutes and executive summaries. It uses Faster-Whisper or Whisper with zero configuration, working universally across projects without hardcoded paths or API keys.
Inspired by tools like Plaud, this skill transforms raw audio recordings into actionable documentation, making it ideal for meetings, interviews, lectures, and content analysis.
本技能可自动将音频转写为文本并生成专业的Markdown输出,提取丰富的技术元数据(说话人、时间戳、语言、文件大小、时长),并生成结构化的会议纪要和执行摘要。它无需配置即可使用Faster-Whisper或Whisper,可在所有项目中通用,无需硬编码路径或API密钥。
受Plaud等工具启发,本技能可将原始音频记录转换为可操作的文档,非常适合会议、访谈、讲座和内容分析场景。

When to Use

适用场景

Invoke this skill when:
  • User needs to transcribe audio/video files to text
  • User wants meeting minutes automatically generated from recordings
  • User requires speaker identification (diarization) in conversations
  • User needs subtitles/captions (SRT, VTT formats)
  • User wants executive summaries of long audio content
  • User asks variations of "transcribe this audio", "convert audio to text", "generate meeting notes from recording"
  • User has audio files in common formats (MP3, WAV, M4A, OGG, FLAC, WEBM)
在以下情况调用本技能:
  • 用户需要将音频/视频文件转写为文本
  • 用户希望从录音自动生成会议纪要
  • 用户需要在对话中识别说话人(语音分离)
  • 用户需要字幕/字幕文件(SRT、VTT格式)
  • 用户需要长音频内容的执行摘要
  • 用户提出类似“转写这段音频”“将音频转成文本”“从录音生成会议笔记”的需求
  • 用户拥有常见格式的音频文件(MP3、WAV、M4A、OGG、FLAC、WEBM)

Workflow

工作流程

Step 0: Discovery (Auto-detect Transcription Tools)

步骤0:发现(自动检测转写工具)

Objective: Identify available transcription engines without user configuration.
Actions:
Run detection commands to find installed tools:
bash
undefined
目标: 无需用户配置即可识别可用的转写引擎。
操作:
运行检测命令查找已安装的工具:
bash
undefined

Check for Faster-Whisper (preferred - 4-5x faster)

Check for Faster-Whisper (preferred - 4-5x faster)

if python3 -c "import faster_whisper" 2>/dev/null; then TRANSCRIBER="faster-whisper" echo "✅ Faster-Whisper detected (optimized)"
if python3 -c "import faster_whisper" 2>/dev/null; then TRANSCRIBER="faster-whisper" echo "✅ Faster-Whisper detected (optimized)"

Fallback to original Whisper

Fallback to original 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
elif python3 -c "import whisper" 2>/dev/null; then TRANSCRIBER="whisper" echo "✅ OpenAI Whisper detected" else TRANSCRIBER="none" echo "⚠️ No transcription tool found" fi

Check for ffmpeg (audio format conversion)

Check for ffmpeg (audio format conversion)

if command -v ffmpeg &>/dev/null; then echo "✅ ffmpeg available (format conversion enabled)" else echo "ℹ️ ffmpeg not found (limited format support)" fi

**If no transcriber found:**

Offer automatic installation using the provided script:

```bash
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
    # Get skill directory (works for both repo and symlinked installations)
    SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
    
    # Run installation script
    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
    
    # Verify installation succeeded
    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
This ensures users can install dependencies with one confirmation, or opt for manual installation if preferred.
If transcriber found:
Proceed to Step 0b (CLI Detection).
if command -v ffmpeg &>/dev/null; then echo "✅ ffmpeg available (format conversion enabled)" else echo "ℹ️ ffmpeg not found (limited format support)" fi

**如果未找到转写工具:**

提供使用脚本自动安装的选项:

```bash
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
    # Get skill directory (works for both repo and symlinked installations)
    SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
    
    # Run installation script
    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
    
    # Verify installation succeeded
    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检测)。

Step 1: Validate Audio File

步骤1:验证音频文件

Objective: Verify file exists, check format, and extract metadata.
Actions:
  1. Accept file path or URL from user:
    • Local file:
      meeting.mp3
    • URL:
      https://example.com/audio.mp3
      (download to temp directory)
  2. Verify file exists:
bash
if [[ ! -f "$AUDIO_FILE" ]]; then
    echo "❌ File not found: $AUDIO_FILE"
    exit 1
fi
  1. Extract metadata using ffprobe or file utilities:
bash
undefined
目标: 验证文件是否存在,检查格式并提取元数据。
操作:
  1. 接受用户提供的文件路径或URL
    • 本地文件:
      meeting.mp3
    • URL:
      https://example.com/audio.mp3
      (下载到临时目录)
  2. 验证文件是否存在:
bash
if [[ ! -f "$AUDIO_FILE" ]]; then
    echo "❌ File not found: $AUDIO_FILE"
    exit 1
fi
  1. 使用ffprobe或文件工具提取元数据:
bash
undefined

Get file size

Get file size

FILE_SIZE=$(du -h "$AUDIO_FILE" | cut -f1)
FILE_SIZE=$(du -h "$AUDIO_FILE" | cut -f1)

Get duration and format using ffprobe

Get duration and format using 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)
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)

Convert duration to HH:MM:SS

Convert duration to HH:MM:SS

DURATION_HMS=$(date -u -r "$DURATION" +%H:%M:%S 2>/dev/null || echo "Unknown")

4. **Check file size** (warn if large for cloud APIs):

```bash
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
  1. Validate format (supported: MP3, WAV, M4A, OGG, FLAC, WEBM):
bash
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
DURATION_HMS=$(date -u -r "$DURATION" +%H:%M:%S 2>/dev/null || echo "Unknown")

4. **检查文件大小**(如果文件过大则向云API发出警告):

```bash
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
  1. 验证格式(支持:MP3、WAV、M4A、OGG、FLAC、WEBM):
bash
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

Step 3: Generate Markdown Output

步骤3:生成Markdown输出

Objective: Create structured Markdown with metadata, transcription, meeting minutes, and summary.
Output Template:
markdown
undefined
目标: 创建包含元数据、转写内容、会议纪要和摘要的结构化Markdown文档。
输出模板:
markdown
undefined

Audio Transcription Report

Audio Transcription Report

📊 Metadata

📊 Metadata

FieldValue
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})
FieldValue
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

📋 Meeting Minutes

Participants

Participants

  • {speaker_1}
  • {speaker_2}
  • ...
  • {speaker_1}
  • {speaker_2}
  • ...

Topics Discussed

Topics Discussed

  1. {topic_1} ({timestamp})
    • {key_point_1}
    • {key_point_2}
  2. {topic_2} ({timestamp})
    • {key_point_1}
  1. {topic_1} ({timestamp})
    • {key_point_1}
    • {key_point_2}
  2. {topic_2} ({timestamp})
    • {key_point_1}

Decisions Made

Decisions Made

  • ✅ {decision_1}
  • ✅ {decision_2}
  • ✅ {decision_1}
  • ✅ {decision_2}

Action Items

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

**Implementation:**

Use Python or bash with AI model (Claude/GPT) for intelligent summarization:

```python
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
Output file naming:
bash
undefined
  • {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)生成智能摘要:

```python
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
输出文件命名:
bash
undefined

v1.1.0: Use timestamp para evitar sobrescrever

v1.1.0: Use timestamp para evitar sobrescrever

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
undefined
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
undefined

SCENARIO A: User Provided Custom Prompt

场景A:用户提供自定义提示词

Workflow:
  1. Display user's prompt:
    📝 Prompt fornecido pelo usuário:
    ┌──────────────────────────────────┐
    │ [User's prompt preview]          │
    └──────────────────────────────────┘
  2. Automatically improve with prompt-engineer (if available):
    bash
    🔧 Melhorando prompt com prompt-engineer...
    [Invokes: gh copilot -p "melhore este prompt: {user_prompt}"]
  3. Show both versions:
    ✨ Versão melhorada:
    ┌──────────────────────────────────┐
    │ Role: Você é um documentador...  │
    │ Instructions: Transforme...      │
    │ Steps: 1) ... 2) ...             │
    │ End Goal: ...                    │
    └──────────────────────────────────┘
    
    📝 Versão original:
    ┌──────────────────────────────────┐
    │ [User's original prompt]         │
    └──────────────────────────────────┘
  4. Ask which to use:
    bash
    💡 Usar versão melhorada? [s/n] (default: s):
  5. Process with selected prompt:
    • If "s": use improved
    • If "n": use original
工作流程:
  1. 显示用户提供的提示词:
    📝 Prompt fornecido pelo usuário:
    ┌──────────────────────────────────┐
    │ [User's prompt preview]          │
    └──────────────────────────────────┘
  2. 如果可用,使用prompt-engineer自动优化:
    bash
    🔧 Melhorando prompt com prompt-engineer...
    [Invokes: gh copilot -p "melhore este prompt: {user_prompt}"]
  3. 展示两个版本:
    ✨ Versão melhorada:
    ┌──────────────────────────────────┐
    │ Role: Você é um documentador...  │
    │ Instructions: Transforme...      │
    │ Steps: 1) ... 2) ...             │
    │ End Goal: ...                    │
    └──────────────────────────────────┘
    
    📝 Versão original:
    ┌──────────────────────────────────┐
    │ [User's original prompt]         │
    └──────────────────────────────────┘
  4. 询问使用哪个版本:
    bash
    💡 Usar versão melhorada? [s/n] (default: s):
  5. 使用选定的提示词处理:
    • 如果选择“s”:使用优化后的版本
    • 如果选择“n”:使用原始版本

LLM Processing (Both Scenarios)

LLM处理(两种场景通用)

Once prompt is finalized:
python
from rich.progress import Progress, SpinnerColumn, TextColumn

def process_with_llm(transcript, prompt, cli_tool='claude'):
    full_prompt = f"{prompt}\n\n---\n\nTranscrição:\n\n{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
Progress output:
🤖 Processando com claude... ⠋
[After completion:]
✅ Ata gerada com sucesso!
确定提示词后:
python
from rich.progress import Progress, SpinnerColumn, TextColumn

def process_with_llm(transcript, prompt, cli_tool='claude'):
    full_prompt = f"{prompt}\n\n---\n\nTranscrição:\n\n{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!

Final Output

最终输出

Success (both files):
bash
💾 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
Transcript only (user declined LLM):
bash
💾 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!
成功生成两个文件:
bash
💾 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处理):
bash
💾 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!

Step 5: Display Results Summary

步骤5:显示结果摘要

Objective: Show completion status and next steps.
Output:
bash
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"
目标: 展示完成状态和后续步骤。
输出:
bash
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"

Example Usage

使用示例

Example 1: Basic Transcription

示例1:基础转写

User Input:
bash
copilot> transcribe audio to markdown: meeting-2026-02-02.mp3
Skill Output:
bash
✅ 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
用户输入:
bash
copilot> transcribe audio to markdown: meeting-2026-02-02.mp3
技能输出:
bash
✅ 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

Example 3: Batch Processing

示例3:批量处理

User Input:
bash
copilot> transcreva estes áudios: recordings/*.mp3
Skill Output:
bash
📦 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
用户输入:
bash
copilot> transcreva estes áudios: recordings/*.mp3
技能输出:
bash
📦 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

Example 5: Large File Warning

示例5:大文件警告

User Input:
bash
copilot> transcribe audio to markdown: conference-keynote.mp3
Skill Output:
bash
✅ 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]:
User:
Y
bash
🎙️  Processing... (this may take 10-15 minutes)
[████░░░░░░░░░░░░░░░░] 20% - Estimated time remaining: 12m
This skill is platform-agnostic and works in any terminal context where GitHub Copilot CLI is available. It does not depend on specific project configurations or external APIs, following the zero-configuration philosophy.
用户输入:
bash
copilot> transcribe audio to markdown: conference-keynote.mp3
技能输出:
bash
✅ 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
bash
🎙️  Processing... (this may take 10-15 minutes)
[████░░░░░░░░░░░░░░░░] 20% - Estimated time remaining: 12m
本技能具有平台无关性,可在任何安装了GitHub Copilot CLI的终端环境中使用。它不依赖特定的项目配置或外部API,遵循零配置理念。