verbalcoding 0.2.7 → 0.2.9

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.
Files changed (46) hide show
  1. package/README.md +12 -27
  2. package/app-node/cli_install.test.mjs +32 -0
  3. package/app-node/install_config.mjs +10 -0
  4. package/docs/FRESH_INSTALL.md +8 -2
  5. package/docs/assets/figures/verbalcoding-flow.svg +45 -30
  6. package/docs/i18n/CONFIGURATION.es.md +138 -49
  7. package/docs/i18n/CONFIGURATION.fr.md +138 -49
  8. package/docs/i18n/CONFIGURATION.ja.md +137 -48
  9. package/docs/i18n/CONFIGURATION.ko.md +137 -48
  10. package/docs/i18n/CONFIGURATION.ru.md +138 -49
  11. package/docs/i18n/CONFIGURATION.zh.md +137 -48
  12. package/docs/i18n/FRESH_INSTALL.es.md +115 -32
  13. package/docs/i18n/FRESH_INSTALL.fr.md +115 -32
  14. package/docs/i18n/FRESH_INSTALL.ja.md +119 -36
  15. package/docs/i18n/FRESH_INSTALL.ko.md +120 -37
  16. package/docs/i18n/FRESH_INSTALL.ru.md +115 -32
  17. package/docs/i18n/FRESH_INSTALL.zh.md +119 -36
  18. package/docs/i18n/MULTI_INSTANCE.es.md +85 -26
  19. package/docs/i18n/MULTI_INSTANCE.fr.md +85 -26
  20. package/docs/i18n/MULTI_INSTANCE.ja.md +87 -29
  21. package/docs/i18n/MULTI_INSTANCE.ko.md +87 -29
  22. package/docs/i18n/MULTI_INSTANCE.ru.md +84 -26
  23. package/docs/i18n/MULTI_INSTANCE.zh.md +87 -29
  24. package/docs/i18n/README.es.md +109 -45
  25. package/docs/i18n/README.fr.md +109 -45
  26. package/docs/i18n/README.ja.md +109 -45
  27. package/docs/i18n/README.ko.md +108 -45
  28. package/docs/i18n/README.ru.md +109 -45
  29. package/docs/i18n/README.zh.md +108 -45
  30. package/docs/i18n/RELEASE.es.md +53 -37
  31. package/docs/i18n/RELEASE.fr.md +53 -37
  32. package/docs/i18n/RELEASE.ja.md +52 -36
  33. package/docs/i18n/RELEASE.ko.md +52 -36
  34. package/docs/i18n/RELEASE.ru.md +53 -37
  35. package/docs/i18n/RELEASE.zh.md +53 -37
  36. package/docs/i18n/USAGE.es.md +91 -64
  37. package/docs/i18n/USAGE.fr.md +91 -64
  38. package/docs/i18n/USAGE.ja.md +90 -63
  39. package/docs/i18n/USAGE.ko.md +90 -63
  40. package/docs/i18n/USAGE.ru.md +91 -64
  41. package/docs/i18n/USAGE.zh.md +90 -63
  42. package/package.json +1 -1
  43. package/scripts/bootstrap_prereqs.sh +15 -3
  44. package/scripts/cli.mjs +1 -1
  45. package/scripts/doctor.mjs +173 -8
  46. package/scripts/install.mjs +2 -0
@@ -1,36 +1,40 @@
1
- # VerbalCoding Configuration
1
+ # Configuration de VerbalCoding
2
2
 
3
- ## Setup Wizard
3
+ ## Assistant de configuration
4
4
 
5
- Use upstream Discord-side guides first, then return to VerbalCoding:
5
+ La configuration du bot/de l'application Discord n'est volontairement pas réexpliquée depuis zéro ici. Utilisez ces guides amont pour les étapes côté Discord, puis revenez à la configuration de VerbalCoding :
6
6
 
7
- - Hermes Agent Discord messaging guide: <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
8
- - Discord official bot overview: <https://docs.discord.com/developers/bots/overview>
9
- - Discord official quick start: <https://docs.discord.com/developers/quick-start/getting-started>
7
+ - Guide de messagerie Discord de Hermes Agent : <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
8
+ - Vue d'ensemble officielle des bots Discord : <https://docs.discord.com/developers/bots/overview>
9
+ - Démarrage rapide officiel Discord : <https://docs.discord.com/developers/quick-start/getting-started>
10
10
 
11
11
  ```bash
12
- vc setup --yes
13
- # or from a clone
14
12
  ./scripts/install.sh
15
13
  ```
16
14
 
17
- The installer asks for the Discord token, allowed users, auto-join voice channel names, transcript channel/thread, CLI harness backend, default voice language, TTS settings, and wake-word behavior. It writes `.env` with mode `0600`.
15
+ L'installateur demande le jeton Discord, les utilisateurs autorisés, les noms de salons vocaux à rejoindre automatiquement, le salon/fil de transcription, le backend de harnais CLI, la langue vocale par défaut, les paramètres TTS et le comportement du mot de réveil. Il écrit `.env` avec le mode `0600` ; `.env` est ignoré par git. Il lie aussi la commande shell courte `vc`.
18
16
 
