Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

スタイルID(style_id)のことを話者ID(speaker_id)としているコードを全部置き換える #741

Merged
merged 45 commits into from
Oct 22, 2023
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
1bf4f29
speaker_idをstyle_idに(synthesis_engine_base.py)
weweweok Sep 6, 2023
3f58da0
style_idに変更(cancellable_engine.py)
weweweok Sep 6, 2023
aac0ed0
idチェック関数と細部の修正
weweweok Sep 6, 2023
ad51b7c
synthesis_engine_base.pyの一部を書き換え
weweweok Sep 6, 2023
6fdf5b4
不要なspeaker_id引数の削除(synthesis_engine_base.py)
weweweok Sep 7, 2023
1916412
id_checkerの使用とoptionalの追加(cancellable_engine.py)
weweweok Sep 8, 2023
dc66cb5
speaker_idをstyle_idに変更(morphing.py)
weweweok Sep 9, 2023
b914e9c
speaker_idをstyle_idに(mock.py)
weweweok Sep 19, 2023
4cab209
speaker_idをstyle_idに変更(synthesis_engine.py)
weweweok Sep 19, 2023
7432d91
speaker_idをstyle_idに変更(corewrapper.py)
weweweok Sep 19, 2023
9f6305a
speaker_idをstyle_idに変更(run.py)
weweweok Sep 19, 2023
f7cd30f
speaker_idをstyle_idに
weweweok Sep 19, 2023
d6852fa
speaker_idをstyle_idに変更(test_shynthesis_engine_base
weweweok Sep 23, 2023
8314073
speaker_idをstyle_idに(test_synthesis_engine.py)
weweweok Sep 23, 2023
7012a1b
optionalの削除
weweweok Oct 11, 2023
88929bc
optionalの変更
weweweok Oct 11, 2023
2ddc62c
id_checker関数の修正
weweweok Oct 11, 2023
48ebb63
id_checker関数の修正とその関数によるaudio_query関数の一部を追加・変更
weweweok Oct 11, 2023
b1a3420
id_checker関数を修正
weweweok Oct 11, 2023
09160ef
audio_query関数のspeakerをstyle_idに変更
weweweok Oct 11, 2023
ce23723
id_checker関数の名前をget_style_id_from_deprecatedに変更
weweweok Oct 14, 2023
e8b01df
get_style_id_from_deprecated関数の戻り値のインデントを修正
weweweok Oct 14, 2023
6ecbff7
クエリ編集周りのAPI関数におけるspeakerパラメータをstyle_idに変更
weweweok Oct 14, 2023
0e737f0
音声合成周りのAPIにおいて、style_idとspeakerに互換性をもたせた
weweweok Oct 14, 2023
8686888
initialize_speaker関連のAPIでstyle_idとspeakerに互換性をもたせた
weweweok Oct 15, 2023
5cfa87f
speakerNotFoundError関数で使用されるspeakerをstyle_idに変更した
weweweok Oct 15, 2023
4d07a68
ビルドテストの非推奨パワメータを推奨パラメータに変更
weweweok Oct 16, 2023
3ea9a04
speakerNotFoudError関数の細かい記述を修正
weweweok Oct 16, 2023
3b5acec
model.pyの修正漏れを適用
weweweok Oct 16, 2023
89f78b9
非推奨(既存の)エンドポイントと推奨エンドポイント両方を実装
weweweok Oct 16, 2023
5137e5d
(is_)initialize_speakerAPIドキュメントの説明を更新
weweweok Oct 16, 2023
6523548
run.pyにおけるSpeakerNotFoundError周りを修正
weweweok Oct 17, 2023
b5d0e49
SpeakerNotFoundErrorをStyleId...に変更
weweweok Oct 17, 2023
53a979c
SpeakerNotFoundErrorをStyleIdに変更 (変更漏れ)
weweweok Oct 17, 2023
91cead9
descriptionの話者をスタイルに変更
weweweok Oct 17, 2023
46efa5b
(is_)initialize(d)_speaker...のspeakerをstyle_idに変更
weweweok Oct 17, 2023
2b8ad4c
initialize(d)_speakerまわりにおけるdocstringの誤りを修正
weweweok Oct 17, 2023
55218cf
不要なstyle_idの変更をspeakerにリセット
weweweok Oct 17, 2023
7eda81b
READMEで記述されているspeakerパラメータをstyle_idに変更
weweweok Oct 17, 2023
790007f
修正漏れにspeakerをstyle_idに変更(morphing.py)
weweweok Oct 21, 2023
cc2b8e0
speaker_idをstyle_idに変更(test_synthesis...base.py)
weweweok Oct 21, 2023
310f6c2
Merge branch 'master' into dev
weweweok Oct 22, 2023
9d11bc6
ドキュメント調整、型表記をあわせる、linter適用
Hiroshiba Oct 22, 2023
0cf1e04
マージミス解消、エラー解消
Hiroshiba Oct 22, 2023
c949cb5
stacklevel=1,
Hiroshiba Oct 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 52 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@ echo -n "こんにちは、音声合成の世界へようこそ" >text.txt

curl -s \
-X POST \
"127.0.0.1:50021/audio_query?speaker=1"\
"127.0.0.1:50021/audio_query?style_id=1"\
--get --data-urlencode [email protected] \
> query.json

curl -s \
-H "Content-Type: application/json" \
-X POST \
-d @query.json \
"127.0.0.1:50021/synthesis?speaker=1" \
"127.0.0.1:50021/synthesis?style_id=1" \
> audio.wav
```

Expand All @@ -70,7 +70,7 @@ echo -n "ディープラーニングは万能薬ではありません" >text.txt

curl -s \
-X POST \
"127.0.0.1:50021/audio_query?speaker=1" \
"127.0.0.1:50021/audio_query?style_id=1" \
--get --data-urlencode [email protected] \
> query.json

Expand All @@ -82,7 +82,7 @@ cat query.json | grep -o -E "\"kana\":\".*\""
echo -n "ディイプラ'アニングワ/バンノ'オヤクデワ/アリマセ'ン" > kana.txt
curl -s \
-X POST \
"127.0.0.1:50021/accent_phrases?speaker=1&is_kana=true" \
"127.0.0.1:50021/accent_phrases?style_id=1&is_kana=true" \
--get --data-urlencode [email protected] \
> newphrases.json

Expand All @@ -93,35 +93,36 @@ curl -s \
-H "Content-Type: application/json" \
-X POST \
-d @newquery.json \
"127.0.0.1:50021/synthesis?speaker=1" \
"127.0.0.1:50021/synthesis?style_id=1" \
> audio.wav
```

### ユーザー辞書機能について

APIからユーザー辞書の参照、単語の追加、編集、削除を行うことができます。
API からユーザー辞書の参照、単語の追加、編集、削除を行うことができます。

#### 参照

`/user_dict`にGETリクエストを投げることでユーザー辞書の一覧を取得することができます
`/user_dict`に GET リクエストを投げることでユーザー辞書の一覧を取得することができます

```bash
curl -s -X GET "127.0.0.1:50021/user_dict"
```

#### 単語追加

`/user_dict_word`にPOSTリクエストを投げる事でユーザー辞書に単語を追加することができます。
URLパラメータとして、以下が必要です。
`/user_dict_word`に POST リクエストを投げる事でユーザー辞書に単語を追加することができます。
URL パラメータとして、以下が必要です。

- surface (辞書に登録する単語)
- pronunciation (カタカナでの読み方)
- accent_type (アクセント核位置、整数)

アクセント核位置については、こちらの文章が参考になるかと思います。
〇型となっている数字の部分がアクセント核位置になります。
https://tdmelodic.readthedocs.io/ja/latest/pages/introduction.html
https://tdmelodic.readthedocs.io/ja/latest/pages/introduction.html

成功した場合の返り値は単語に割り当てられるUUIDの文字列になります
成功した場合の返り値は単語に割り当てられる UUID の文字列になります

```bash
surface="test"
Expand All @@ -137,13 +138,14 @@ curl -s -X POST "127.0.0.1:50021/user_dict_word" \

#### 単語修正

`/user_dict_word/{word_uuid}`にPUTリクエストを投げる事でユーザー辞書の単語を修正することができます。
URLパラメータとして、以下が必要です。
`/user_dict_word/{word_uuid}`に PUT リクエストを投げる事でユーザー辞書の単語を修正することができます。
URL パラメータとして、以下が必要です。

- surface (辞書に登録するワード)
- pronunciation (カタカナでの読み方)
- accent_type (アクセント核位置、整数)

word_uuidは単語追加時に確認できるほか、ユーザー辞書を参照することでも確認できます。
word_uuid は単語追加時に確認できるほか、ユーザー辞書を参照することでも確認できます。
成功した場合の返り値は`204 No Content`になります。

```bash
Expand All @@ -162,9 +164,9 @@ curl -s -X PUT "127.0.0.1:50021/user_dict_word/$word_uuid" \

#### 単語削除

`/user_dict_word/{word_uuid}`にDELETEリクエストを投げる事でユーザー辞書の単語を削除することができます。
`/user_dict_word/{word_uuid}`に DELETE リクエストを投げる事でユーザー辞書の単語を削除することができます。

word_uuidは単語追加時に確認できるほか、ユーザー辞書を参照することでも確認できます。
word_uuid は単語追加時に確認できるほか、ユーザー辞書を参照することでも確認できます。
成功した場合の返り値は`204 No Content`になります。

```bash
Expand Down Expand Up @@ -199,7 +201,7 @@ curl -s \
-H "Content-Type: application/json" \
-X POST \
-d @query.json \
"127.0.0.1:50021/synthesis?speaker=$style_id" \
"127.0.0.1:50021/synthesis?style_id=$style_id" \
> audio.wav
```

Expand All @@ -216,7 +218,7 @@ echo -n "モーフィングを利用することで、2つの声を混ぜる

curl -s \
-X POST \
"127.0.0.1:50021/audio_query?speaker=0"\
"127.0.0.1:50021/audio_query?style_id=0"\
--get --data-urlencode [email protected] \
> query.json

Expand All @@ -225,7 +227,7 @@ curl -s \
-H "Content-Type: application/json" \
-X POST \
-d @query.json \
"127.0.0.1:50021/synthesis?speaker=0" \
"127.0.0.1:50021/synthesis?style_id=0" \
> audio.wav

export MORPH_RATE=0.5
Expand Down Expand Up @@ -268,11 +270,11 @@ curl -s -X GET "127.0.0.1:50021/speaker_info?speaker_uuid=7ffcb7ce-00ec-4bdc-82c
この API は実験的機能であり、エンジン起動時に引数で`--enable_cancellable_synthesis`を指定しないと有効化されません。
音声合成に必要なパラメータは`/synthesis`と同様です。

### CORS設定
### CORS 設定

VOICEVOXではセキュリティ保護のため`localhost`・`127.0.0.1`・`app://`・Originなし以外のOriginからリクエストを受け入れないようになっています
VOICEVOX ではセキュリティ保護のため`localhost`・`127.0.0.1`・`app://`・Origin なし以外の Origin からリクエストを受け入れないようになっています
そのため、一部のサードパーティアプリからのレスポンスを受け取れない可能性があります。
これを回避する方法として、エンジンから設定できるUIを用意しています
これを回避する方法として、エンジンから設定できる UI を用意しています

#### 設定方法

Expand Down Expand Up @@ -345,7 +347,8 @@ docker run --rm --gpus all -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:n
```

#### トラブルシューティング
GPU版を利用する場合、環境によってエラーが発生することがあります。その場合、`--runtime=nvidia`を`docker run`につけて実行すると解決できることがあります。

GPU 版を利用する場合、環境によってエラーが発生することがあります。その場合、`--runtime=nvidia`を`docker run`につけて実行すると解決できることがあります。

## 貢献者の方へ

Expand Down Expand Up @@ -419,29 +422,38 @@ CPU スレッド数が未指定の場合は、論理コア数の半分か物理
```

### 過去のバージョンのコアを使う
VOICEVOX Core 0.5.4以降のコアを使用する事が可能です。
Macでのlibtorch版コアのサポートはしていません。

VOICEVOX Core 0.5.4 以降のコアを使用する事が可能です。
Mac での libtorch 版コアのサポートはしていません。

#### 過去のバイナリを指定する
製品版VOICEVOXもしくはコンパイル済みエンジンのディレクトリを`--voicevox_dir`引数で指定すると、そのバージョンのコアが使用されます。

製品版 VOICEVOX もしくはコンパイル済みエンジンのディレクトリを`--voicevox_dir`引数で指定すると、そのバージョンのコアが使用されます。

```bash
python run.py --voicevox_dir="/path/to/voicevox"
```
Macでは、`DYLD_LIBRARY_PATH`の指定が必要です。

Mac では、`DYLD_LIBRARY_PATH`の指定が必要です。

```bash
DYLD_LIBRARY_PATH="/path/to/voicevox" python run.py --voicevox_dir="/path/to/voicevox"
```

#### 音声ライブラリを直接指定する
[VOICEVOX Coreのzipファイル](https://github.com/VOICEVOX/voicevox_core/releases)を解凍したディレクトリを`--voicelib_dir`引数で指定します。

[VOICEVOX Core の zip ファイル](https://github.com/VOICEVOX/voicevox_core/releases)を解凍したディレクトリを`--voicelib_dir`引数で指定します。
また、コアのバージョンに合わせて、[libtorch](https://pytorch.org/)や[onnxruntime](https://github.com/microsoft/onnxruntime)のディレクトリを`--runtime_dir`引数で指定します。
ただし、システムの探索パス上にlibtorch、onnxruntimeがある場合、`--runtime_dir`引数の指定は不要です。
`--voicelib_dir`引数、`--runtime_dir`引数は複数回使用可能です。
APIエンドポイントでコアのバージョンを指定する場合は`core_version`引数を指定してください。(未指定の場合は最新のコアが使用されます)
ただし、システムの探索パス上に libtorch、onnxruntime がある場合、`--runtime_dir`引数の指定は不要です。
`--voicelib_dir`引数、`--runtime_dir`引数は複数回使用可能です。
API エンドポイントでコアのバージョンを指定する場合は`core_version`引数を指定してください。(未指定の場合は最新のコアが使用されます)

```bash
python run.py --voicelib_dir="/path/to/voicevox_core" --runtime_dir="/path/to/libtorch_or_onnx"
```
Macでは、`--runtime_dir`引数の代わりに`DYLD_LIBRARY_PATH`の指定が必要です。

Mac では、`--runtime_dir`引数の代わりに`DYLD_LIBRARY_PATH`の指定が必要です。

```bash
DYLD_LIBRARY_PATH="/path/to/onnx" python run.py --voicelib_dir="/path/to/voicevox_core"
```
Expand Down Expand Up @@ -493,7 +505,7 @@ python make_docs.py
## ビルド

この方法でビルドしたものは、リリースで公開されているものとは異なります。
また、GPUで利用するにはcuDNNやCUDA、DirectMLなどのライブラリが追加で必要となります
また、GPU で利用するには cuDNN や CUDA、DirectML などのライブラリが追加で必要となります

```bash
python -m pip install -r requirements-dev.txt
Expand Down Expand Up @@ -603,19 +615,19 @@ VOICEVOX エディターにうまく読み込ませられないときは、エ

### Variables

| name | description |
| :----------------- | :---------------------------------------------------------------------- |
| DOCKERHUB_USERNAME | Docker Hub ユーザ名 |
| name | description |
| :----------------- | :------------------ |
| DOCKERHUB_USERNAME | Docker Hub ユーザ名 |

### Secrets

| name | description |
| :----------------- | :---------------------------------------------------------------------- |
| DOCKERHUB_TOKEN | [Docker Hub アクセストークン](https://hub.docker.com/settings/security) |
| name | description |
| :-------------- | :---------------------------------------------------------------------- |
| DOCKERHUB_TOKEN | [Docker Hub アクセストークン](https://hub.docker.com/settings/security) |

## 事例紹介

**[voicevox-client](https://github.com/tuna2134/voicevox-client) [@tuna2134](https://github.com/tuna2134)** ・・・ VOICEVOX ENGINE のためのPythonラッパー
**[voicevox-client](https://github.com/tuna2134/voicevox-client) [@tuna2134](https://github.com/tuna2134)** ・・・ VOICEVOX ENGINE のための Python ラッパー

## ライセンス

Expand Down
4 changes: 2 additions & 2 deletions build_util/check_release_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,14 @@ def test_release_build(dist_dir: Path, skip_run_process: bool) -> None:
# テキスト -> クエリ
text = "こんにちは、音声合成の世界へようこそ"
req = Request(
base_url + "audio_query?" + urlencode({"speaker": "1", "text": text}),
base_url + "audio_query?" + urlencode({"style_id": "1", "text": text}),
method="POST",
)
with urlopen(req) as res:
query = json.loads(res.read().decode("utf-8"))

# クエリ -> 音声
req = Request(base_url + "synthesis?speaker=1", method="POST")
req = Request(base_url + "synthesis?style_id=1", method="POST")
req.add_header("Content-Type", "application/json")
req.data = json.dumps(query).encode("utf-8")
with urlopen(req) as res:
Expand Down
Loading
Loading