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

追加: パッケージ内 run.py とその実行を追加 #1376

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
4 changes: 2 additions & 2 deletions .github/workflows/build-engine-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ jobs:
# FIXME: VOICEVOX (editor) cannot build without licenses.json
cp resources/engine_manifest_assets/dependency_licenses.json licenses.json

- name: <Build> Build VOICEVOX ENGINE run.py
- name: <Build> Build VOICEVOX ENGINE
run: |
set -eux

Expand All @@ -470,7 +470,7 @@ jobs:
CORE_MODEL_DIR_PATH="download/core/model" \
LIBCORE_PATH="$LIBCORE_PATH" \
LIBONNXRUNTIME_PATH="$LIBONNXRUNTIME_PATH" \
pyinstaller --noconfirm run.spec
pyinstaller --noconfirm build_util/run.spec

# Because PyInstaller does not copy dynamic loaded libraries,
# manually move DLL dependencies into `dist/run/` (cache already saved)
Expand Down
16 changes: 8 additions & 8 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,35 +167,35 @@ VOICEVOX ENGINE を実行することで HTTP サーバーが立ち上がりま
コマンドライン引数の詳細は以下のコマンドで確認してください。

```bash
python run.py --help
python -m voicevox_engine --help
```

### 音声ライブラリ無しで実行
音声ライブラリを導入しなかった場合あるいは軽量のモック版音声合成を利用したい場合、シェルで以下のコマンドを実行することでエンジンが実行されます。
```bash
python run.py --enable_mock
python -m voicevox_engine --enable_mock
```

### 音声ライブラリに製品版 VOICEVOX を利用して実行

```bash
VOICEVOX_DIR="C:/path/to/VOICEVOX/vv-engine" # 製品版 VOICEVOX ディレクトリ内の ENGINE のパス
python run.py --voicevox_dir=$VOICEVOX_DIR
python -m voicevox_engine --voicevox_dir=$VOICEVOX_DIR
```

### 音声ライブラリに製品版 VOICEVOX CORE を利用して実行

```bash
VOICELIB_DIR_1="C:/path/to/core_1"; VOICELIB_DIR_2="C:/path/to/core_2"; # 製品版 VOICEVOX CORE ディレクトリのパス
python run.py --voicelib_dir=$VOICELIB_DIR_1 --voicelib_dir=$VOICELIB_DIR_2
python -m voicevox_engine --voicelib_dir=$VOICELIB_DIR_1 --voicelib_dir=$VOICELIB_DIR_2
```

### ログを UTF8 に変更

```bash
python run.py --output_log_utf8
python -m voicevox_engine --output_log_utf8
# もしくは
VV_OUTPUT_LOG_UTF8=1 python run.py
VV_OUTPUT_LOG_UTF8=1 python -m voicevox_engine
```

## コードを編集する
Expand Down Expand Up @@ -309,13 +309,13 @@ OUTPUT_LICENSE_JSON_PATH=licenses.json \
bash build_util/create_venv_and_generate_licenses.bash

# モックでビルドする場合
pyinstaller --noconfirm run.spec
pyinstaller --noconfirm build_util/run.spec

# 製品版でビルドする場合
CORE_MODEL_DIR_PATH="/path/to/core_model" \
LIBCORE_PATH="/path/to/libcore" \
LIBONNXRUNTIME_PATH="/path/to/libonnxruntime" \
pyinstaller --noconfirm run.spec
pyinstaller --noconfirm build_util/run.spec
```

### Github Actions でビルド
Expand Down
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ COPY --from=download-onnxruntime-env /opt/onnxruntime /opt/onnxruntime
# Add local files
ADD ./voicevox_engine /opt/voicevox_engine/voicevox_engine
ADD ./docs /opt/voicevox_engine/docs
ADD ./run.py ./presets.yaml ./engine_manifest.json /opt/voicevox_engine/
ADD ./presets.yaml ./engine_manifest.json /opt/voicevox_engine/
ADD ./resources /opt/voicevox_engine/resources
ADD ./build_util/generate_licenses.py /opt/voicevox_engine/build_util/
ADD ./build_util/licenses /opt/voicevox_engine/build_util/licenses
Expand Down Expand Up @@ -296,8 +296,8 @@ exec "\$@"
EOF

ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "gosu", "user", "/opt/python/bin/python3", "./run.py", "--voicelib_dir", "/opt/voicevox_core/", "--runtime_dir", "/opt/onnxruntime/lib", "--host", "0.0.0.0" ]
CMD [ "gosu", "user", "/opt/python/bin/python3", "-m", "voicevox_engine", "--voicelib_dir", "/opt/voicevox_core/", "--runtime_dir", "/opt/onnxruntime/lib", "--host", "0.0.0.0" ]

# Enable use_gpu
FROM runtime-env AS runtime-nvidia-env
CMD [ "gosu", "user", "/opt/python/bin/python3", "./run.py", "--use_gpu", "--voicelib_dir", "/opt/voicevox_core/", "--runtime_dir", "/opt/onnxruntime/lib", "--host", "0.0.0.0" ]
CMD [ "gosu", "user", "/opt/python/bin/python3", "-m", "voicevox_engine", "--use_gpu", "--voicelib_dir", "/opt/voicevox_core/", "--runtime_dir", "/opt/onnxruntime/lib", "--host", "0.0.0.0" ]
36 changes: 18 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -398,11 +398,11 @@ VOICEVOX ではセキュリティ保護のため`localhost`・`127.0.0.1`・`app
エンジン起動時に引数を指定できます。詳しいことは`-h`引数でヘルプを確認してください。