19
- ## Supported Agent Backends
17
+ Si vous avez seulement besoin de la commande shell après une installation manuelle :
20
18
 
21
- Set `AGENT_BACKEND` in `.env`.
19
+ ```bash
20
+ npm link
21
+ ```
22
+
23
+ ## Backends d'agents pris en charge
22
24
 
23
- | Backend | Default command | Notes |
25
+ Définissez `AGENT_BACKEND` dans `.env`.
26
+
27
+ | Backend | Commande par défaut | Notes |
24
28
  |---|---|---|
25
- | `hermes` | `hermes chat -Q -q` | Default; supports resume and verbose progress |
26
- | `claude-code` / `claude` | `claude -p` | Override with `CLAUDE_COMMAND` or `AGENT_COMMAND` |
27
- | `codex` | `codex exec` | Override with `CODEX_COMMAND` or `AGENT_COMMAND` |
28
- | `gemini` | `gemini -p` | Override with `GEMINI_COMMAND` or `AGENT_COMMAND` |
29
- | `opencode` | `opencode run` | Override with `OPENCODE_COMMAND` or `AGENT_COMMAND` |
30
- | `openclaw` | `openclaw run` | Override with `OPENCLAW_COMMAND` or `AGENT_COMMAND` |
31
- | `custom` | `AGENT_COMMAND` required | Prompt is appended as final argv |
29
+ | `hermes` | `hermes chat -Q -q` | Par défaut. Préserve le comportement de reprise `.verbalcoding-session`. |
30
+ | `claude-code` / `claude` | `claude -p` | Remplacer avec `CLAUDE_COMMAND` ou `AGENT_COMMAND`. |
31
+ | `codex` | `codex exec` | Remplacer avec `CODEX_COMMAND` ou `AGENT_COMMAND`. |
32
+ | `gemini` | `gemini -p` | Remplacer avec `GEMINI_COMMAND` ou `AGENT_COMMAND`. |
33
+ | `opencode` | `opencode run` | Remplacer avec `OPENCODE_COMMAND` ou `AGENT_COMMAND`. |
34
+ | `openclaw` | `openclaw run` | Remplacer avec `OPENCLAW_COMMAND` ou `AGENT_COMMAND`. |
35
+ | `custom` | `AGENT_COMMAND` requis | Le prompt est ajouté comme dernier argument argv. |
32
36
 
33
- Generic overrides:
37
+ Remplacements génériques :
34
38
 
35
39
  ```bash
36
40
  AGENT_BACKEND=custom
@@ -43,23 +47,37 @@ UTTERANCE_IDLE_MS=4500
43
47
  LATENCY_LOG_PATH=./.logs/latency.jsonl
44
48
  ```
45
49
 
46
- ## Example `.env`
50
+ ## Contrat des adaptateurs d'agent
51
+
52
+ La passerelle vocale parle à chaque backend via un seul contrat d'adaptateur :
53
+
54
+ - `run({ text }, signal, plan)` renvoie le statut, le texte de réponse finale, le libellé du backend, le temps écoulé et des métadonnées de session facultatives.
55
+ - `ask(text, signal, plan)` est le raccourci de compatibilité qui renvoie seulement le texte de réponse finale.
56
+ - `capabilities` déclare si le backend prend en charge la reprise de session, la progression en streaming et l'annulation.
57
+ - Hermes est l'adaptateur de référence : reprise, streaming de progression détaillée, annulation et récupération de la réponse finale depuis les fichiers de session Hermes.
58
+
59
+ Les nouveaux backends doivent implémenter le même contrat et garder le comportement voix/STT/TTS hors de l'adaptateur.
60
+
61
+ ## Exemple `.env`
47
62
 
48
63
  ```bash
49
64
  DISCORD_BOT_TOKEN="***"
50
65
  DISCORD_ALLOWED_USERS="123456789012345678"
51
66
  AUTO_JOIN_VOICE_CHANNELS="일반,General,general"
52
67
  TRANSCRIPT_CHANNEL_ID="123456789012345678"
68
+
53
69
  AGENT_BACKEND="hermes"
54
70
  STT_ENGINE="whisper_cpp"
55
71
  WHISPER_CPP_BIN="whisper-cli"
56
72
  WHISPER_CPP_MODEL="./models/ggml-small-q5_1.bin"
73
+
57
74
  TTS_BACKEND="edge"
58
75
  TTS_VOICE_TYPE="korean_female"
59
76
  TTS_VOICE="ko-KR-SunHiNeural"
60
77
  TTS_RATE="+10%"
61
78
  TTS_MAX_CHARS="495"
62
79
  TTS_VOLUME="1.0"
80
+
63
81
  REQUIRE_WAKE_WORD="0"
64
82
  MIN_UTTERANCE_SECONDS="1.0"
65
83
  UTTERANCE_IDLE_MS="4500"
@@ -69,39 +87,60 @@ AGENT_VERBOSE_PROGRESS="0"
69
87
  LATENCY_LOG_PATH="./.logs/latency.jsonl"
70
88
  ```
