Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,785 Bytes
6a535bc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# 分散GPU音声文字起こしシステム
## 概要
このシステムは、長時間の音声ファイルを効率的に文字起こしするための分散処理システムです。GPUを使用する重い処理をHugging Face Space上で行い、ファイルの分割と結合をローカル環境で実行します。
## システム構成
### 1. Space側(GPU処理)
- ファイル: `space_app.py`
- 役割: GPUを使用した文字起こし処理
- 環境: Hugging Face Space(GPU環境)
- 主な機能:
- 音声ファイルの受信
- GPUを使用した文字起こし
- 結果のJSON形式での返却
### 2. ローカル側(制御)
- ファイル: `local_controller.py`
- 役割: ファイル分割と結果の結合
- 環境: ローカルマシン(CPUのみ)
- 主な機能:
- 音声ファイルの分割
- Space APIとの通信
- 文字起こし結果の結合
- 最終結果の保存
## データフロー
1. **音声ファイルの分割**
- 入力: 音声ファイル(mp3, wav等)
- 処理: 1時間単位で分割(30秒のオーバーラップ)
- 出力: 分割された音声チャンク
2. **Spaceでの処理**
- 入力: 音声チャンク
- 処理: GPUを使用した文字起こし
- 出力: JSON形式の中間データ
```json
{
"segments": [
{
"start": 0.0,
"end": 10.5,
"text": "文字起こしテキスト"
}
],
"words": [
{
"start": 0.0,
"end": 1.5,
"word": "単語"
}
]
}
```
3. **結果の結合**
- 入力: 各チャンクの中間データ
- 処理: タイムスタンプの調整と重複除去
- 出力: 結合された文字起こし結果
## 環境要件
### Space側
- Hugging Face Space(GPU環境)
- 必要なパッケージ:
- nemo
- torch
- gradio
### ローカル側
- Python 3.8以上
- 必要なパッケージ:
- requests
- pydub
- ffmpeg-python
- ffmpeg(システム要件)
## 使用方法
1. **Spaceのデプロイ**
- `space_app.py`をHugging Face Spaceにデプロイ
- SpaceのURLを取得
2. **ローカル環境のセットアップ**
```bash
pip install -r requirements.txt
```
3. **実行**
```bash
python local_controller.py "path/to/audio.mp3" --output-dir "path/to/output"
```
## 設定パラメータ
### チャンク設定
- `CHUNK_LENGTH_SECONDS`: 3600(1時間)
- `CHUNK_OVERLAP_SECONDS`: 30(30秒)
### Space設定
- `SPACE_URL`: Hugging Face SpaceのURL
## エラーハンドリング
1. **ファイル処理エラー**
- 一時ファイルの自動削除
- エラーログの出力
2. **API通信エラー**
- リトライ機能
- エラーメッセージの表示
3. **メモリ管理**
- 一時ファイルの適切な管理
- メモリ使用量の最適化
## 出力形式
- JSON形式で保存
- セグメントと単語レベルのタイムスタンプ
- 必要に応じてSRT/VTT等に変換可能
## 制限事項
1. **ファイルサイズ**
- 入力ファイル: 制限なし(チャンク分割により処理)
- 出力ファイル: システムのメモリ制限に依存
2. **処理時間**
- 音声長に比例
- ネットワーク状況に依存
3. **API制限**
- Spaceの利用制限に従う
- レート制限の考慮
## 今後の拡張性
1. **機能拡張**
- 複数言語対応
- カスタムモデルの使用
- リアルタイム処理
2. **最適化**
- 並列処理の改善
- メモリ使用量の最適化
- エラー回復機能の強化
3. **UI/UX**
- Webインターフェースの追加
- 進捗表示の改善
- 設定のGUI化 |