百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
A

AI-Video-Transcriber

> 开发工具
开源

使用 AI 进行视频和播客的转录和总结。开源、多平台,支持多种语言。

3.0K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

使用 AI 进行视频和播客的转录和总结。开源、多平台,支持多种语言。

✨ Features

  • Multi-Platform Support: Works with YouTube, TikTok, Bilibili, Apple Podcasts, SoundCloud, and 30+ more
  • ⚡ Subtitle-First Architecture: For platforms with native subtitles (e.g. YouTube), transcripts are extracted instantly — no audio download needed. Whisper is only a fallback, making the whole pipeline dramatically faster
  • Original Video Download: Keep the source video alongside the transcript. It downloads in parallel with transcription, previews inline in the results card, and saves with one click. On the Whisper path the audio is extracted from that same file, so the video is only fetched once. Toggle Keep original video off when you want text only
  • Local File Upload: Drag-and-drop or pick a file — .txt (treated as transcript text), .mp3, .mp4, .m4a, .wav, .webm, .mkv, .ogg, .flac. Media is normalized with FFmpeg for Whisper, then runs the same optimize → translate → summarize pipeline as URLs
  • ️ Intelligent Transcription: High-accuracy speech-to-text using Faster-Whisper when subtitles aren't available
  • AI Text Optimization: Automatic typo correction, sentence completion, and intelligent paragraphing
  • Multi-Language Summaries: Generate intelligent summaries in 11 languages
  • ⚙️ Conditional Translation: Auto-translates the transcript when the summary language differs from the source language
  • Bring Your Own Model: Configure any OpenAI-compatible API endpoint (OpenAI, OpenRouter, local LLM, etc.) directly in the UI — enter your API Base URL and API Key, then click Fetch to auto-discover available models
  • Live Progress: Server-sent events stream real-time status, with a badge showing whether the job took the subtitle or Whisper path
  • Mobile-Friendly: Responsive layout, dark UI

Contents

  • Quick Start
  • Usage Guide
  • Use It From Claude / Codex / Scripts
  • API Reference
  • Technical Architecture
  • Configuration Options
  • FAQ
  • Supported Languages
  • Performance Tips
  • Contributing

Quick Start

Prerequisites

  • Python 3.8+
  • FFmpeg (required for yt-dlp audio extraction, merging downloaded video, and normalizing uploaded media)
  • An API key from any OpenAI-compatible provider (OpenAI, OpenRouter, etc.) — configurable directly in the UI, no server-side env var needed

Installation

Method 1: Automatic Installation
git clone https://github.com/wendy7756/AI-Video-Transcriber.git
cd AI-Video-Transcriber

chmod +x install.sh
./install.sh
Method 2: Docker
git clone https://github.com/wendy7756/AI-Video-Transcriber.git
cd AI-Video-Transcriber

# Using Docker Compose (easiest)
cp .env.example .env
# Edit .env if you want server-side defaults (optional)
docker-compose up -d

# Or using Docker directly
docker build -t ai-video-transcriber .
docker run -p 8000:8000 --env-file .env ai-video-transcriber

The image uses Python 3.12 (Debian Bookworm), upgrades pip/setuptools/wheel, then installs from requirements.txt — same version constraints as a fresh local venv on a current Python.

Tip: transcripts and downloaded videos live in /app/temp inside the container. Uncomment the volumes block in docker-compose.yml to persist them on the host.

Method 3: Manual Installation

1. Install Python dependencies

# macOS (PEP 668) strongly recommends a virtualenv
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt

2. Install FFmpeg

brew install ffmpeg                              # macOS
sudo apt update && sudo apt install ffmpeg       # Ubuntu/Debian
sudo yum install ffmpeg                          # CentOS/RHEL

3. Configure environment variables (optional)

# Only if you prefer server-side defaults — otherwise configure in the UI
export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://openrouter.ai/api/v1"   # any OpenAI-compatible endpoint