71
89
 
72
- ## TTS Voice Selection
90
+ ## Sélection de la voix TTS
91
+
92
+ Les préréglages de langue et la sélection de voix sont séparés :
73
93
 
74
- `vc language ko|en|auto` changes STT language, progress language, and default TTS voice. Live commands such as “남자 한국어 목소리로 바꿔”, “여자 한국어 목소리로 바꿔”, `change voice to Korean female`, and `switch speaker to English` change only the speaker/voice type.
94
+ - `vc language ko|en|auto` change la langue STT, la langue de progression et la voix par défaut pour cette langue.
95
+ - Les commandes vocales en direct comme “남자 한국어 목소리로 바꿔”, “여자 한국어 목소리로 바꿔”, `change voice to Korean female` et `switch speaker to English` ne changent que le locuteur/type de voix.
96
+ - `!voice-test <text>` joue un court échantillon avec le backend et la voix actuellement sélectionnés.
75
97
 
76
- Default Edge catalog:
98
+ La sélection de voix est stockée par défaut dans `config/tts-voices.json`. Remplacez le chemin avec `TTS_VOICE_CONFIG`. La passerelle en cours d'exécution relit/applique la sélection de voix avant la synthèse, donc les commandes vocales prennent effet sans redémarrage complet.
77
99
 
78
- | `TTS_VOICE_TYPE` | `TTS_VOICE` | Language |
100
+ Catalogue Edge par défaut :
101
+
102
+ | `TTS_VOICE_TYPE` | `TTS_VOICE` | Langue |
79
103
  |---|---|---|
80
- | `korean_male` | `ko-KR-InJoonNeural` | Korean |
81
- | `korean_female` | `ko-KR-SunHiNeural` | Korean |
82
- | `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` | Korean |
83
- | `english_male` | `en-US-GuyNeural` | English |
84
- | `english_female` | `en-US-AriaNeural` | English |
104
+ | `korean_male` | `ko-KR-InJoonNeural` | Coréen |
105
+ | `korean_female` | `ko-KR-SunHiNeural` | Coréen |
106
+ | `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` | Coréen |
107
+ | `english_male` | `en-US-GuyNeural` | Anglais |
108
+ | `english_female` | `en-US-AriaNeural` | Anglais |
109
+
110
+ Remplacement manuel persistant :
111
+
112
+ ```bash
113
+ TTS_BACKEND="edge"
114
+ TTS_VOICE_TYPE="korean_male"
115
+ TTS_VOICE="ko-KR-InJoonNeural"
116
+ TTS_VOICE_CONFIG="config/tts-voices.json"
117
+ ```
85
118
 
86
- Backend-specific voice options:
119
+ Pour OpenVoice, SpeechSwift ou Supertonic, conservez les paramètres de voix/référence propres au backend dans les sections ci-dessous ; le même fichier de catalogue de voix peut tout de même suivre le type de voix actif.
87
120
 
88
- | Backend | Settings | Voice choices |
121
+ Options vocales propres au backend :
122
+
123
+ | Backend | Paramètres | Choix de voix |
89
124
  |---|---|---|
90
- | Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | Built-in types plus any `edge-tts --list-voices` voice |
91
- | Supertonic | `SUPERTONIC_VOICE`, `SUPERTONIC_LANGUAGE` | `M1`–`M5`, `F1`–`F5`; `ko`, `en`, `es`, `pt`, `fr` |
92
- | OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE`, `OPENVOICE_LANGUAGE` | User-provided permitted reference WAV |
93
- | SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER`, `SPEECHSWIFT_MODEL_ID` | Reference-sample voice or backend speaker/model ID |
125
+ | Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | Types intégrés ci-dessus, plus toute voix renvoyée par `edge-tts --list-voices` |
126
+ | Supertonic | `SUPERTONIC_VOICE`, `SUPERTONIC_LANGUAGE` | `M1`–`M5`, `F1`–`F5` ; langue `ko`, `en`, `es`, `pt`, `fr` |
127
+ | OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE`, `OPENVOICE_LANGUAGE` | WAV de référence autorisé fourni par l'utilisateur ; style par défaut `default` |
128
+ | SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER`, `SPEECHSWIFT_MODEL_ID` | Voix par échantillon de référence pour CosyVoice, ou IDs locuteur/modèle pris en charge par le backend |
94
129
 
95
- ## Utterance Segmentation
130
+ ## Segmentation des énonciations
96
131
 
97
- `UTTERANCE_IDLE_MS` controls how long the bridge waits after speech before starting STT. Default is `4500` ms.
132
+ `UTTERANCE_IDLE_MS` contrôle combien de temps la passerelle attend après un segment de parole avant de décider que l'utilisateur a terminé et de démarrer le STT. La valeur par défaut est `4500` ms afin de préserver les longues instructions parlées avec pauses naturelles. Les valeurs plus basses semblent plus rapides pour les commandes courtes mais peuvent couper une longue dictée ; les valeurs plus hautes sont plus sûres pour une parole réfléchie.
98
133
 
