Agent skill

Transcription Analysis

by fossasia in fossasia/eventyay-interpretation

A skill your agent uses for tasks involving transcription providers, caption streaming, or the audio pipeline.

Apache-2.0Auto-check passedMedia & Creative

Install Transcription Analysis

skills CLI
$ npx skills add fossasia/eventyay-interpretation --skill transcription-analysis -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install fossasia/eventyay-interpretation transcription-analysis --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/fossasia/eventyay-interpretation.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/transcription-analysis .claude/skills/transcription-analysis && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
transcription-analysis
GitHub stars
1.6k
Token cost
~1.5k tokens
SKILL.md length
455 words
Files
1
Skills in repo
38
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses for tasks involving transcription providers, caption streaming, or the audio pipeline.

  • Works in 10 steps: Create… → Implement class inheriting… → Implement process_chunk(chunk,… → …
  • Tasks involving transcription providers
  • SKILL.md covers Audio Pipeline (end-to-end), Worker State, Adding a New Provider… and CaptionAggregator Usage, plus 6 more sections
  • Calls uv

What it does

Transcription Analysis is an agent skill from fossasia/eventyay-interpretation. Use this skill for tasks involving transcription providers, caption streaming, or the audio pipeline. Reference: portal/transcription/, [TRANSCRIPTIONMAP.md](../../context/TRANSCRIPTIONMAP.md).

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Transcription. The repository describes itself as: A plugin for live interpretation of video streams. The licence is Apache-2.0.

When your agent uses it

  • Tasks involving transcription providers
  • Caption streaming
  • The audio pipeline

Example prompts

  • “/transcription-analysis”

Requirements

  • Python 3

Workflow steps

10 steps, taken from the first numbered list in SKILL.md.

  1. Create portal/transcription/providers/{name}.py
  2. Implement class inheriting TranscriptionProvider from providers/base.py
  3. Implement process_chunk(chunk, language_code, model_variant, config, booth_state) -> str
  4. For streaming (WebSocket-based): override run_stream(process, language_code, model_variant, config, broadcast_callback, booth_id) — see…
  5. Add ProviderEnum.{NAME} = "{name}" in constants.py
  6. Add {name}: {allowed_models_set} to ALLOWED_MODELS
  7. Add to PROVIDERS dict in worker.py
  8. If API key needed: add encrypted column to Event model (migration 008 pattern) + update get_api_key key_map in base.py
  9. Update admin_event_api_settings_post in portal/routers/admin/settings.py to handle new key
  10. Update templates/admin/api_settings.html

What it can do on your machine

Read from SKILL.md and the folder at commit 1ca0139. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Transcription Analysis loads about 1.5k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 455 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~55
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from fossasia/eventyay-interpretation at commit 1ca0139, republished under its Apache-2.0 licence (© fossasia). 455 words, ~1,475 tokens.

Download SKILL.mdSave it as .claude/skills/transcription-analysis/SKILL.md (or your agent's skills folder).
name
transcription-analysis
description
Use this skill for tasks involving transcription providers, caption streaming, or the audio pipeline. Reference: `portal/transcription/`, [TRANSCRIPTION_MAP.md](../../context/TRANSCRIPTION_MAP.md).

Skill: Transcription Analysis

Use this skill for tasks involving transcription providers, caption streaming, or the audio pipeline. Reference: portal/transcription/, TRANSCRIPTION_MAP.md.


Audio Pipeline (end-to-end)

Interpreter browser
  └── getUserMedia (mic, 16-bit PCM via WebRTC/WHIP)
        └── MediaMTX (RTSP port 8554, path: {event_slug}/{language_code})
              └── ffmpeg (spawned by worker.py)
                    -rtsp_transport tcp -i rtsp://mediamtx:8554/{path}
                    -f s16le -acodec pcm_s16le -ar 16000 -ac 1 -
                        └── TranscriptionProvider.run_stream()
                              └── 3-second PCM chunks
                                    └── process_chunk() → text
                                          └── CaptionAggregator
                                                └── broadcast_transcription()
                                                      ├── /ws/booth/{booth_id}  (interpreters)
                                                      └── /ws/captions/{booth_id}  (listeners)

Worker State

  • active_workers: dict[str, dict] — keyed by booth_id; value has {task, provider, stderr_task}
  • active_processes: dict[str, asyncio.subprocess.Process] — the ffmpeg process per booth
  • Both protected by active_workers_lock: asyncio.Lock
  • MAX_TOTAL_WORKERS = 10 — process-global hard limit

Adding a New Provider (checklist)

  1. Create portal/transcription/providers/{name}.py
  2. Implement class inheriting TranscriptionProvider from providers/base.py
  3. Implement process_chunk(chunk, language_code, model_variant, config, booth_state) -> str
  4. For streaming (WebSocket-based): override run_stream(process, language_code, model_variant, config, broadcast_callback, booth_id) — see deepgram.py and openai.py as references
  5. Add ProviderEnum.{NAME} = "{name}" in constants.py
  6. Add {name}: {allowed_models_set} to ALLOWED_MODELS
  7. Add to PROVIDERS dict in worker.py
  8. If API key needed: add encrypted column to Event model (migration 008 pattern) + update get_api_key key_map in base.py
  9. Update admin_event_api_settings_post in portal/routers/admin/settings.py to handle new key
  10. Update templates/admin/api_settings.html

CaptionAggregator Usage

Providers call aggregator methods, not broadcast_callback directly:

python
aggregator = CaptionAggregator(broadcast_callback)
await aggregator.handle_partial(booth_id, partial_text)   # streaming partial
await aggregator.handle_final(booth_id, final_text)       # completed utterance
await aggregator.handle_chunk(booth_id, whisper_chunk)    # Whisper-style chunks
await aggregator.handle_clear(booth_id)                   # silence endpoint

Forced finalization: if an utterance exceeds 50 words or 15 seconds, it auto-finalizes regardless of provider signal. This prevents endlessly growing partials.


Local Provider Details

  • Model loading: get_model(model_size) — thread-safe lazy loading. Model is loaded once and reused.
  • Overlap buffer: 1 second (32 000 bytes) of previous chunk is prepended to current chunk → 4-second effective window per inference call.
  • Thread pool: asyncio.to_thread(self._run_inference, ...) — each chunk is inferred in a thread.
  • VAD filter: vad_filter=True in faster-whisper — reduces empty segment noise.
  • Model eviction: eviction_loop checks every 15 min; evicts model if no active booths and last used > 1 hour ago.

OpenAI Provider Details

  • whisper-1: uses REST POST /v1/audio/transcriptions (WAV conversion via pcm_to_wav)
  • gpt-4o-realtime-*: uses wss://api.openai.com/v1/realtime WebSocket; streams raw PCM
  • Retry: tenacity with exponential backoff (2–10s, 3 attempts) on 429/5xx
  • HTTP client: portal.transcription.shared_http_client — created in lifespan in fastapi_app.py

Show full SKILL.md (169 more words)Show less

Deepgram Provider Details

  • Connects to wss://api.deepgram.com/v1/listen?model=nova-2&...&interim_results=true
  • Runs concurrent sender (pipes PCM) and receiver (gets transcripts) tasks
  • Handles KeepAlive (every 5s timeout to prevent WS close)
  • speech_final=True or is_final=True → handle_final; otherwise → handle_partial

NVIDIA Provider Details

  • Uses Riva gRPC (requires nvidia-riva-client optional dependency: uv add eventyay-interpretation-portal[nvidia])
  • Models: parakeet-rnnt, parakeet-ctc
  • Requires NVIDIA_FUNCTION_ID setting in portal/config.py

Transcription Trigger (Admin → Worker)

  1. Admin sets transcription_enabled=True, provider, model via booth detail form.
  2. POST /admin/.../booths/{id}/transcription-settings handler:
    • Validates provider + model combination.
    • Verifies API key exists if non-local provider.
    • Saves settings to DB.
    • If booth is currently live (has active_interpreter_id): stops old worker, starts new worker.
  3. On interpreter Go Live: worker is started if transcription_enabled=True on the DBBooth.
    • Look for this logic in portal/routers/api.py (search for start_transcription_worker).

Debugging Transcription

  1. Check active_workers dict for the booth_id.
  2. Check ffmpeg process is alive: active_processes[booth_id].returncode is None.
  3. Check MediaMTX RTSP is reachable: rtsp://mediamtx:8554/{event_slug}/{language_code}.
  4. Check API key: get_api_key(event, ProviderEnum.X) — returns None if not set.
  5. Check MAX_TOTAL_WORKERS not exceeded.
  6. Check event.transcription_api_enabled is True for external providers.

© fossasia, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/transcription-analysis of fossasia/eventyay-interpretation.

Open the folder on GitHubat commit 1ca0139

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in fossasia/eventyay-interpretation, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Transcription Analysis next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Transcription Analysis compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Transcription Analysis this skillfossasia/eventyay-interpretation1.6k—~1.5kAutomated safety check: PassApache-2.0
HyperFrames Media Useheygen-com/hyperframes60k—~2.4kAutomated safety check: PassApache-2.0
Native Subtitle Quote Imagechengyi-ai/native-subtitle-quote-image2.6k—~2.4kAutomated safety check: PassMIT
Edu Chem Videowy51ai/edulab1.4k—~2.1kAutomated safety check: NotesApache-2.0
Transcription Memory ReconstructionNxcoreAI/EverRoom3k—~714Automated safety check: PassCustom licence
Edu Math Videowy51ai/edulab1.4k—~2.5kAutomated safety check: NotesApache-2.0

Similar skills

  • HyperFrames Media Use

    heygen-com/hyperframes

    Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.

    60k GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Native Subtitle Quote Image

    chengyi-ai/native-subtitle-quote-image

    将本地视频或用户有权处理的在线视频,经过来源获取、文字稿定位、选题选句、精确取帧、紧凑裁切、拼图和逐张质检,制作成 3:4 或保留画面原比例的视频字幕长图。支持两种明确分开的输出:保留画面内已烧录字幕的原生字幕模式,以及把已审核的时间点与台词绘制到真实视频帧上的脚本字幕模式。用户要求原生字幕截图、字幕帧拼图、YouTube…

    2.6k GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Edu Chem Video

    wy51ai/edulab

    A skill your agent uses when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a chemistry problem (化学题: 氧化还原配平 双线桥 电子守恒, 物质的量计算, 化学平衡 三段式 平衡常数 转化率 反应速率, 离子反应, 电化学, 溶液 滴定…

    1.4k GitHub stars~2.1k tokensUpdated yesterday
    Media & CreativeAuto-check: notes
  • Reconstruct a complete, searchable memory from an untrusted meeting or conversation transcript.

    3k GitHub stars~714 tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Edu Math Video

    wy51ai/edulab

    A skill your agent uses when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a math problem (数学题, geometry, algebra, functions, motion/行程 problems), from a problem screenshot…

    1.4k GitHub stars~2.5k tokensUpdated yesterday
    Media & CreativeAuto-check: notes
  • Transcribe

    JetBrains/skills

    Official

    Transcribe audio files to text with optional diarization and known-speaker hints.

    366 GitHub starsUsed in 4 repos~776 tokens
    Media & CreativeAuto-check passed

More from fossasia/eventyay-interpretation

All 38 skills in this repo
  • Git Guardrails Claude Code

    fossasia/eventyay-interpretation

    Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute.

    1.6k GitHub starsUsed in 12 repos~578 tokens
    Auto-check passed
  • Diagnosing Bugs

    fossasia/eventyay-interpretation

    Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.

    1.6k GitHub starsUsed in 32 repos~2.1k tokens
    Auto-check passed
  • Domain Modeling

    fossasia/eventyay-interpretation

    Build and sharpen a project's domain model. An agent skill from fossasia/eventyay-interpretation.

    1.6k GitHub starsUsed in 30 repos~821 tokens
    Auto-check passed
  • Improve

    fossasia/eventyay-interpretation

    Survey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute.

    1.6k GitHub starsUsed in 10 repos~3.7k tokens
    Auto-check: warnings
  • Migrate To Shoehorn

    fossasia/eventyay-interpretation

    Migrate test files from as type assertions to @total-typescript/shoehorn.

    1.6k GitHub starsUsed in 12 repos~698 tokens
    Auto-check passed
  • Setup Pre Commit

    fossasia/eventyay-interpretation

    Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo.

    1.6k GitHub starsUsed in 12 repos~565 tokens
    Auto-check passed

Questions about Transcription Analysis

What does Transcription Analysis do?

A skill your agent uses for tasks involving transcription providers, caption streaming, or the audio pipeline. Transcription Analysis is an agent skill from fossasia/eventyay-interpretation. Use this skill for tasks involving transcription providers, caption streaming, or the audio pipeline.

When should I use Transcription Analysis?

Transcription Analysis fits situations like: tasks involving transcription providers; caption streaming; the audio pipeline.

How do I install Transcription Analysis in Claude Code?

Run `npx skills add fossasia/eventyay-interpretation --skill transcription-analysis -a claude-code`. Or copy the skill folder (.agents/skills/transcription-analysis in fossasia/eventyay-interpretation) into .claude/skills/transcription-analysis in your project. Claude Code loads it when a task matches its description.

How do I install Transcription Analysis in Codex?

Run `npx skills add fossasia/eventyay-interpretation --skill transcription-analysis -a codex`. Or copy the skill folder (.agents/skills/transcription-analysis in fossasia/eventyay-interpretation) into .agents/skills/transcription-analysis in your project. Codex loads it when a task matches its description.

Can I use Transcription Analysis in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add fossasia/eventyay-interpretation --skill transcription-analysis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/transcription-analysis, .gemini/skills/transcription-analysis, .github/skills/transcription-analysis and .opencode/skills/transcription-analysis in your project.

What does Transcription Analysis need to run?

Going by SKILL.md and its folder, Transcription Analysis needs the command-line tools its instructions call (uv). Our summary lists: Python 3.

Does Transcription Analysis access the network?

SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Transcription Analysis safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Transcription Analysis use?

Transcription Analysis is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Transcription Analysis use?

About 1.5k tokens (SKILL.md is roughly 5.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Transcription Analysis?

Skills that share tags, products or a category with Transcription Analysis: HyperFrames Media Use (heygen-com/hyperframes, 60k stars), Native Subtitle Quote Image (chengyi-ai/native-subtitle-quote-image, 2.6k stars), Edu Chem Video (wy51ai/edulab, 1.4k stars) and Transcription Memory Reconstruction (NxcoreAI/EverRoom, 3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Transcription Analysis?

fossasia (a GitHub organization) maintains it in fossasia/eventyay-interpretation, which has 1,551 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on October 5, 2026.

Source: fossasia/eventyay-interpretation on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.