yomiage-svr
Enables text-to-speech synthesis using VOICEVOX characters (ずんだもん, 春日部つむぎ, 四国めたん) and allows querying available speakers and transforming text to character tone.
README
VoiceBox API Server
VOICEVOX音声合成を提供するFastAPI HTTPサーバー。
ずんだもん、春日部つむぎ、四国めたんなどのキャラクターボイスでテキストを読み上げます。
🚀 すぐに始めたい方は QUICKSTART.md をご覧ください
特徴
- FastAPI ベース: 高速で軽量なHTTPサーバー
- どこからでも呼び出し可能: curl、Python、任意のHTTPクライアントから利用可能
- 1つのサーバーで複数プロジェクト対応: 常駐型サーバーで効率的
- バックグラウンド実行: リクエストは即座にレスポンスを返す
- 複数の話者をサポート: キャラクターごとに速度設定可能
- macOS / Linux / Windows 対応
セットアップ
1. VOICEVOXアプリの起動
VOICEVOX公式サイトからアプリをダウンロード・インストールし、起動しておく。
デフォルトで http://localhost:50021 にAPIサーバーが立ち上がる。
2. 依存パッケージのインストール
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
3. サーバー起動
./start_server.sh
または直接起動:
python api_server.py
サーバーが起動すると http://127.0.0.1:8767 でアクセス可能になります。
設定
環境変数(オプション)
.env ファイルを作成して以下を設定できます:
| 変数名 | 説明 | デフォルト値 |
|---|---|---|
VOICEVOX_BASE_URL |
VOICEVOXサーバーURL | http://localhost:50021 |
DEFAULT_SPEAKER |
デフォルト話者名 | zundamon |
話者設定
yomiage-svr/config.py で話者(キャラクター)を設定できます。
利用可能な話者:
| 話者名 | キャラクター | スタイル | 速度 |
|---|---|---|---|
zundamon |
ずんだもん | ノーマル | 1.2 |
tsumugi |
春日部つむぎ | ノーマル | 1.2 |
metan |
四国めたん | ノーマル | 1.2 |
話者を追加・変更するには、yomiage-svr/config.py の SPEAKERS 辞書を編集してください。
API仕様
エンドポイント
POST /speech
テキストを音声合成して読み上げ
リクエストボディ:
{
"text": "読み上げるテキスト",
"speaker_name": "zundamon" // 省略可
}
レスポンス:
{
"status": "accepted",
"message": "音声合成を開始しました: ...",
"speaker_name": "zundamon"
}
GET /speakers
利用可能な話者一覧を取得
レスポンス:
{
"zundamon": {
"name": "zundamon",
"display_name": "ずんだもん(ノーマル)",
"style": "ノーマル",
"speed_scale": 1.2
},
...
}
GET /health
ヘルスチェック
レスポンス:
{
"status": "ok"
}
使い方
curlコマンドで呼び出し
# デフォルト話者で読み上げ
curl -X POST http://127.0.0.1:8767/speech \
-H "Content-Type: application/json" \
-d '{"text": "こんにちは、音声合成のテストです"}'
# 話者を指定して読み上げ
curl -X POST http://127.0.0.1:8767/speech \
-H "Content-Type: application/json" \
-d '{"text": "春日部つむぎです", "speaker_name": "tsumugi"}'
# 利用可能な話者一覧を取得
curl http://127.0.0.1:8767/speakers
Pythonから呼び出し
client_example.py を参照:
import requests
# 音声合成リクエスト
response = requests.post(
"http://127.0.0.1:8767/speech",
json={"text": "こんにちは", "speaker_name": "zundamon"}
)
print(response.json())
詳細な使用例:
python client_example.py
他のプロジェクトから呼び出し
任意のプロジェクトから、HTTPリクエストでVoiceBox APIを呼び出せます:
# あなたのプロジェクトのコード
import requests
def speak(text: str, speaker: str = "zundamon"):
requests.post(
"http://127.0.0.1:8767/speech",
json={"text": text, "speaker_name": speaker}
)
# 使用例
speak("処理が完了しました")
speak("エラーが発生しました", speaker="metan")
直接実行
python server.py
プロジェクト構成
VoiceBox-API/
├── api_server.py # FastAPIサーバー本体
├── server.py # MCPサーバー(旧版・オプション)
├── start_server.sh # サーバー起動スクリプト
├── client_example.py # クライアント使用例
├── yomiage-svr/
│ ├── __init__.py
│ ├── config.py # 話者設定
│ ├── services/
│ │ ├── __init__.py
│ │ ├── voicevox_service.py # VOICEVOX HTTP API音声合成サービス
│ │ └── audio_service.py # 音声再生サービス
│ └── tools/
│ ├── __init__.py
│ └── speech_tool.py # Speechツール実装
├── requirements.txt # 依存パッケージ
├── .env.example # 環境変数サンプル
└── README.md # このファイル
MCPサーバー版(GitHub Copilot / Claude Desktop から呼び出し)
MCPとは?
MCP (Model Context Protocol) は、AIエージェント(GitHub Copilot、Claude Desktopなど)がツールを呼び出すための標準プロトコルです。MCPサーバーとして起動することで、AIエージェントから直接音声合成を実行できます。
セットアップ
1. MCP設定ファイルの配置
.vscode/mcp.json が既に配置されています:
{
"mcpServers": {
"yomiage": {
"command": "${workspaceFolder}/venv/bin/python",
"args": ["mcp_server.py"],
"cwd": "${workspaceFolder}",
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
}
}
}
2. Claude Desktop での設定(オプション)
Claude Desktopから利用する場合は、~/Library/Application Support/Claude/claude_desktop_config.json に追加:
{
"mcpServers": {
"voicevox-speech": {
"command": "python",
"args": ["/path/to/yomiage-svr/mcp_server.py"],
"cwd": "/path/to/yomiage-svr"
}
}
}
MCPサーバーとして起動
# stdio transport(標準入出力での通信)
python mcp_server.py
提供されるツール
1. speak - 音声合成&読み上げ
テキストを音声合成してキャラクターボイスで読み上げ
引数:
- text: 読み上げるテキスト
- speaker_name: 話者名(zundamon, tsumugi, metan)。省略時は自動選択
- transform_tone: 口調変換の有無(デフォルト: true)
2. list_available_speakers - 話者一覧取得
利用可能な話者(キャラクター)の一覧を取得
戻り値: 話者情報のリスト(名前、スタイル、速度など)
3. transform_character_tone - 口調変換のみ
テキストをキャラクターの口調に変換(音声合成なし、文字列のみ)
引数:
- text: 変換するテキスト
- speaker_name: 話者名
戻り値: 元テキストと変換後テキスト
GitHub Copilot / Claude Desktop からの使用例
GitHub Copilot:
#yomiage タスクが完了しました、と読み上げて
Claude Desktop:
「処理が完了しました」をずんだもんの声で読み上げて
AIエージェントが自動的に適切なツールを呼び出し、音声で通知してくれます。
HTTPサーバーとMCPサーバーの使い分け
| 用途 | 推奨サーバー | 起動方法 |
|---|---|---|
| curl / Python から呼び出し | FastAPI HTTPサーバー | ./start_server.sh |
| GitHub Copilot / Claude Desktop から呼び出し | MCPサーバー | .vscode/mcp.json で自動起動 |
| 常駐サーバーとして複数プロジェクトから利用 | FastAPI HTTPサーバー | ./start_server.sh |
両方同時に起動することも可能です(ポートが異なるため競合しません)。
ライセンス・クレジット
VOICEVOX利用時は「VOICEVOX:ずんだもん」等のクレジット表記が必要です。
詳細は VOICEVOX利用規約 をご確認ください。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。