@kajidog/mcp-tts-voicevox 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,15 +1,15 @@
1
- ISC License
2
-
3
- Copyright (c) 2024 kajidog
4
-
5
- Permission to use, copy, modify, and/or distribute this software for any
6
- purpose with or without fee is hereby granted, provided that the above
7
- copyright notice and this permission notice appear in all copies.
8
-
9
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1
+ ISC License
2
+
3
+ Copyright (c) 2024 kajidog
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
15
  PERFORMANCE OF THIS SOFTWARE.
package/README.ja.md ADDED
@@ -0,0 +1,383 @@
1
+ # VOICEVOX TTS MCP
2
+
3
+ [English](README.md) | **日本語**
4
+
5
+ VOICEVOX を使用した MCP テキスト読み上げサーバー
6
+
7
+ ## 何ができるか
8
+
9
+ - **AI アシスタントに喋らせる** — Claude Desktop などの MCP クライアントからテキストを読み上げ
10
+ - **複数キャラクターの会話** — 1 回の呼び出しでセグメントごとに話者を切り替え可能
11
+ - **スムーズな再生** — キュー管理、即時再生、先読み、ストリーミング再生
12
+ - **クロスプラットフォーム** — Windows, macOS, Linux(WSL 含む)で動作
13
+
14
+ ## クイックスタート
15
+
16
+ ### 必要なもの
17
+
18
+ - Node.js 18.0.0 以上
19
+ - [VOICEVOX Engine](https://voicevox.hiroshiba.jp/)(起動しておく)
20
+ - ffplay(任意・推奨)
21
+
22
+ #### FFplay の導入
23
+
24
+ ffplay は FFmpeg に同梱される小型プレイヤーで、標準入力からの再生に対応します。導入済みの環境では、低遅延で安定したストリーミング再生を自動的に使用します。
25
+
26
+ > 💡 **ffplay がなくても動作します。** その場合は一時ファイル経由の再生(Windows: PowerShell、macOS: afplay、Linux: aplay 等)にフォールバックします。
27
+
28
+ - 導入は簡単: 各 OS でワンライナーのセットアップ(下記手順)
29
+ - 必須事項: `ffplay` に PATH が通っている必要があります(導入後に端末/アプリ再起動)
30
+
31
+ <details>
32
+ <summary>FFplay の導入手順と PATH 反映</summary>
33
+
34
+ インストール例:
35
+
36
+ - Windows(いずれか)
37
+ - Winget: `winget install --id=Gyan.FFmpeg -e`
38
+ - Chocolatey: `choco install ffmpeg`
39
+ - Scoop: `scoop install ffmpeg`
40
+ - 公式ビルド(例): https://www.gyan.dev/ffmpeg/builds/ または https://github.com/BtbN/FFmpeg-Builds から zip を取得し、`bin` フォルダを PATH に追加
41
+
42
+ - macOS
43
+ - Homebrew: `brew install ffmpeg`
44
+
45
+ - Linux
46
+ - Debian/Ubuntu: `sudo apt-get update && sudo apt-get install -y ffmpeg`
47
+ - Fedora: `sudo dnf install -y ffmpeg`
48
+ - Arch: `sudo pacman -S ffmpeg`
49
+
50
+ PATH の反映:
51
+
52
+ - Windows: 環境変数に `...\ffmpeg\bin` を追加後、PowerShell/端末・エディタ(Claude/VS Code 等)を再起動。
53
+ - 反映確認: `powershell -c "$env:Path"` に ffmpeg のパスが含まれること
54
+ - macOS/Linux: 通常は自動反映。必要に応じて `echo $PATH` で確認し、シェルを再起動。
55
+ - MCP クライアント(Claude Desktop/Code): アプリ側のプロセス再起動で PATH を再読込します。
56
+
57
+ 動作確認:
58
+
59
+ ```bash
60
+ ffplay -version
61
+ ```
62
+
63
+ バージョン情報が表示されれば導入完了です。CLI/MCP は自動的に ffplay を検出して標準入力ストリーミング再生を使用します。
64
+
65
+ </details>
66
+
67
+
68
+ ### 3 ステップで開始
69
+
70
+ **1. VOICEVOX Engine を起動**
71
+
72
+ **2. Claude Desktop の設定ファイルに追加**
73
+
74
+ 設定ファイルの場所:
75
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
76
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
77
+
78
+ ```json
79
+ {
80
+ "mcpServers": {
81
+ "tts-mcp": {
82
+ "command": "npx",
83
+ "args": ["-y", "@kajidog/mcp-tts-voicevox"]
84
+ }
85
+ }
86
+ }
87
+ ```
88
+
89
+ **3. Claude Desktop を再起動**
90
+
91
+ これだけで Claude に「〇〇と喋って」と頼めば喋ってくれます!
92
+
93
+ ---
94
+
95
+ ## MCP ツール
96
+
97
+ ### `speak` — テキスト読み上げ
98
+
99
+ Claude から呼び出せるメインの機能です。
100
+
101
+ | パラメータ | 説明 | デフォルト |
102
+ |-----------|------|-----------|
103
+ | `text` | 読み上げるテキスト(改行で複数セグメント) | 必須 |
104
+ | `speaker` | 話者 ID | 1 |
105
+ | `speedScale` | 再生速度 | 1.0 |
106
+ | `immediate` | 即時再生(キューをクリア) | true |
107
+ | `waitForEnd` | 再生完了まで待機 | false |
108
+
109
+ **使用例:**
110
+
111
+ ```javascript
112
+ // シンプルなテキスト
113
+ { "text": "こんにちは" }
114
+
115
+ // 話者を指定
116
+ { "text": "こんにちは", "speaker": 3 }
117
+
118
+ // セグメントごとに話者を変更
119
+ { "text": "1:こんにちは\n3:今日はいい天気ですね" }
120
+
121
+ // 再生完了まで待機(同期処理)
122
+ { "text": "このメッセージを読み終えてから次へ", "waitForEnd": true }
123
+ ```
124
+
125
+ <details>
126
+ <summary>その他のツール</summary>
127
+
128
+ | ツール | 説明 |
129
+ |--------|------|
130
+ | `ping_voicevox` | VOICEVOX Engine への接続確認 |
131
+ | `get_speakers` | 利用可能な話者一覧を取得 |
132
+ | `get_speaker_detail` | 話者の詳細情報を取得 |
133
+ | `stop_speaker` | 再生停止とキューのクリア |
134
+ | `generate_query` | 音声合成クエリを生成 |
135
+ | `synthesize_file` | 音声ファイルを生成 |
136
+
137
+ </details>
138
+
139
+ ---
140
+
141
+ ## 設定
142
+
143
+ <details>
144
+ <summary><b>環境変数で設定</b></summary>
145
+
146
+ ### VOICEVOX 設定
147
+
148
+ | 環境変数 | 説明 | デフォルト |
149
+ |---------|------|-----------|
150
+ | `VOICEVOX_URL` | Engine の URL | `http://localhost:50021` |
151
+ | `VOICEVOX_DEFAULT_SPEAKER` | デフォルト話者 ID | `1` |
152
+ | `VOICEVOX_DEFAULT_SPEED_SCALE` | 再生速度 | `1.0` |
153
+
154
+ ### 再生オプション
155
+
156
+ | 環境変数 | 説明 | デフォルト |
157
+ |---------|------|-----------|
158
+ | `VOICEVOX_USE_STREAMING` | ストリーミング再生(`ffplay` 必要) | `false` |
159
+ | `VOICEVOX_DEFAULT_IMMEDIATE` | 即時再生 | `true` |
160
+ | `VOICEVOX_DEFAULT_WAIT_FOR_START` | 再生開始まで待機 | `false` |
161
+ | `VOICEVOX_DEFAULT_WAIT_FOR_END` | 再生完了まで待機 | `false` |
162
+
163
+ ### 制限設定
164
+
165
+ AI が特定のオプションを指定できないように制限できます。
166
+
167
+ | 環境変数 | 説明 |
168
+ |---------|------|
169
+ | `VOICEVOX_RESTRICT_IMMEDIATE` | `immediate` オプションを制限 |
170
+ | `VOICEVOX_RESTRICT_WAIT_FOR_START` | `waitForStart` オプションを制限 |
171
+ | `VOICEVOX_RESTRICT_WAIT_FOR_END` | `waitForEnd` オプションを制限 |
172
+
173
+ ### ツールの無効化
174
+
175
+ ```bash
176
+ # 不要なツールを無効化
177
+ export VOICEVOX_DISABLED_TOOLS=generate_query,synthesize_file
178
+ ```
179
+
180
+ ### サーバー設定
181
+
182
+ | 環境変数 | 説明 | デフォルト |
183
+ |---------|------|-----------|
184
+ | `MCP_HTTP_MODE` | HTTP モードを有効化 | `false` |
185
+ | `MCP_HTTP_PORT` | HTTP ポート | `3000` |
186
+ | `MCP_HTTP_HOST` | HTTP ホスト | `0.0.0.0` |
187
+ | `MCP_ALLOWED_HOSTS` | 許可するホスト(カンマ区切り) | `localhost,127.0.0.1,[::1]` |
188
+ | `MCP_ALLOWED_ORIGINS` | 許可するオリジン(カンマ区切り) | `http://localhost,http://127.0.0.1,...` |
189
+
190
+ </details>
191
+
192
+ <details>
193
+ <summary><b>コマンドライン引数で設定</b></summary>
194
+
195
+ コマンドライン引数は環境変数より優先されます。
196
+
197
+ ```bash
198
+ # 基本設定
199
+ npx @kajidog/mcp-tts-voicevox --url http://192.168.1.100:50021 --speaker 3 --speed 1.2
200
+
201
+ # HTTP モード
202
+ npx @kajidog/mcp-tts-voicevox --http --port 8080
203
+
204
+ # 制限付き
205
+ npx @kajidog/mcp-tts-voicevox --restrict-immediate --restrict-wait-for-end
206
+
207
+ # ツール無効化
208
+ npx @kajidog/mcp-tts-voicevox --disable-tools generate_query,synthesize_file
209
+ ```
210
+
211
+ | 引数 | 説明 |
212
+ |------|------|
213
+ | `--help`, `-h` | ヘルプを表示 |
214
+ | `--version`, `-v` | バージョンを表示 |
215
+ | `--url <value>` | VOICEVOX Engine URL |
216
+ | `--speaker <value>` | デフォルト話者 ID |
217
+ | `--speed <value>` | 再生速度 |
218
+ | `--use-streaming` / `--no-use-streaming` | ストリーミング再生 |
219
+ | `--immediate` / `--no-immediate` | 即時再生 |
220
+ | `--wait-for-start` / `--no-wait-for-start` | 再生開始待機 |
221
+ | `--wait-for-end` / `--no-wait-for-end` | 再生完了待機 |
222
+ | `--restrict-immediate` | immediate を制限 |
223
+ | `--restrict-wait-for-start` | waitForStart を制限 |
224
+ | `--restrict-wait-for-end` | waitForEnd を制限 |
225
+ | `--disable-tools <tools>` | ツールを無効化 |
226
+ | `--http` | HTTP モード |
227
+ | `--port <value>` | HTTP ポート |
228
+ | `--host <value>` | HTTP ホスト |
229
+ | `--allowed-hosts <hosts>` | 許可するホスト(カンマ区切り) |
230
+ | `--allowed-origins <origins>` | 許可するオリジン(カンマ区切り) |
231
+
232
+ </details>
233
+
234
+ <details>
235
+ <summary><b>HTTP モードで使う</b></summary>
236
+
237
+ リモート接続が必要な場合:
238
+
239
+ **サーバー起動:**
240
+
241
+ ```bash
242
+ # Linux/macOS
243
+ MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox
244
+
245
+ # Windows PowerShell
246
+ $env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox
247
+ ```
248
+
249
+ **Claude Desktop 設定(mcp-remote 使用):**
250
+
251
+ ```json
252
+ {
253
+ "mcpServers": {
254
+ "tts-mcp-proxy": {
255
+ "command": "npx",
256
+ "args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
257
+ }
258
+ }
259
+ }
260
+ ```
261
+
262
+ </details>
263
+
264
+ <details>
265
+ <summary><b>WSL から Windows ホストに接続</b></summary>
266
+
267
+ WSL 内から Windows で動作する MCP サーバーに接続する場合:
268
+
269
+ ### 1. WSL 側で Windows ホストの IP を確認
270
+
271
+ ```bash
272
+ # 方法1: デフォルトゲートウェイから取得
273
+ ip route show | grep -oP 'default via \K[\d.]+'
274
+ # 通常 172.x.x.1 の形式
275
+
276
+ # 方法2: /etc/resolv.conf から取得(WSL2)
277
+ cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
278
+ ```
279
+
280
+ ### 2. Windows 側でサーバー起動
281
+
282
+ WSL からのアクセスを許可するため、`MCP_ALLOWED_HOSTS` に WSL ゲートウェイ IP を追加:
283
+
284
+ ```powershell
285
+ $env:MCP_HTTP_MODE='true'
286
+ $env:MCP_ALLOWED_HOSTS='localhost,127.0.0.1,172.29.176.1'
287
+ npx @kajidog/mcp-tts-voicevox
288
+ ```
289
+
290
+ または CLI 引数で:
291
+
292
+ ```powershell
293
+ npx @kajidog/mcp-tts-voicevox --http --allowed-hosts "localhost,127.0.0.1,172.29.176.1"
294
+ ```
295
+
296
+ ### 3. WSL 側の設定(.mcp.json)
297
+
298
+ ```json
299
+ {
300
+ "mcpServers": {
301
+ "tts": {
302
+ "type": "http",
303
+ "url": "http://172.29.176.1:3000/mcp"
304
+ }
305
+ }
306
+ }
307
+ ```
308
+
309
+ > ⚠️ WSL 内では `localhost` は WSL 自身を指すため、Windows ホストには WSL ゲートウェイ IP でアクセスします。
310
+
311
+ </details>
312
+
313
+ ---
314
+
315
+ ## トラブルシューティング
316
+
317
+ <details>
318
+ <summary><b>音声が再生されない</b></summary>
319
+
320
+ **1. VOICEVOX Engine が起動しているか確認**
321
+
322
+ ```bash
323
+ curl http://localhost:50021/speakers
324
+ ```
325
+
326
+ **2. プラットフォーム別の再生ツールを確認**
327
+
328
+ | OS | 必要なツール |
329
+ |----|------------|
330
+ | Linux | `aplay`, `paplay`, `play`, `ffplay` のいずれか |
331
+ | macOS | `afplay`(プリインストール済み) |
332
+ | Windows | PowerShell(プリインストール済み) |
333
+
334
+ </details>
335
+
336
+ <details>
337
+ <summary><b>MCP クライアントに認識されない</b></summary>
338
+
339
+ - パッケージのインストール確認:`npm list -g @kajidog/mcp-tts-voicevox`
340
+ - 設定ファイルの JSON 構文をチェック
341
+ - クライアントを再起動
342
+
343
+ </details>
344
+
345
+ ---
346
+
347
+ ## パッケージ構成
348
+
349
+ | パッケージ | 説明 |
350
+ |-----------|------|
351
+ | `@kajidog/mcp-tts-voicevox` | MCP サーバー本体 |
352
+ | [`@kajidog/voicevox-client`](https://www.npmjs.com/package/@kajidog/voicevox-client) | 汎用 VOICEVOX クライアントライブラリ(独立使用可能) |
353
+
354
+ ---
355
+
356
+ <details>
357
+ <summary><b>開発者向け情報</b></summary>
358
+
359
+ ### セットアップ
360
+
361
+ ```bash
362
+ git clone https://github.com/kajidog/mcp-tts-voicevox.git
363
+ cd mcp-tts-voicevox
364
+ pnpm install
365
+ ```
366
+
367
+ ### コマンド
368
+
369
+ | コマンド | 説明 |
370
+ |---------|------|
371
+ | `pnpm build` | 全パッケージをビルド |
372
+ | `pnpm test` | テスト実行 |
373
+ | `pnpm lint` | Lint 実行 |
374
+ | `pnpm dev` | 開発サーバー起動 |
375
+ | `pnpm dev:stdio` | Stdio モードで開発 |
376
+
377
+ </details>
378
+
379
+ ---
380
+
381
+ ## ライセンス
382
+
383
+ ISC