99
134
  ```bash
100
- UTTERANCE_IDLE_MS="4500"
101
- UTTERANCE_IDLE_MS="6000"
135
+ UTTERANCE_IDLE_MS="4500" # balanced default
136
+ UTTERANCE_IDLE_MS="6000" # safer for long dictation with pauses
102
137
  ```
103
138
 
104
- ## MCP Server
139
+ ## Serveur MCP
140
+
141
+ VerbalCoding fournit un serveur MCP stdio afin que Hermes Agent ou tout client MCP puisse contrôler la passerelle via des outils au lieu de s'appuyer sur des skills ou des commandes shell libres.
142
+
143
+ Exemple de configuration Hermes :
105
144
 
106
145
  ```yaml
107
146
  mcp_servers:
@@ -112,39 +151,89 @@ mcp_servers:
112
151
  connect_timeout: 30
113
152
  ```
114
153
 
115
- Tools: `status`, `doctor`, `set_auto_restart`, `set_language`, `start`, `stop`, and `restart`.
154
+ Outils MCP exposés :
155
+
156
+ | Outil | Objectif |
157
+ |---|---|
158
+ | `status` | Signaler l'état passerelle/config sans secrets |
159
+ | `doctor` | Exécuter le contrôle doctor expurgé |
160
+ | `set_auto_restart` | Activer/désactiver le redémarrage automatique du bot vocal au moment des commits |
161
+ | `set_language` | Mettre à jour ensemble les langues STT/progression/TTS |
162
+ | `start`, `stop`, `restart` | Contrôler la passerelle vocale Discord |
116
163
 
117
- ## Optional OpenVoice TTS
164
+ ## TTS OpenVoice facultatif
165
+
166
+ Edge TTS reste la valeur par défaut et le fallback. Pour essayer le clonage vocal local avec OpenVoice V2 :
118
167
 
119
168
  ```bash
120
169
  ./scripts/setup_openvoice.sh
170
+ # Download checkpoints_v2_0417.zip from OpenVoice docs and extract under vendor/OpenVoice/checkpoints_v2/
171
+ mkdir -p voice-samples
172
+ # Put a permitted reference sample at voice-samples/user-reference.wav,
173
+ # or capture one from Discord with !voice-clone capture.
121
174
  python3 integrations/openvoice/synth.py --openvoice-dir vendor/OpenVoice --ref-audio voice-samples/user-reference.wav --text '안녕하세요. 버벌코딩 목소리 복제 테스트입니다.' --output /tmp/verbalcoding-openvoice-smoke.wav
122
175
  ```
123
176
 
177
+ Définissez ensuite :
178
+
124
179
  ```bash
125
180
  TTS_BACKEND="openvoice"
126
181
  OPENVOICE_REF_AUDIO="./voice-samples/user-reference.wav"
127
182
  OPENVOICE_PROGRESS="0"
128
183
  ```
129
184
 
130
- Only clone voices you own or have permission to use. OpenVoice falls back to Edge on failure.
185
+ Clonez uniquement des voix que vous possédez ou que vous avez l'autorisation d'utiliser. Si OpenVoice échoue ou expire, VerbalCoding revient à Edge TTS.
131
186
 
132
- ## Optional Supertonic TTS
187
+ ## TTS Supertonic facultatif
133
188
 
134
189
  ```bash
135
190
  ./scripts/setup_supertonic.sh
136
191
  supertonic tts '안녕하세요. 수퍼토닉 테스트입니다.' --lang ko --voice M1 --steps 2 --speed 1.0 -o /tmp/verbalcoding-supertonic.wav
137
192
  ```
138
193
 
139
- ## Optional SpeechSwift / CosyVoice TTS
194
+ Définissez ensuite :
195
+
196
+ ```bash
197
+ TTS_BACKEND="supertonic"
198
+ SUPERTONIC_COMMAND="./.venv-supertonic/bin/supertonic"
199
+ SUPERTONIC_VOICE="M1"
200
+ SUPERTONIC_LANGUAGE="ko"
201
+ SUPERTONIC_STEPS="2"
202
+ SUPERTONIC_SPEED="1.0"
203
+ SUPERTONIC_PROGRESS="0"
204
+ ```
205
+
206
+ Si Supertonic est absent, échoue ou expire, VerbalCoding revient à Edge TTS.
207
+
208
+ ## TTS SpeechSwift / CosyVoice facultatif
209
+
210
+ Sur Apple Silicon, `speech-swift` est un backend local de clonage vocal coréen avec CosyVoice/Qwen3-TTS natif MLX.
140
211
 
141
212
  ```bash
142
213
  brew tap soniqo/speech https://github.com/soniqo/speech-swift
143
214
  brew install speech
144
215
  ```
145
216
 