```bash
$ python run.py -h
$ python -m voicevox_engine -h

usage: run.py [-h] [--host HOST] [--port PORT] [--use_gpu] [--voicevox_dir VOICEVOX_DIR] [--voicelib_dir VOICELIB_DIR] [--runtime_dir RUNTIME_DIR] [--enable_mock] [--enable_cancellable_synthesis]
[--init_processes INIT_PROCESSES] [--load_all_models] [--cpu_num_threads CPU_NUM_THREADS] [--output_log_utf8] [--cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}]
[--allow_origin [ALLOW_ORIGIN ...]] [--setting_file SETTING_FILE] [--preset_file PRESET_FILE]
usage: __main__.py [-h] [--host HOST] [--port PORT] [--use_gpu] [--voicevox_dir VOICEVOX_DIR] [--voicelib_dir VOICELIB_DIR] [--runtime_dir RUNTIME_DIR] [--enable_mock] [--enable_cancellable_synthesis]
[--init_processes INIT_PROCESSES] [--load_all_models] [--cpu_num_threads CPU_NUM_THREADS] [--output_log_utf8] [--cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}]
[--allow_origin [ALLOW_ORIGIN ...]] [--setting_file SETTING_FILE] [--preset_file PRESET_FILE]

VOICEVOX のエンジンです。

Expand Down Expand Up @@ -469,32 +469,32 @@ python -m pip install -r requirements-dev.txt -r requirements-build.txt
コマンドライン引数の詳細は以下のコマンドで確認してください。

```bash
python run.py --help
python -m voicevox_engine --help
```

```bash
# 製品版 VOICEVOX でサーバーを起動
VOICEVOX_DIR="C:/path/to/voicevox" # 製品版 VOICEVOX ディレクトリのパス
python run.py --voicevox_dir=$VOICEVOX_DIR
python -m voicevox_engine --voicevox_dir=$VOICEVOX_DIR
```

<!-- 差し替え可能な音声ライブラリまたはその仕様が公開されたらコメントを外す
```bash
# 音声ライブラリを差し替える
VOICELIB_DIR="C:/path/to/your/tts-model"
python run.py --voicevox_dir=$VOICEVOX_DIR --voicelib_dir=$VOICELIB_DIR
python -m voicevox_engine --voicevox_dir=$VOICEVOX_DIR --voicelib_dir=$VOICELIB_DIR
```
-->

```bash
# モックでサーバー起動
python run.py --enable_mock
python -m voicevox_engine --enable_mock
```

```bash
# ログをUTF8に変更
python run.py --output_log_utf8
# もしくは VV_OUTPUT_LOG_UTF8=1 python run.py
python -m voicevox_engine --output_log_utf8
# もしくは VV_OUTPUT_LOG_UTF8=1 python -m voicevox_engine
```

#### CPU スレッド数を指定する
Expand All @@ -505,12 +505,12 @@ CPU スレッド数が未指定の場合は、論理コア数の半分が使わ

- 実行時引数で指定する
```bash
python run.py --voicevox_dir=$VOICEVOX_DIR --cpu_num_threads=4
python -m voicevox_engine --voicevox_dir=$VOICEVOX_DIR --cpu_num_threads=4
```
- 環境変数で指定する
```bash
export VV_CPU_NUM_THREADS=4
python run.py --voicevox_dir=$VOICEVOX_DIR
python -m voicevox_engine --voicevox_dir=$VOICEVOX_DIR
```

#### 過去のバージョンのコアを使う
Expand All @@ -523,13 +523,13 @@ Mac での libtorch 版コアのサポートはしていません。
製品版 VOICEVOX もしくはコンパイル済みエンジンのディレクトリを`--voicevox_dir`引数で指定すると、そのバージョンのコアが使用されます。

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

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

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

##### 音声ライブラリを直接指定する
Expand All @@ -541,13 +541,13 @@ DYLD_LIBRARY_PATH="/path/to/voicevox" python run.py --voicevox_dir="/path/to/voi
API エンドポイントでコアのバージョンを指定する場合は`core_version`引数を指定してください。(未指定の場合は最新のコアが使用されます)

```bash
python run.py --voicelib_dir="/path/to/voicevox_core" --runtime_dir="/path/to/libtorch_or_onnx"
python -m voicevox_engine --voicelib_dir="/path/to/voicevox_core" --runtime_dir="/path/to/libtorch_or_onnx"
```

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

```bash
DYLD_LIBRARY_PATH="/path/to/onnx" python run.py --voicelib_dir="/path/to/voicevox_core"
DYLD_LIBRARY_PATH="/path/to/onnx" python -m voicevox_engine --voicelib_dir="/path/to/voicevox_core"
```

##### ユーザーディレクトリに配置する
Expand Down Expand Up @@ -575,13 +575,13 @@ OUTPUT_LICENSE_JSON_PATH=licenses.json \
bash build_util/create_venv_and_generate_licenses.bash

# モックでビルドする場合
pyinstaller --noconfirm run.spec
pyinstaller --noconfirm build_util/run.spec

# 製品版でビルドする場合
CORE_MODEL_DIR_PATH="/path/to/core_model" \
LIBCORE_PATH="/path/to/libcore" \
LIBONNXRUNTIME_PATH="/path/to/libonnxruntime" \
pyinstaller --noconfirm run.spec
pyinstaller --noconfirm build_util/run.spec
```

