File size: 4,645 Bytes
8b14bed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# 推論

推論は、コマンドライン、HTTP API、および Web UI をサポートしています。

!!! note
    全体として、推論は次のいくつかの部分で構成されています:

    1. VQGANを使用して、与えられた約10秒の音声をエンコードします。
    2. エンコードされたセマンティックトークンと対応するテキストを例として言語モデルに入力します。
    3. 新しいテキストが与えられた場合、モデルに対応するセマンティックトークンを生成させます。
    4. 生成されたセマンティックトークンをVITS / VQGANに入力してデコードし、対応する音声を生成します。

## コマンドライン推論

必要な`vqgan`および`llama`モデルを Hugging Face リポジトリからダウンロードします。

```bash
huggingface-cli download fishaudio/fish-speech-1.4 --local-dir checkpoints/fish-speech-1.4
```

### 1. 音声からプロンプトを生成する:

!!! note
    モデルにランダムに音声の音色を選ばせる場合、このステップをスキップできます。

```bash
python tools/vqgan/inference.py \
    -i "paimon.wav" \
    --checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
```

`fake.npy`ファイルが生成されるはずです。

### 2. テキストからセマンティックトークンを生成する:

```bash
python tools/llama/generate.py \
    --text "変換したいテキスト" \
    --prompt-text "参照テキスト" \
    --prompt-tokens "fake.npy" \
    --checkpoint-path "checkpoints/fish-speech-1.4" \
    --num-samples 2 \
    --compile
```

このコマンドは、作業ディレクトリに`codes_N`ファイルを作成します。ここで、N は 0 から始まる整数です。

!!! note
    `--compile`を使用して CUDA カーネルを融合し、より高速な推論を実現することができます(約 30 トークン/秒 -> 約 500 トークン/秒)。
    それに対応して、加速を使用しない場合は、`--compile`パラメータをコメントアウトできます。

!!! info
    bf16 をサポートしていない GPU の場合、`--half`パラメータを使用する必要があるかもしれません。

### 3. セマンティックトークンから音声を生成する:

#### VQGAN デコーダー

```bash
python tools/vqgan/inference.py \
    -i "codes_0.npy" \
    --checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
```

## HTTP API 推論

推論のための HTTP API を提供しています。次のコマンドを使用してサーバーを起動できます:

```bash
python -m tools.api \
    --listen 0.0.0.0:8080 \
    --llama-checkpoint-path "checkpoints/fish-speech-1.4" \
    --decoder-checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth" \
    --decoder-config-name firefly_gan_vq
```

> 推論を高速化したい場合は、`--compile` パラメータを追加できます。

その後、`http://127.0.0.1:8080/`で API を表示およびテストできます。

以下は、`tools/post_api.py` を使用してリクエストを送信する例です。

```bash
python -m tools.post_api \
    --text "入力するテキスト" \
    --reference_audio "参照音声へのパス" \
    --reference_text "参照音声テキスト" \
    --streaming True
```

上記のコマンドは、参照音声の情報に基づいて必要な音声を合成し、ストリーミング方式で返すことを示しています。

!!! info
    使用可能なパラメータの詳細については、コマンド` python -m tools.post_api -h `を使用してください

## WebUI 推論

次のコマンドを使用して WebUI を起動できます:

```bash
python -m tools.webui \
    --llama-checkpoint-path "checkpoints/fish-speech-1.4" \
    --decoder-checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth" \
    --decoder-config-name firefly_gan_vq
```
> 推論を高速化したい場合は、`--compile` パラメータを追加できます。

!!! note
    ラベルファイルと参照音声ファイルをメインディレクトリの `references` フォルダ(自分で作成する必要があります)に事前に保存しておくことで、WebUI で直接呼び出すことができます。

!!! note
    Gradio 環境変数(`GRADIO_SHARE`、`GRADIO_SERVER_PORT`、`GRADIO_SERVER_NAME`など)を使用して WebUI を構成できます。

お楽しみください!