146
- Recommended env includes `TTS_BACKEND="speechswift"`, `SPEECHSWIFT_MODE="server"`, `SPEECHSWIFT_ENGINE="cosyvoice"`, `SPEECHSWIFT_REF_AUDIO`, and `SPEECHSWIFT_SERVER_URL`. Keep Edge for quick progress prompts.
217
+ Env recommandé :
218
+
219
+ ```bash
220
+ TTS_BACKEND="speechswift"
221
+ SPEECHSWIFT_MODE="server"
222
+ SPEECHSWIFT_ENGINE="cosyvoice"
223
+ SPEECHSWIFT_LANGUAGE="korean"
224
+ SPEECHSWIFT_REF_AUDIO="./voice-samples/user-reference.wav"
225
+ SPEECHSWIFT_SERVER_HOST="127.0.0.1"
226
+ SPEECHSWIFT_SERVER_PORT="18080"
227
+ SPEECHSWIFT_SERVER_URL="http://127.0.0.1:18080"
228
+ SPEECHSWIFT_PROGRESS="0"
229
+ ```
230
+
231
+ Gardez Edge pour les prompts rapides de progression/backchannel.
147
232
 
148
- ## Operational Notes
233
+ ## Notes d'exploitation
149
234
 
150
- Enable Discord Message Content intent, grant voice connect/speak permissions, authenticate the selected CLI harness separately, and avoid reading diffs/log dumps aloud.
235
+ - Le bot a besoin de l'intent privilégié Discord Message Content activé pour les commandes texte.
236
+ - Le bot a besoin des permissions de connexion/parole dans le salon vocal.
237
+ - Pour Hermes Agent, configurez/authentifiez Hermes normalement (`hermes setup`, `hermes login`, etc.) sur votre profil par défaut.
238
+ - Pour Claude Code, Codex, Gemini, OpenCode, OpenClaw, installez et authentifiez ces CLI séparément.
239
+ - Si une CLI émet une sortie diff/code lors d'un timeout ou d'un échec de signal, la passerelle évite de la lire à voix haute et envoie plutôt le texte détaillé.
@@ -1,36 +1,40 @@
1
1
  # VerbalCoding 設定
2
2
 
3
- ## Setup Wizard
3
+ ## セットアップウィザード
4
4
 
5
- Use upstream Discord-side guides first, then return to VerbalCoding:
5
+ Discord ボット/アプリケーションのセットアップ手順は、ここでは最初から説明し直しません。Discord 側の手順には次の上流ガイドを使い、その後 VerbalCoding のセットアップに戻ってください:
6
6
 
7
- - Hermes Agent Discord messaging guide: <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
8
- - Discord official bot overview: <https://docs.discord.com/developers/bots/overview>
9
- - Discord official quick start: <https://docs.discord.com/developers/quick-start/getting-started>
7
+ - Hermes Agent Discord メッセージングガイド: <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
8
+ - Discord 公式ボット概要: <https://docs.discord.com/developers/bots/overview>
9
+ - Discord 公式クイックスタート: <https://docs.discord.com/developers/quick-start/getting-started>
10
10
 
11
11
  ```bash
12
- vc setup --yes
13
- # or from a clone
14
12
  ./scripts/install.sh
15
13
  ```
16
14
 
17
- The installer asks for the Discord token, allowed users, auto-join voice channel names, transcript channel/thread, CLI harness backend, default voice language, TTS settings, and wake-word behavior. It writes `.env` with mode `0600`.
15
+ インストーラーは、Discord トークン、許可ユーザー、自動参加する音声チャンネル名、文字起こし先チャンネル/スレッド、CLI ハーネスバックエンド、デフォルト音声言語、TTS 設定、ウェイクワード動作を尋ねます。モード `0600` `.env` を書き込みます。`.env` git で無視されます。また、短いシェルコマンド `vc` もリンクします。
18
16
 
19
- ## Supported Agent Backends
17
+ 手動インストール後にシェルコマンドだけが必要な場合:
20
18
 
21
- Set `AGENT_BACKEND` in `.env`.
19
+ ```bash
20
+ npm link
21
+ ```
22
+
23
+ ## 対応エージェントバックエンド
22
24
 
23
- | Backend | Default command | Notes |
25
+ `.env` `AGENT_BACKEND` を設定します。
26
+
27
+ | バックエンド | デフォルトコマンド | メモ |
24
28
  |---|---|---|
25
- | `hermes` | `hermes chat -Q -q` | Default; supports resume and verbose progress |
26
- | `claude-code` / `claude` | `claude -p` | Override with `CLAUDE_COMMAND` or `AGENT_COMMAND` |
27
- | `codex` | `codex exec` | Override with `CODEX_COMMAND` or `AGENT_COMMAND` |
28
- | `gemini` | `gemini -p` | Override with `GEMINI_COMMAND` or `AGENT_COMMAND` |
29
- | `opencode` | `opencode run` | Override with `OPENCODE_COMMAND` or `AGENT_COMMAND` |
30
- | `openclaw` | `openclaw run` | Override with `OPENCLAW_COMMAND` or `AGENT_COMMAND` |
31
- | `custom` | `AGENT_COMMAND` required | Prompt is appended as final argv |
29
+ | `hermes` | `hermes chat -Q -q` | デフォルト。`.verbalcoding-session` の再開動作を保持します。 |
30
+ | `claude-code` / `claude` | `claude -p` | `CLAUDE_COMMAND` または `AGENT_COMMAND` で上書きします。 |
31
+ | `codex` | `codex exec` | `CODEX_COMMAND` または `AGENT_COMMAND` で上書きします。 |
32
+ | `gemini` | `gemini -p` | `GEMINI_COMMAND` または `AGENT_COMMAND` で上書きします。 |
33
+ | `opencode` | `opencode run` | `OPENCODE_COMMAND` または `AGENT_COMMAND` で上書きします。 |
34
+ | `openclaw` | `openclaw run` | `OPENCLAW_COMMAND` または `AGENT_COMMAND` で上書きします。 |
35
+ | `custom` | 必須の `AGENT_COMMAND` | プロンプトは最後の argv 引数として追加されます。 |
32
36
 