Start the Service

python3 start.py

Then open http://localhost:8000.

Production mode (recommended for long videos) — disables hot-reload so the SSE connection stays stable across 30–60+ minute tasks:

python3 start.py --prod
Run with explicit env (example)
source venv/bin/activate
export OPENAI_API_KEY=your_api_key_here                  # optional: server-side default
# export OPENAI_BASE_URL=https://openrouter.ai/api/v1    # optional: server-side default
python3 start.py --prod

Usage Guide

1. Choose your input — URL or file

  • Video / podcast URL: paste a link from YouTube, Bilibili, or any supported platform
  • Local file: drag a file onto the dashed upload area, or click to browse. The same Transcribe button starts the job. Uploads use the same API route as URLs (POST /api/process-video with a multipart file), which helps when a reverse proxy only allows that path

2. Pick your options

  • Summary Language — the output language for the summary
  • Keep original video — on by default. Downloads the source video (≤720p) so you can preview and save it with the results. Turn it off for text-only jobs to save bandwidth and disk

3. (Optional) Configure your AI model — click AI Settings to expand

  • Enter your API Base URL (e.g. https://openrouter.ai/api/v1) and API Key
  • Click Fetch to auto-load available models, then select one — or leave blank for the server default
  • Credentials are stored in your browser's localStorage, never sent anywhere but your chosen provider

4. Start processing — click Transcribe. For URL jobs a badge shows the active mode:

Badge Meaning ⚡ Subtitle (green) Native subtitles found — transcript extracted in seconds ** Whisper** (cyan) No subtitles available — audio downloaded and transcribed

For local uploads, media is normalized with FFmpeg then transcribed with Whisper. Plain .txt files skip download and Whisper entirely, going straight into the text pipeline.

5. Review the results

  • Transcript and AI Summary tabs are always present; a Translation tab appears automatically when the transcript language differs from your summary language
  • Each tab has its own purple download icon — click it to save that file without switching tabs
  • Download original video sits at the right of the tab row, next to an inline player showing the source file and its size

Use It From Claude / Codex / Scripts

Besides the web UI there is a headless entry point, so agents and scripts can run the same pipeline with no server and no browser.

CLI

venv/bin/python transcribe.py "https://www.youtube.com/watch?v=VIDEO_ID" --json
venv/bin/python transcribe.py talk.mp4 -l zh --no-video
venv/bin/python transcribe.py notes.txt --no-llm          # no API key needed

--json puts a machine-readable result on stdout and keeps progress on stderr. Exit codes: 0 success, 2 bad input, 1 download/transcode failure.

Flag Meaning -l, --summary-language Summary language (en, zh, es, fr, de, it, pt, ru, ja, ko, ar) --no-llm Transcript only — skips optimize/translate/summarize, needs no API key --no-video Don't keep the original video --whisper-model tiny … large, default base -o, --output-dir Where to write the Markdown, default ./temp --json / -q Machine-readable output / silence progress

AI provider settings for agents

For CLI/agent use, configure the OpenAI-compatible provider with environment variables:

export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export OPENAI_TRANSLATION_MODEL="gpt-4o"  # optional

For one-off CLI runs you can also pass --api-key, --base-url, and --model, but environment variables are safer because API keys do not end up in shell history.

Codex App plugin

The repo also ships a skills-only Codex plugin:

.codex-plugin/plugin.json
skills/video-transcribe/SKILL.md

This repository root is the plugin root. Import or install this folder as a local plugin in Codex App, then start a new task and select AI Video Transcriber from Plugins. Shipping the plugin files does not install the plugin automatically; after changing the plugin, refresh or reinstall it and start a new task so Codex reloads the skill. The skill wraps the same CLI pipeline above, so the machine running Codex still needs this repo's venv and ffmpeg.

Codex App does not provide a plugin-specific settings panel for this skills-only plugin. To switch from OpenRouter to another OpenAI-compatible endpoint, update the environment variables available to the Codex task, or ask Codex to run the CLI with --base-url / --model for that specific run.

This plugin intentionally does not bundle the local stdio MCP server. If you want Codex to call the transcribe_video MCP tool directly, register the MCP server separately as shown below.

Claude Code skill

The repo ships .claude/skills/video-transcribe/SKILL.md, so Claude Code picks it up automatically when you work in this directory — just ask it to transcribe a link. To use it from anywhere, copy the folder to ~/.claude/skills/.

MCP server (Claude Code, Claude Desktop, Codex)

The project includes an optional stdio MCP server. It is not registered automatically; add it once per client.

pip install "mcp>=2.0"

# From the repository root:
claude mcp add video-transcriber \
  -e OPENAI_API_KEY=your_api_key_here \
  -e OPENAI_BASE_URL=https://openrouter.ai/api/v1 \
  -- "$(pwd)/venv/bin/python" "$(pwd)/mcp_server.py"

codex mcp add \
  --env OPENAI_API_KEY=your_api_key_here \
  --env OPENAI_BASE_URL=https://openrouter.ai/api/v1 \
  video-transcriber -- "$(pwd)/venv/bin/python" "$(pwd)/mcp_server.py"

If you prefer editing Codex config directly, add this to ~/.codex/config.toml:

[mcp_servers.video-transcriber]
command = "/abs/path/venv/bin/python"
args = ["/abs/path/mcp_server.py"]

[mcp_servers.video-transcriber.env]
OPENAI_API_KEY = "your_api_key_here"
OPENAI_BASE_URL = "https://openrouter.ai/api/v1"

For Claude Desktop, add the same command and args to your Claude Desktop MCP configuration:

{
  "mcpServers": {
    "video-transcriber": {
      "command": "/abs/path/venv/bin/python",
      "args": ["/abs/path/mcp_server.py"],
      "env": {
        "OPENAI_API_KEY": "your_api_key_here",
        "OPENAI_BASE_URL": "https://openrouter.ai/api/v1"
      }
    }
  }
}

To change providers later, update the MCP client's saved environment variables or remove and re-add the MCP server with the new OPENAI_BASE_URL / model settings, then restart or reload the client if it keeps MCP servers running.

Exposes one tool, transcribe_video, returning the transcript, summary, optional translation, file paths, and a no_speech flag. Verify the wiring with venv/bin/python mcp_server.py --selftest, then check client registration with claude mcp list or codex mcp list.

no_speech matters: when the source has no speech, the pipeline skips the LLM entirely and returns empty text. Agents should report that rather than guessing at the content — feeding an empty transcript to an LLM produces confident fabrications.

API Reference

All endpoints are served from the same origin as the UI.

| Method | Endpoint |

GitHub Issues· 0 开放

在 GitHub 查看全部

暂无开放 Issues,或尚未同步最近议题。

核心特点

  • •Multi-Platform Support: Works with YouTube, TikTok, Bilibili, Apple Podcasts, SoundCloud, and 30+ more
  • •️ Intelligent Transcription: High-accuracy speech-to-text using Faster-Whisper when subtitles aren't available
  • •AI Text Optimization: Automatic typo correction, sentence completion, and intelligent paragraphing
  • •Multi-Language Summaries: Generate intelligent summaries in 11 languages
  • •⚙️ Conditional Translation: Auto-translates the transcript when the summary language differs from the source language
  • •Live Progress: Server-sent events stream real-time status, with a badge showing whether the job took the subtitle or Whisper path
  • •Mobile-Friendly: Responsive layout, dark UI
  • •Quick Start
  • •Usage Guide
  • •Use It From Claude / Codex / Scripts

> 标签

Pythonaitooltiktoktranscribevideototext

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类开发工具
定价开源

> 相关工具

V
VS Code
流行的开源代码编辑器
G
Git
分布式版本控制系统
V
Vite
下一代前端构建工具