Skip to content

Commit 953d1f5

Browse files
hiroki-abe-58jasagiri
authored andcommitted
docs: Add comprehensive technical details and troubleshooting
1 parent 47daf91 commit 953d1f5

1 file changed

Lines changed: 93 additions & 24 deletions

File tree

README.md

Lines changed: 93 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,50 +11,79 @@
1111
元のCosyVoiceは **Linux専用** として開発されており、Windowsでの動作は公式にサポートされていませんでした。
1212
本フォークは、複数のWindows固有の問題を解決し、**Windowsネイティブ環境での完全動作** を実現しました。
1313

14-
### 解決した技術的課題
14+
---
15+
16+
## 解決した技術的課題
17+
18+
### Windows互換性の問題
19+
20+
| 問題 | 症状 | 原因 | 解決策 |
21+
|------|------|------|--------|
22+
| **DLLロードエラー** | `OSError: Error loading c10.dll` | GradioがPyTorchより先にロードされるとDLL依存関係が壊れる | Pythonモジュールのインポート順序を最適化(torch → gradio) |
23+
| **torchcodecエラー** | `TorchCodec is required for load_with_torchcodec` | torchaudioがWindowsで未サポートのtorchcodecを要求 | soundfileによるフォールバック処理を実装 |
24+
| **torchaudio API変更** | `torchaudio.info()` が動作しない | PyTorch nightly版でのAPI破壊的変更 | soundfile.info()で代替実装 |
25+
| **ruamel.yaml互換性** | `'Loader' object has no attribute 'max_depth'` | HyperPyYAMLとの互換性問題 | バージョン制限 `>=0.15.0,<0.18.0` で解決 |
26+
| **sox依存問題** | Linux専用の音声処理ツールに依存 | 元コードがsoxを前提 | 代替ライブラリで完全置換 |
1527

16-
| 問題 | 症状 | 解決策 |
17-
|------|------|--------|
18-
| **DLLロードエラー** | `OSError: Error loading c10.dll` - PyTorchのDLLが正しくロードされない | Pythonモジュールのインポート順序を最適化(torch → gradio) |
19-
| **torchcodecエラー** | `TorchCodec is required` - Windowsで未サポートのコーデックを要求 | soundfileによるフォールバック処理を実装 |
20-
| **sox依存問題** | Linux専用の音声処理ツールに依存 | 代替ライブラリで完全置換 |
21-
| **torchaudio API変更** | PyTorch nightly版でのAPI破壊的変更 | soundfileベースの互換レイヤーを実装 |
28+
### CosyVoice3 固有の問題
29+
30+
| 問題 | 症状 | 原因 | 解決策 |
31+
|------|------|------|--------|
32+
| **プリセット音声が使えない** | SFTモードでエラー | CosyVoice3は`spk2info.pt`を持たない | プリセット音声モードをUIから削除 |
33+
| **音声が中国語っぽくなる** | 日本語テキストが正しく発音されない | `<\|endofprompt\|>`トークンの欠落 | 各推論モードで自動的にトークンを付与 |
34+
| **inference_instruct非対応** | instructモードでエラー | CosyVoice3は`inference_instruct2`のみ対応 | 正しいAPI呼び出しに修正 |
2235

2336
---
2437

2538
## 特徴
2639

27-
### Windowsネイティブ完全対応
40+
### 1. Windowsネイティブ完全対応
2841
- **Linux専用だったCosyVoiceをWindowsで動作可能に**
2942
- RTX 5090 (sm_120) などの最新GPUにも対応
3043
- PyTorch nightly (CUDA 12.8) での動作確認済み
3144
- ワンクリック起動(`run.bat`をダブルクリックするだけ)
32-
- 自動ポート選択(使用中のポートを自動回避)
45+
- 自動ポート選択(使用中のポートを自動回避、7865から順に検索)
46+
- ブラウザ自動起動(8秒後に自動でWebUIを開く)
3347

34-
### GUI完全日本語化
48+
### 2. GUI完全日本語化
3549
- すべてのUI要素を日本語に翻訳
3650
- 操作手順も日本語で表示
37-
- エラーメッセージも日本語化
51+
- エラーメッセージ・警告メッセージも日本語化
52+
- モード名: 「3秒ボイスクローン」「多言語クローン」「自然言語制御」
3853

39-
### Whisper自動文字起こし統合
54+
### 3. Whisper自動文字起こし統合
4055
- OpenAI Whisperをボタン一つで呼び出し
4156
- プロンプト音声の内容を自動でテキスト化
4257
- 言語自動検出対応
58+
- モデルサイズ選択可能(tiny/base/small/medium/large)
59+
- 遅延ロード実装(初回使用時のみモデルをロード)
60+
61+
### 4. 言語選択機能(発音制御)
62+
- 出力言語を明示的に指定可能
63+
- 「自然言語制御」モードで言語ヒントを自動付与
64+
- 対応言語: 日本語、英語、中国語、韓国語、ドイツ語、フランス語、スペイン語、イタリア語、ロシア語
65+
66+
### 5. CosyVoice3 最適化
67+
- `<|endofprompt|>`トークンの自動付与
68+
- 各推論モード(zero_shot, cross_lingual, instruct2)の適切な使い分け
69+
- 声質クローン優先モード(言語制御より声質を重視)
4370