33
- Generic overrides:
37
+ 汎用の上書き設定:
34
38
 
35
39
  ```bash
36
40
  AGENT_BACKEND=custom
@@ -43,23 +47,37 @@ UTTERANCE_IDLE_MS=4500
43
47
  LATENCY_LOG_PATH=./.logs/latency.jsonl
44
48
  ```
45
49
 
46
- ## Example `.env`
50
+ ## エージェントアダプター契約
51
+
52
+ 音声ブリッジは、すべてのバックエンドと 1 つのアダプター契約を通じてやり取りします:
53
+
54
+ - `run({ text }, signal, plan)` はステータス、最終回答テキスト、バックエンドラベル、経過時間、任意のセッションメタデータを返します。
55
+ - `ask(text, signal, plan)` は互換性用のショートカットで、最終回答テキストだけを返します。
56
+ - `capabilities` は、バックエンドがセッション再開、ストリーミング進捗、キャンセルをサポートするかを宣言します。
57
+ - Hermes は参照アダプターです。再開、詳細進捗ストリーミング、キャンセル、Hermes セッションファイルからの最終回答復元に対応します。
58
+
59
+ 新しいバックエンドは同じ契約を実装し、音声/STT/TTS の動作はアダプター外に保つべきです。
60
+
61
+ ## `.env` の例
47
62
 
48
63
  ```bash
49
64
  DISCORD_BOT_TOKEN="***"
50
65
  DISCORD_ALLOWED_USERS="123456789012345678"
51
66
  AUTO_JOIN_VOICE_CHANNELS="일반,General,general"
52
67
  TRANSCRIPT_CHANNEL_ID="123456789012345678"
68
+
53
69
  AGENT_BACKEND="hermes"
54
70
  STT_ENGINE="whisper_cpp"
55
71
  WHISPER_CPP_BIN="whisper-cli"
56
72
  WHISPER_CPP_MODEL="./models/ggml-small-q5_1.bin"
73
+
57
74
  TTS_BACKEND="edge"
58
75
  TTS_VOICE_TYPE="korean_female"
59
76
  TTS_VOICE="ko-KR-SunHiNeural"
60
77
  TTS_RATE="+10%"
61
78
  TTS_MAX_CHARS="495"
62
79
  TTS_VOLUME="1.0"
80
+
63
81
  REQUIRE_WAKE_WORD="0"
64
82
  MIN_UTTERANCE_SECONDS="1.0"
65
83
  UTTERANCE_IDLE_MS="4500"
@@ -69,39 +87,60 @@ AGENT_VERBOSE_PROGRESS="0"
69
87
  LATENCY_LOG_PATH="./.logs/latency.jsonl"
70
88
  ```
71
89
 
72
- ## TTS Voice Selection
90
+ ## TTS 音声選択
91
+
92
+ 言語プリセットと音声選択は別のものです:
73
93
 
74
- `vc language ko|en|auto` changes STT language, progress language, and default TTS voice. Live commands such as “남자 한국어 목소리로 바꿔”, “여자 한국어 목소리로 바꿔”, `change voice to Korean female`, and `switch speaker to English` change only the speaker/voice type.
94
+ - `vc language ko|en|auto` STT 言語、進捗言語、その言語のデフォルト音声を変更します。
95
+ - 「남자 한국어 목소리로 바꿔」「여자 한국어 목소리로 바꿔」、`change voice to Korean female`、`switch speaker to English` などのライブ音声コマンドは、話者/音声タイプだけを変更します。
96
+ - `!voice-test <text>` は、現在選択されているバックエンドと音声で短いサンプルを再生します。
75
97
 
76
- Default Edge catalog:
98
+ 音声選択はデフォルトで `config/tts-voices.json` に保存されます。パスは `TTS_VOICE_CONFIG` で上書きできます。実行中のブリッジは合成前に音声選択を再読み込み/適用するため、音声コマンドは完全な再起動なしで反映されます。
77
99
 
78
- | `TTS_VOICE_TYPE` | `TTS_VOICE` | Language |
100
+ デフォルト Edge カタログ:
101
+
102
+ | `TTS_VOICE_TYPE` | `TTS_VOICE` | 言語 |
79
103
  |---|---|---|
