MCP オーディオトランスクリプター
AssemblyAIのAPIを介してモデルコンテキストプロトコル(MCP)を実装する、Docker化されたPythonツールです。音声ファイルをアップロードまたは指定すると、構造化されたJSON形式の文字起こしが提供されます。
特徴
- AssemblyMCP : AssemblyAIのREST APIを使用する具体的なMCP実装
- コマンドラインインターフェース(
app.py
):python app.py <input_audio> <output_json>
- Streamlit ウェブ UI (
streamlit_app.py
):- ローカルファイルをアップロードするか、URLを貼り付けます
- 「文字起こし」をクリック
- トランスクリプトをプレビューし、JSON をダウンロードする
- 環境の一貫性と移植性のためのDocker サポート
前提条件
- Python 3.10以上
- AssemblyAI APIキー
- ffmpeg (ローカルファイルを使用する場合のローカルデコード用)
- (オプション)Dockerデスクトップ/エンジン
- (オプション)Streamlit(
pip install streamlit
)
🔧 インストール
- リポジトリをクローンする
git clone https://github.com/ShreyasTembhare/MCP---Audio-Transcriber.git
cd MCP---Audio-Transcriber
.env
を作成するASSEMBLYAI_API_KEY=your_assemblyai_api_key_here
.gitignore
に以下が含まれていることを確認します。- Pythonの依存関係をインストールする
pip install --upgrade pip
pip install -r requirements.txt
- ffmpegをインストールする
- Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg -y
- Windows: https://ffmpeg.orgからダウンロードし、
bin/
PATH に追加します。
使用法
1. CLIトランスクリプション
python app.py <input_audio> <output_json>
<input_audio>
: AssemblyAI でサポートされている任意のファイルまたは URL<output_json>
: 生成されたJSONのパス
例:
python app.py data/input.ogg data/output.json
cat data/output.json
2. Streamlit Web UI
streamlit run streamlit_app.py
3. ドッカー
イメージをビルドします。
docker build -t mcp-transcriber .
実行します(data/ フォルダをマウントします)。
docker run --rm \
-e ASSEMBLYAI_API_KEY="$ASSEMBLYAI_API_KEY" \
-v "$(pwd)/data:/data" \
mcp-transcriber:latest \
/data/input.ogg /data/output.json
次に検査します:
ls data/output.json
cat data/output.json
Windows PowerShell:
docker run --rm `
-e ASSEMBLYAI_API_KEY=$env:ASSEMBLYAI_API_KEY `
-v "${PWD}\data:/data" `
mcp-transcriber:latest `
/data/input.ogg /data/output.json
プロジェクト構造
MCP-Audio-Transcriber/
├── app.py # CLI entrypoint (AssemblyMCP only)
├── mcp.py # ModelContextProtocol + AssemblyMCP
├── streamlit_app.py # Streamlit interface
├── requirements.txt # assemblyai, python-dotenv, streamlit, etc.
├── Dockerfile # builds the container
├── .gitignore # ignores .env, __pycache__, etc.
├── LICENSE # MIT license
└── data/ # sample input and output
├── input.ogg
└── output.json