44-
### 言語選択機能
45-
- 出力言語(発音)を明示的に指定可能
46-
- 日本語、英語、中国語、韓国語など9言語対応
71+
### 6. エラーハンドリング強化
72+
- 音声ファイル読み込みエラーの詳細表示
73+
- 音声生成エラー時のスタックトレース出力
74+
- サンプリングレートチェック(16kHz以上を要求)
4775

4876
---
4977

5078
## 元リポジトリからの変更点
5179

5280
| ファイル | 変更内容 |
5381
|----------|----------|
54-
| `webui.py` | GUI日本語化、Whisper統合、Windows互換性修正、言語選択機能 |
55-
| `launcher.py` | 自動ポート選択、ブラウザ自動起動(**新規作成**|
56-
| `run.bat` | ワンクリック起動スクリプト(**新規作成**|
57-
| `cosyvoice/utils/file_utils.py` | torchcodec問題の回避パッチ、soundfileフォールバック |
82+
| `webui.py` | GUI日本語化、Whisper統合、Windows互換性修正、言語選択機能、CosyVoice3 API対応、エラーハンドリング強化 |
83+
| `launcher.py` | 自動ポート選択、ブラウザ自動起動、環境変数設定(**新規作成**|
84+
| `run.bat` | ワンクリック起動スクリプト、Conda環境自動有効化(**新規作成**|
85+
| `cosyvoice/utils/file_utils.py` | torchcodec問題の回避、soundfileフォールバック、numpy変換処理 |
86+
| `.gitignore` | Windows固有ファイル、大容量モデルファイルの除外追加 |
5887

5988
---
6089

@@ -64,9 +93,10 @@
6493
|------|------|
6594
| **OS** | Windows 10/11(Linux非依存) |
6695
| **GPU** | NVIDIA GPU(CUDA対応) |
96+
| **VRAM** | 8GB以上推奨 |
6797
| **Python** | 3.10 |
6898
| **PyTorch** | nightly版推奨(CUDA 12.8対応) |
69-
| **特記** | RTX 5090など最新GPU対応 |
99+
| **特記** | RTX 5090 (sm_120) 対応確認済み |
70100

71101
---
72102

@@ -124,26 +154,65 @@ python launcher.py
124154
```
125155

126156
ブラウザが自動で開き、`http://localhost:7865` でWebUIにアクセスできます。
157+
(ポート7865が使用中の場合は自動的に次の空きポートを使用)
127158

128159
---
129160

130161
## 使い方
131162

132163
### 3秒ボイスクローン(推奨)
164+
最も高品質な声質クローンが可能なモード
165+
133166
1. プロンプト音声をアップロードまたは録音(3〜30秒)
134167
2. 「自動文字起こし (Whisper)」ボタンでテキストを取得
135168
3. 合成テキストを入力
136169
4. 「音声を生成」をクリック
137170

138171
### 多言語クローン
139-
1. プロンプト音声をアップロード(例:英語)
140-
2. 合成テキストを別の言語で入力(例:日本語)
172+
プロンプト音声と異なる言語で出力するモード
173+
174+
1. プロンプト音声をアップロード(例:英語の音声)
175+
2. 合成テキストを別の言語で入力(例:日本語のテキスト)
141176
3. 「音声を生成」をクリック
142177

143178
### 自然言語制御
179+
話し方を自然言語で指示するモード
180+
144181
1. プロンプト音声をアップロード
145-
2. 指示テキストを入力(例:「優しく話して」「早口で」「囁いて」)
146-
3. 「音声を生成」をクリック
182+
2. 指示テキストを入力(例:「優しく話して」「早口で」「囁いて」「悲しそうに」)
183+
3. 言語選択で出力言語を指定(オプション)
184+
4. 「音声を生成」をクリック
185+
186+
---
187+
188+
## トラブルシューティング
189+
190+
### DLLロードエラーが発生する
191+
```
192+
OSError: Error loading c10.dll
193+
```
194+
`webui.py`の先頭で`torch``gradio`より先にインポートしているか確認
195+
196+
### torchcodecエラーが発生する
197+
```
198+
TorchCodec is required for load_with_torchcodec
199+
```
200+
`pip install soundfile` を実行し、`file_utils.py`が更新されているか確認
201+
202+
### ポートが使用中でエラーになる
203+
```
204+
OSError: Cannot find empty port in range
205+
```
206+
→ 既存のPythonプロセスを終了するか、`launcher.py`が最新か確認
207+
208+
### 音声が中国語っぽくなる
209+
→ 「自然言語制御」モードで言語選択を「日本語」に設定
210+
211+
### ruamel.yamlエラー
212+
```
213+
'Loader' object has no attribute 'max_depth'
214+
```
215+
`pip install "ruamel.yaml>=0.15.0,<0.18.0"` を実行
147216

148217
---
149218

0 commit comments

Comments
 (0)