80
- | `korean_male` | `ko-KR-InJoonNeural` | Korean |
81
- | `korean_female` | `ko-KR-SunHiNeural` | Korean |
82
- | `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` | Korean |
83
- | `english_male` | `en-US-GuyNeural` | English |
84
- | `english_female` | `en-US-AriaNeural` | English |
104
+ | `korean_male` | `ko-KR-InJoonNeural` | 韓国語 |
105
+ | `korean_female` | `ko-KR-SunHiNeural` | 韓国語 |
106
+ | `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` | 韓国語 |
107
+ | `english_male` | `en-US-GuyNeural` | 英語 |
108
+ | `english_female` | `en-US-AriaNeural` | 英語 |
109
+
110
+ 永続的な手動上書き:
111
+
112
+ ```bash
113
+ TTS_BACKEND="edge"
114
+ TTS_VOICE_TYPE="korean_male"
115
+ TTS_VOICE="ko-KR-InJoonNeural"
116
+ TTS_VOICE_CONFIG="config/tts-voices.json"
117
+ ```
85
118
 
86
- Backend-specific voice options:
119
+ OpenVoice、SpeechSwift、Supertonic では、下のセクションにあるバックエンド固有の音声/参照設定を維持してください。同じ音声カタログファイルで有効な音声タイプを追跡することは可能です。
87
120
 
88
- | Backend | Settings | Voice choices |
121
+ バックエンド固有の音声オプション:
122
+
123
+ | バックエンド | 設定 | 音声の選択肢 |
89
124
  |---|---|---|
90
- | Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | Built-in types plus any `edge-tts --list-voices` voice |
91
- | Supertonic | `SUPERTONIC_VOICE`, `SUPERTONIC_LANGUAGE` | `M1`–`M5`, `F1`–`F5`; `ko`, `en`, `es`, `pt`, `fr` |
92
- | OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE`, `OPENVOICE_LANGUAGE` | User-provided permitted reference WAV |
93
- | SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER`, `SPEECHSWIFT_MODEL_ID` | Reference-sample voice or backend speaker/model ID |
125
+ | Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | 上記の組み込みタイプに加え、`edge-tts --list-voices` が返す任意の音声 |
126
+ | Supertonic | `SUPERTONIC_VOICE`, `SUPERTONIC_LANGUAGE` | `M1`〜`M5`、`F1`〜`F5`。言語は `ko`、`en`、`es`、`pt`、`fr` |
127
+ | OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE`, `OPENVOICE_LANGUAGE` | ユーザーが提供する許可済み参照 WAV。スタイルのデフォルトは `default` |
128
+ | SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER`, `SPEECHSWIFT_MODEL_ID` | CosyVoice 用の参照サンプル音声、またはバックエンド対応の話者/モデル ID |
94
129
 
95
- ## Utterance Segmentation
130
+ ## 発話の分割
96
131
 
97
- `UTTERANCE_IDLE_MS` controls how long the bridge waits after speech before starting STT. Default is `4500` ms.
132
+ `UTTERANCE_IDLE_MS` は、音声セグメント後に、ブリッジがユーザーの発話完了を判断して STT を開始するまで待つ時間を制御します。デフォルトは `4500` ms で、自然な間を含む長めの音声指示を保つためです。値を小さくすると短いコマンドでは速く感じますが、長いディクテーションを分割することがあります。大きい値は、考えながら話す場合により安全です。
98
133
 
99
134
  ```bash
100
- UTTERANCE_IDLE_MS="4500"
101
- UTTERANCE_IDLE_MS="6000"
135
+ UTTERANCE_IDLE_MS="4500" # バランスのよいデフォルト
136
+ UTTERANCE_IDLE_MS="6000" # ポーズを含む長いディクテーションでより安全
102
137
  ```
103
138
 
104
- ## MCP Server
139
+ ## MCP サーバー
140
+
141
+ VerbalCoding には stdio MCP サーバーが付属しており、Hermes Agent または任意の MCP クライアントは、スキルや自由形式のシェルコマンドに頼らず、ツール経由でブリッジを制御できます。
142
+
143
+ Hermes 設定例:
105
144
 
106
145
  ```yaml
107
146
  mcp_servers:
@@ -112,39 +151,89 @@ mcp_servers:
112
151
  connect_timeout: 30
113
152
  ```
114
153
 
115
- Tools: `status`, `doctor`, `set_auto_restart`, `set_language`, `start`, `stop`, and `restart`.
154
+ 公開される MCP ツール:
155
+
156
+ | ツール | 目的 |
157
+ |---|---|
158
+ | `status` | 秘密情報を出さずにブリッジ/設定状態を報告 |
159
+ | `doctor` | 秘密情報を伏せた doctor チェックを実行 |
160
+ | `set_auto_restart` | コミット時の音声ボット自動再起動を有効/無効化 |
161
+ | `set_language` | STT/進捗/TTS 言語をまとめて更新 |
162
+ | `start`, `stop`, `restart` | Discord 音声ブリッジを制御 |
116
163
 
117
- ## Optional OpenVoice TTS
164
+ ## 任意の OpenVoice TTS
165
+
166
+ Edge TTS がデフォルトかつフォールバックです。OpenVoice V2 によるローカル音声クローンを試すには:
118
167
 