TODO: Docker 版のビルド手順を GitHub Actions をベースに記述する
Expand Down
10 changes: 5 additions & 5 deletions run.spec → build_util/run.spec
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ from PyInstaller.utils.hooks import collect_data_files
import os

datas = [
('resources', 'resources'),
('engine_manifest.json', '.'),
('licenses.json', '.'),
('presets.yaml', '.'),
('../resources', 'resources'),
('../engine_manifest.json', '.'),
('../licenses.json', '.'),
('../presets.yaml', '.'),
]
datas += collect_data_files('pyopenjtalk')

Expand Down Expand Up @@ -40,7 +40,7 @@ block_cipher = None


a = Analysis(
['run.py'],
['../voicevox_engine/run.py'],
pathex=[],
binaries=[],
datas=datas,
Expand Down
2 changes: 1 addition & 1 deletion test/benchmark/speed/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def execute() -> None:
# 実行コマンドは `python -m test.benchmark.speed.request` である。
# `server="localhost"` の場合、本ベンチマーク実行に先立ってエンジン起動が必要である。
# エンジン起動コマンドの一例として以下を示す。
# (別プロセスで)`python run.py --voicevox_dir=VOICEVOX/vv-engine`
# (別プロセスで)`python -m voicevox_engine --voicevox_dir=VOICEVOX/vv-engine`

parser = argparse.ArgumentParser()
parser.add_argument("--voicevox_dir", type=Path)
Expand Down
2 changes: 1 addition & 1 deletion test/benchmark/speed/speaker.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def execute() -> None:
# 実行コマンドは `python -m test.benchmark.speed.speaker` である。
# `server="localhost"` の場合、本ベンチマーク実行に先立ってエンジン起動が必要である。
# エンジン起動コマンドの一例として以下を示す。
# (別プロセスで)`python run.py --voicevox_dir=VOICEVOX/vv-engine`
# (別プロセスで)`python -m voicevox_engine --voicevox_dir=VOICEVOX/vv-engine`

parser = argparse.ArgumentParser()
parser.add_argument("--voicevox_dir", type=Path)
Expand Down
3 changes: 3 additions & 0 deletions voicevox_engine/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .run import main

main()
File renamed without changes.