MCP 音频转录器
这是一种可移植的 Dockerized Python 工具,它使用 OpenAI 的 Whisper 模型实现了用于音频转录的模型上下文协议 (MCP) ,甚至附带由 Streamlit 支持的 Web UI,以便您可以上传音频文件并以 JSON 格式下载转录。
🚀 功能
- 模块化 MCP 接口(
mcp.py
)定义了标准的ModelContextProtocol
。 - 基于 Whisper 的实现(
WhisperMCP
)可实现高质量、多语言的转录。 - 用于批量或临时转录的命令行界面(
app.py
):python app.py <input_audio> <output_json> [--model MODEL_NAME]
- Docker 支持一致的运行时:
docker build -t mcp-transcriber .
docker run --rm \
-v /full/path/to/data:/data \
mcp-transcriber:latest \
/data/input.wav /data/output.json
- Streamlit 网络应用程序(
streamlit_app.py
)允许最终用户:- 上传任何常见的音频文件(.wav、.mp3、.ogg、.m4a)
- 选择 Whisper 型号尺寸
- 现场预览转录
- 一键下载 JSON 结果
📦先决条件
- Python 3.10+
- ffmpeg 已安装并位于您的 PATH 上
- (可选)Docker Engine / Docker Desktop
- (可选)Streamlit
🔧 安装
- 克隆 repo
git clone https://github.com/ShreyasTembhare/MCP---Audio-Transcriber.git
cd MCP---Audio-Transcriber
- Python 依赖项和 FFmpeg
pip install --upgrade pip
pip install -r requirements.txt
# On Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg
# On Windows:
# Download a static build from https://ffmpeg.org and add its bin/ to your PATH
- (可选)Docker
- 安装 Docker Desktop
- 如果使用 WSL2,请启用 WSL 集成。
- (可选)Streamlit
🎯 使用方法
1. CLI 转录
python app.py <input_audio> <output_json> [--model tiny|base|small|medium|large]
<input_audio>
:音频文件的路径<output_json>
:JSON 结果的保存路径--model
:选择 Whisper 模型大小(默认值:base)
例子:
python app.py data/input.ogg data/output.json --model tiny
cat data/output.json
2. Docker
构建图像:
docker build -t mcp-transcriber .
运行它(挂载你的数据/文件夹):
docker run --rm \
-v "/full/path/to/your/project/data:/data" \
mcp-transcriber:latest \
/data/input.wav /data/output.json
然后检查:
ls data/output.json
cat data/output.json
3. Streamlit Web UI
启动应用程序:
streamlit run streamlit_app.py
📁 项目结构
MCP-Audio-Transcriber/
├── app.py # CLI entrypoint
├── mcp.py # Model Context Protocol + WhisperMCP
├── requirements.txt # Python dependencies
├── streamlit_app.py # Streamlit interface
├── Dockerfile # Container definition
├── .gitignore # ignore **pycache**, venvs, etc.
├── LICENSE # MIT license
└── data/ # sample input and output
├── input.ogg
└── output.json