119
168
  ```bash
120
169
  ./scripts/setup_openvoice.sh
170
+ # OpenVoice docs から checkpoints_v2_0417.zip をダウンロードし、vendor/OpenVoice/checkpoints_v2/ の下に展開します
171
+ mkdir -p voice-samples
172
+ # 許可済み参照サンプルを voice-samples/user-reference.wav に置くか、
173
+ # Discord で !voice-clone capture を使ってキャプチャします。
121
174
  python3 integrations/openvoice/synth.py --openvoice-dir vendor/OpenVoice --ref-audio voice-samples/user-reference.wav --text '안녕하세요. 버벌코딩 목소리 복제 테스트입니다.' --output /tmp/verbalcoding-openvoice-smoke.wav
122
175
  ```
123
176
 
177
+ 次を設定します:
178
+
124
179
  ```bash
125
180
  TTS_BACKEND="openvoice"
126
181
  OPENVOICE_REF_AUDIO="./voice-samples/user-reference.wav"
127
182
  OPENVOICE_PROGRESS="0"
128
183
  ```
129
184
 
130
- Only clone voices you own or have permission to use. OpenVoice falls back to Edge on failure.
185
+ 自分が所有している、または使用許可を得ている音声だけをクローンしてください。OpenVoice が失敗またはタイムアウトした場合、VerbalCoding Edge TTS にフォールバックします。
131
186
 
132
- ## Optional Supertonic TTS
187
+ ## 任意の Supertonic TTS
133
188
 
134
189
  ```bash
135
190
  ./scripts/setup_supertonic.sh
136
191
  supertonic tts '안녕하세요. 수퍼토닉 테스트입니다.' --lang ko --voice M1 --steps 2 --speed 1.0 -o /tmp/verbalcoding-supertonic.wav
137
192
  ```
138
193
 
139
- ## Optional SpeechSwift / CosyVoice TTS
194
+ 次を設定します:
195
+
196
+ ```bash
197
+ TTS_BACKEND="supertonic"
198
+ SUPERTONIC_COMMAND="./.venv-supertonic/bin/supertonic"
199
+ SUPERTONIC_VOICE="M1"
200
+ SUPERTONIC_LANGUAGE="ko"
201
+ SUPERTONIC_STEPS="2"
202
+ SUPERTONIC_SPEED="1.0"
203
+ SUPERTONIC_PROGRESS="0"
204
+ ```
205
+
206
+ Supertonic がない、失敗する、またはタイムアウトする場合、VerbalCoding は Edge TTS にフォールバックします。
207
+
208
+ ## 任意の SpeechSwift / CosyVoice TTS
209
+
210
+ Apple Silicon では、`speech-swift` は MLX ネイティブの CosyVoice/Qwen3-TTS を使った韓国語音声クローン用ローカルバックエンドです。
140
211
 
141
212
  ```bash
142
213
  brew tap soniqo/speech https://github.com/soniqo/speech-swift
143
214
  brew install speech
144
215
  ```
145
216
 
146
- Recommended env includes `TTS_BACKEND="speechswift"`, `SPEECHSWIFT_MODE="server"`, `SPEECHSWIFT_ENGINE="cosyvoice"`, `SPEECHSWIFT_REF_AUDIO`, and `SPEECHSWIFT_SERVER_URL`. Keep Edge for quick progress prompts.
217
+ 推奨 env:
218
+
219
+ ```bash
220
+ TTS_BACKEND="speechswift"
221
+ SPEECHSWIFT_MODE="server"
222
+ SPEECHSWIFT_ENGINE="cosyvoice"
223
+ SPEECHSWIFT_LANGUAGE="korean"
224
+ SPEECHSWIFT_REF_AUDIO="./voice-samples/user-reference.wav"
225
+ SPEECHSWIFT_SERVER_HOST="127.0.0.1"
226
+ SPEECHSWIFT_SERVER_PORT="18080"
227
+ SPEECHSWIFT_SERVER_URL="http://127.0.0.1:18080"
228
+ SPEECHSWIFT_PROGRESS="0"
229
+ ```
230
+
231
+ 短い進捗/相づちプロンプトには Edge を維持してください。
147
232
 
148
- ## Operational Notes
233
+ ## 運用メモ
149
234
 
150
- Enable Discord Message Content intent, grant voice connect/speak permissions, authenticate the selected CLI harness separately, and avoid reading diffs/log dumps aloud.
235
+ - テキストコマンドには、Discord の特権 Message Content intent をボットで有効にする必要があります。
236
+ - ボットには音声チャンネルへの接続/発話権限が必要です。
237
+ - Hermes Agent では、デフォルトプロファイルで通常どおり Hermes を設定/認証してください(`hermes setup`、`hermes login` など)。
238
+ - Claude Code、Codex、Gemini、OpenCode、OpenClaw では、それぞれの CLI を別途インストールして認証してください。
239
+ - CLI がタイムアウトやシグナル失敗時に diff/code 出力を出した場合、ブリッジはそれを読み上げず、詳細テキストとして送信します。