Skip to content

Commit

Permalink
Merge branch 'master' into refactor/metas_spk
Browse files Browse the repository at this point in the history
  • Loading branch information
tarepan committed Jun 21, 2024
2 parents 5ae8971 + 026bda6 commit 1b37b1a
Show file tree
Hide file tree
Showing 9 changed files with 320 additions and 308 deletions.
102 changes: 69 additions & 33 deletions CONTRIBUTING.md

Large diffs are not rendered by default.

145 changes: 25 additions & 120 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@
コアは [VOICEVOX CORE](https://github.com/VOICEVOX/voicevox_core/)
全体構成は [こちら](https://github.com/VOICEVOX/voicevox/blob/main/docs/%E5%85%A8%E4%BD%93%E6%A7%8B%E6%88%90.md) に詳細があります。)

## 目次

目的に合わせたガイドはこちらです。

- [ユーザーガイド](#ユーザーガイド): 音声合成をしたい方向け
- [貢献者ガイド](#貢献者ガイド): コントリビュートしたい方向け
- [開発者ガイド](#開発者ガイド): コードを利用したい方向け

## ユーザーガイド

### ダウンロード
Expand Down Expand Up @@ -443,14 +451,15 @@ options:
エンジンディレクトリ内にあるファイルを全て消去し、新しいものに置き換えてください。
## 開発者・貢献者向けガイド
## 貢献者ガイド
### 貢献者の方へ
VOICEVOX ENGINE は皆さんのコントリビューションをお待ちしています!
詳細は [CONTRIBUTING.md](./CONTRIBUTING.md) をご覧ください。
また [VOICEVOX 非公式 Discord サーバー](https://discord.gg/WMwWetrzuh)にて、開発の議論や雑談を行っています。気軽にご参加ください。
Issue を解決するプルリクエストを作成される際は、別の方と同じ Issue に取り組むことを避けるため、
Issue 側で取り組み始めたことを伝えるか、最初に Draft プルリクエストを作成してください。
なお、Issue を解決するプルリクエストを作成される際は、別の方と同じ Issue に取り組むことを避けるため、Issue 側で取り組み始めたことを伝えるか、最初に Draft プルリクエストを作成することを推奨しています。
[VOICEVOX 非公式 Discord サーバー](https://discord.gg/WMwWetrzuh)にて、開発の議論や雑談を行っています。気軽にご参加ください。
## 開発者ガイド
### 環境構築
Expand Down Expand Up @@ -566,104 +575,23 @@ DYLD_LIBRARY_PATH="/path/to/onnx" python run.py --voicelib_dir="/path/to/voicevo

### ビルド

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

```bash
python -m pip install -r requirements-build.txt
OUTPUT_LICENSE_JSON_PATH=licenses.json \
bash tools/create_venv_and_generate_licenses.bash
# モックでビルドする場合
pyinstaller --noconfirm run.spec
`pyinstaller` を用いたパッケージ化と Dockerfile を用いたコンテナ化によりローカルでビルドが可能です。
手順の詳細は [貢献者ガイド#ビルド](./CONTRIBUTING.md#ビルド) を御覧ください。

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

TODO: Docker 版のビルド手順を GitHub Actions をベースに記述する

#### Github Actions でビルド

fork したリポジトリで Actions を ON にし、workflow_dispatch で`build-engine-package.yml`を起動すればビルドできます。
GitHub を用いる場合、fork したリポジトリで GitHub Actions によるビルドが可能です。
Actions を ON にし、workflow_dispatch で`build-engine-package.yml`を起動すればビルドできます。
成果物は Release にアップロードされます。
ビルドに必要な GitHub Actions の設定は [貢献者ガイド#GitHub Actions](./CONTRIBUTING.md#github-actions) を御覧ください。

### コードフォーマット
### テスト・静的解析

このソフトウェアでは、リモートにプッシュする前にコードフォーマットを確認する仕組み(静的解析ツール)を利用できます。
利用するには、開発に必要なライブラリのインストールに加えて、以下のコマンドを実行してください。
プルリクエストを作成する際は、利用することを推奨します。

```bash
pre-commit install -t pre-push
```

エラーが出た際は、以下のコマンドで修正することが可能です。なお、完全に修正できるわけではないので注意してください。

```bash
pysen run format lint
```

### テスト

```bash
python -m pytest
```

#### スナップショットの更新

```bash
python -m pytest --snapshot-update
```

### タイポチェック

[typos](https://github.com/crate-ci/typos) を使ってタイポのチェックを行っています。
[typos をインストール](https://github.com/crate-ci/typos#install) した後

```bash
typos
```

でタイポチェックを行えます。
もし誤判定やチェックから除外すべきファイルがあれば
[設定ファイルの説明](https://github.com/crate-ci/typos#false-positives) に従って`pyproject.toml`を編集してください。
`pytest` を用いたテストと各種リンターを用いた静的解析が可能です。
手順の詳細は [貢献者ガイド#テスト](./CONTRIBUTING.md#テスト), [貢献者ガイド#静的解析](./CONTRIBUTING.md#静的解析) を御覧ください。

### 依存関係

#### 更新

[Poetry](https://python-poetry.org/) を用いて依存ライブラリのバージョンを固定しています。
以下のコマンドで操作できます:

```bash
# パッケージを追加する場合
poetry add `パッケージ名`
poetry add --group dev `パッケージ名` # 開発依存の追加
poetry add --group build `パッケージ名` # ビルド依存の追加
# パッケージをアップデートする場合
poetry update `パッケージ名`
poetry update # 全部更新
# requirements.txtの更新
poetry export --without-hashes -o requirements.txt # こちらを更新する場合は下3つも更新する必要があります。
poetry export --without-hashes --with dev -o requirements-dev.txt
poetry export --without-hashes --with build -o requirements-build.txt
```

#### ライセンス

依存ライブラリは「コアビルド時にリンクして一体化しても、コア部のコード非公開 OK」なライセンスを持つ必要があります。
主要ライセンスの可否は以下の通りです。

- MIT/Apache/BSD-3: OK
- LGPL: OK (コアと動的分離されているため)
- GPL: NG (全関連コードの公開が必要なため)
依存関係は `poetry` で管理されています。また、導入可能な依存ライブラリにはライセンス上の制約があります。
詳細は [貢献者ガイド#パッケージ](./CONTRIBUTING.md#パッケージ) を御覧ください。

### マルチエンジン機能に関して

Expand All @@ -687,7 +615,7 @@ VOICEVOX ENGINE リポジトリを fork し、一部の機能を改造するの
改造すべき点はエンジン情報・キャラクター情報・音声合成の3点です。

エンジンの情報はルート直下のマニフェストファイル(`engine_manifest.json`)で管理されています。
この形式のマニフェストファイルはVOICEVOX API準拠エンジンに必須です
この形式のマニフェストファイルは VOICEVOX API 準拠エンジンに必須です
マニフェストファイル内の情報を見て適宜変更してください。
音声合成手法によっては、例えばモーフィング機能など、VOICEVOX と同じ機能を持つことができない場合があります。
その場合はマニフェストファイル内の`supported_features`内の情報を適宜変更してください。
Expand All @@ -713,29 +641,6 @@ VOICEVOX エディターにうまく読み込ませられないときは、エ

</details>

### API ドキュメントの確認

[API ドキュメント](https://voicevox.github.io/voicevox_engine/api/)(実体は`docs/api/index.html`)は自動で更新されます。
次のコマンドで API ドキュメントを手動で作成することができます。

```bash
PYTHONPATH=. python tools/make_docs.py
```

### GitHub Actions

#### Variables

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

#### Secrets

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

## 事例紹介

**[voicevox-client](https://github.com/voicevox-client) [@voicevox-client](https://github.com/voicevox-client)** ・・・ VOICEVOX ENGINE の各言語向け API ラッパー
Expand Down
Loading

0 comments on commit 1b37b1a

Please sign in to comment.