Skip to content

Commit

Permalink
Merge: upstreamからマージ (#46)
Browse files Browse the repository at this point in the history
  • Loading branch information
Hiroshiba authored Mar 30, 2024
2 parents dc9cf95 + 7d94c31 commit c30afd0
Show file tree
Hide file tree
Showing 52 changed files with 2,082 additions and 620 deletions.
14 changes: 7 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ on:

env:
VOICEVOX_ENGINE_REPO_URL: "https://github.com/VOICEVOX/voicevox_engine"
VOICEVOX_ENGINE_VERSION: 0.16.0
VOICEVOX_RESOURCE_VERSION: 0.16.0
VOICEVOX_ENGINE_VERSION: 0.18.0
VOICEVOX_RESOURCE_VERSION: 0.18.0
VOICEVOX_EDITOR_VERSION:
|- # releaseタグ名か、workflow_dispatchでのバージョン名か、999.999.999-developが入る
${{ github.event.release.tag_name || github.event.inputs.version || '999.999.999-develop' }}
Expand Down Expand Up @@ -316,7 +316,7 @@ jobs:
rm $name.tar
- name: Upload Linux tar.gz (without nvidia) to Artifacts
if: startsWith(matrix.artifact_name, 'linux-') && !contains(matrix.artifact_name, 'nvidia') && github.event.inputs.upload_artifact
if: startsWith(matrix.artifact_name, 'linux-') && !contains(matrix.artifact_name, 'nvidia') && github.event.inputs.upload_artifact == 'true'
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.artifact_name }}-targz
Expand Down Expand Up @@ -346,7 +346,7 @@ jobs:
7z rn $name.zip prepackage/ VOICEVOX/
- name: Upload Windows & Mac zip (without nvidia) to Artifacts
if: (startsWith(matrix.artifact_name, 'windows-') || startsWith(matrix.artifact_name, 'macos-')) && !contains(matrix.artifact_name, 'nvidia') && github.event.inputs.upload_artifact
if: (startsWith(matrix.artifact_name, 'windows-') || startsWith(matrix.artifact_name, 'macos-')) && !contains(matrix.artifact_name, 'nvidia') && github.event.inputs.upload_artifact == 'true'
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.artifact_name }}-zip
Expand Down Expand Up @@ -435,7 +435,7 @@ jobs:
done
- name: Upload Linux AppImage split to Artifacts
if: endsWith(matrix.installer_artifact_name, '-appimage') && github.event.inputs.upload_artifact
if: endsWith(matrix.installer_artifact_name, '-appimage') && github.event.inputs.upload_artifact == 'true'
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.installer_artifact_name }}-release
Expand All @@ -453,7 +453,7 @@ jobs:
target_commitish: ${{ github.sha }}

- name: Upload macOS dmg to Artifacts
if: endsWith(matrix.installer_artifact_name, '-dmg') && github.event.inputs.upload_artifact
if: endsWith(matrix.installer_artifact_name, '-dmg') && github.event.inputs.upload_artifact == 'true'
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.installer_artifact_name }}-release
Expand All @@ -471,7 +471,7 @@ jobs:
target_commitish: ${{ github.sha }}

- name: Upload Windows NSIS Web to Artifacts
if: endsWith(matrix.installer_artifact_name, '-nsis-web') && github.event.inputs.upload_artifact
if: endsWith(matrix.installer_artifact_name, '-nsis-web') && github.event.inputs.upload_artifact == 'true'
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.installer_artifact_name }}-release
Expand Down
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ npm run electron:serve
npm run browser:serve
```

また、main ブランチのビルド結果がこちらにデプロイされています <https://voicevox-browser-dev.netlify.app/#/talk>
また、main ブランチのビルド結果がこちらにデプロイされています <https://voicevox-browser-dev.netlify.app/>
今はローカル PC 上で音声合成エンジンを起動する必要があります。

## ビルド
Expand All @@ -167,6 +167,11 @@ npm run browser:serve
npm run electron:build
```

### Github Actions でビルド

fork したリポジトリで Actions を ON にし、workflow_dispatch で`build.yml`を起動すればビルドできます。
成果物は Release にアップロードされます。

## テスト

### 単体テスト
Expand Down Expand Up @@ -194,7 +199,7 @@ Playwright を使用しているためテストパターンを生成すること
**ブラウザ版を起動している状態で**以下のコマンドを実行してください。

```bash
npx playwright codegen http://localhost:5173/#/talk --viewport-size=800,600
npx playwright codegen http://localhost:5173/ --viewport-size=1024,630
```

詳細は [Playwright ドキュメントの Test generator](https://playwright.dev/docs/codegen-intro) を参照してください。
Expand Down
6 changes: 3 additions & 3 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ dependencies {

// TODO: ちゃんと公開されたらそれに置き換える
implementation urlZipFile(
"voicevoxcore-android_0.15.0-preview.15",
"jp/hiroshiba/voicevoxcore/voicevoxcore-android/0.15.0-preview.15/voicevoxcore-android-0.15.0-preview.15.aar",
"https://github.com/VOICEVOX/voicevox_core/releases/download/0.15.0-preview.15/java_packages.zip"
"voicevoxcore-android_0.15.0-preview.16",
"jp/hiroshiba/voicevoxcore/voicevoxcore-android/0.15.0-preview.16/voicevoxcore-android-0.15.0-preview.16.aar",
"https://github.com/VOICEVOX/voicevox_core/releases/download/0.15.0-preview.16/java_packages.zip"
)

// https://mvnrepository.com/artifact/com.google.code.gson/gson
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class CorePlugin : Plugin() {
return
}
vvms.sortWith(compareBy {
it.name.split(".")[0].length
it.name.split(".")[0].toInt()
})
voiceModels = vvms.map {
VoiceModel(it.absolutePath)
Expand All @@ -102,6 +102,7 @@ class CorePlugin : Plugin() {
tempDir.mkdirs()
Os.setenv("TMPDIR", tempDir.absolutePath, true)

Log.i("CorePlugin", "Ready")
call.resolve()
} catch (e: Exception) {
call.reject(e.message)
Expand Down Expand Up @@ -287,6 +288,10 @@ class CorePlugin : Plugin() {

try {
val words = gson.fromJson(wordsJson, Array<UserDict.Word>::class.java).asList()
if (words.isEmpty()) {
call.resolve()
return
}
val userDict = UserDict()
words.forEach { word ->
userDict.addWord(word)
Expand Down
1 change: 0 additions & 1 deletion docs/コードの歩き方.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ TODO
- styles ディレクトリ ・・・ CSS や SCSS などのディレクトリ。
- infrastructures ディレクトリ ・・・ UI 用のコードと UI 以外のコードを跨ぐときに一枚かませたいときのためのコードのディレクトリ。
- openapi ディレクトリ ・・・ エンジンの API を叩くためのコードのディレクトリ。OpenAPI で自動生成される。
- router ディレクトリ ・・・ Vue Router 用のディレクトリ。
- helpers ディレクトリ ・・・ 便利な関数を置くディレクトリ。
- shared ディレクトリ ・・・ UI と Electron 両方から参照されるコードを置くディレクトリ。
- public
Expand Down
82 changes: 82 additions & 0 deletions docs/サードパーティ開発者の方へ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# サードパーティ開発者の方へ

## サードパーティが利用するときの注意

### VOICEVOXの基本動作について

VOICEVOXアプリケーションは、大まかに分けるとユーザに見えるGUI(フロントエンド部分)と、音声合成を担当するエンジン(バックエンド部分)で構成されています。通常、VOICEVOXのGUIが起動されると、見えない形でエンジンが(マルチエンジンとして登録されている数だけ)順番に立ち上がる仕組みになっています。サードパーティが音声合成機能を使うためには、裏で立ち上がっているエンジンにアクセスする必要があります。

### VOICEVOXへのアクセスについて

VOICEVOXのエンジンを使用するためには、APIを用いる必要があります。特別な理由がない限り、API以外でのアクセスを避けるようにしてください。(例えば、ファイルを直接書き換えるなどの動作は不具合を引き起こす可能性が高くなるほか、VOICEVOXが事前テストで動作確認できてないような望まない動作を引き起こす可能性があります。)

基本的にVOICEVOXで音声を合成するために必要なAPIはすでに用意されていますが、もしAPIで実現できない機能/操作がある場合は、VOIEVOX の Issue ページにてAPIの実装提案を行う事をお勧めします。

### APIのアクセス先について

HTTP経由でAPIにアクセスできます。

* VOICEVOXエンジンがデフォルトで使用するポート番号は、内部で決まっています(例:50021/tcp)。
* 他のアプリケーションが同じポート番号を使用している場合、競合が発生するため別のポートを開きます。
* 最終的に開いたポート番号については、情報ファイルを参照して特定してください。
* 動的に番号が変更されるのは、VOICEVOX v0.16以降の機能です。

### ランタイム情報ファイル(以下情報ファイル)について

サードパーティが必要な情報を手に入れるために、「情報ファイル」というものが生成されるようになっています。サードパーティの製作者は、まずはこのファイルを参照してアクセス先を決定してください。

また、VOICEVOX内でエンジンが再起動した場合に、通信ポート番号が変わる可能性があります。サードパーティ側でAPI使用中に突如通信失敗が発生した場合は、このファイルが更新されているか確認するようにしてください。

(なお、古いVOICEVOXではこのファイル生成機能が実装されていません。また、動的にポート番号を決定しないバージョンもあります。下位互換性を保つためには、このファイルがない場合も想定してください)

## 情報ファイルについて

### ファイルの場所

ファイルは下記の場所にあります。

|OS |ファイルパス |
|----------------|-----------------------------------------------------------------------------|
|Windows |C:\Users\(ユーザー名)\AppData\Roaming\voicevox\runtime-info.json |
|MacOS |/Users/(ユーザー名)/Library/Application Support/voicevox/runtime-info.json |

なお、Windows のプロファイル設定次第では、上記ファイルの配置が変更されることがあります。確実に場所を特定するためには、環境変数 ``APPDATA`` を用いて、Roamingフォルダの位置を特定してください。

### ファイルの中身と意味

ファイル自体はJSON形式になっています。構造としては下記のような形になります。

```JSONC
{
//[string] VOICEVOXのバージョン番号
"appVersion": "xxx.yyy.zzz",

//[number] ファイル構造バージョン(仕様変更毎にインクリメントされる)
"formatVersion": 1,

//エンジンデータ(起動している数だけ)
"engineInfos": [
{
//[string] エンジン通称
"name": "engine1",

//[string] APIエンドポイント
"url": "http://127.0.0.1:50021",

//[UUID] エンジン識別用のUUID
"uuid": "00000000-0000-0000-0000-000000000001",
},
{
"name": "engine2",
"url": "http://127.0.0.1:50121",
"uuid": "00000000-0000-0000-0000-000000000002",
},
]
}
```

### 生成されるタイミング

* エンジンが起動(もしくは再起動)するタイミングでファイルが生成、更新されます。
* 何らかの理由でファイルの書き込み権が取得できなかった場合には更新されません。(更新のタイミングで他ツールがファイルを開いていた場合など)
* この生成タイミングはファイルバージョン1の実装であり、開発の過程で変更される可能性があります。
3 changes: 2 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@
"tree-kill": "1.2.2",
"uuid": "9.0.0",
"vue": "3.2.45",
"vue-router": "4.0.8",
"vuedraggable": "4.1.0",
"vuex": "4.0.2",
"zod": "3.22.4"
Expand Down
19 changes: 19 additions & 0 deletions public/howtouse.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,25 @@ VOICEVOX では、歌声合成機能がプロトタイプ版として提供さ

ソング機能は鋭意制作中です。フィードバックをお待ちしています。

### 音域調整

デフォルトの設定だと、声が低いキャラクターがうまく歌えないことがあります。
そのような場合は「音域調整」を`-12``-24`などにすることで、音域を低めに合わせることができます。

将来的にこの値は自動設定される予定です。

### 声量調整

デフォルトの設定だと、キャラクターによっては声が少しかすれてしまうことがあります。
そのような場合は「声量調整」を`5``10`などにすることで、発声をより強くすることができます。

将来的にこの値は自動設定される予定です。

### ソング機能のよくある質問

Q. 赤くなって声が再生されない
A. なにかしらのエラー状態を示しています。現在のバージョンでは、1つのノート(音符)につき日本語1文字分のみ入力できます。またノートが重なっていてもエラーとなります。

## オプション

「設定」の「オプション」でいろいろな設定を変更することができます。
Expand Down
68 changes: 68 additions & 0 deletions public/updateInfos.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,72 @@
[
{
"version": "0.18.0",
"descriptions": [
"キャラクター「WhiteCUL」「後鬼」「No.7」のハミングを追加",
"キャラクター「ちび式じい」「櫻歌ミコ」「小夜/SAYO」「ナースロボ_タイプT」のハミングを追加",
"キャラクター「四国めたん」「ずんだもん」「波音リツ」のハミングスタイルを追加",
"ソング:ピッチ表示機能",
"ソング:矩形選択を追加",
"ソング:ノートのエラー時にツールチップ表示",
"デフォルトで全てのCPUを使うことがあるバグを修正",
"ソング:MIDIインポート時にトラックを選択可能に",
"ソング:USTファイルのインポート機能",
"ソング:コピー&ペースト"
],
"contributors": [
"Hiroshiba",
"romot-co",
"sabonerune",
"sevenc-nanashi",
"sigprogramming",
"siketyan",
"tarepan",
"tomoish",
"weweweok"
]
},
{
"version": "0.17.2",
"descriptions": [
"プロジェクト読み込み時に声量調整などが反映されない問題を解決"
],
"contributors": ["Hiroshiba"]
},
{
"version": "0.17.1",
"descriptions": [
"キャラクター「玄野武宏」「白上虎太郎」「青山龍星」「冥鳴ひまり」「九州そら」のハミングを追加",
"キャラクター「もち子さん」「剣崎雌雄」のハミングを追加",
"音域調整・声量調整機能",
"バグ修正"
],
"contributors": ["Hiroshiba", "sigprogramming"]
},
{
"version": "0.17.0",
"descriptions": [
"サードパーティアプリ向けのランタイム情報ファイルを出力",
"ソング:プロジェクトファイルに保存",
"トーク:連続再生中に裏で音声合成",
"ソング:元に戻す・やり直す機能",
"ソング:ショートカットキー機能",
"開発環境の向上",
"バグ修正"
],
"contributors": [
"cm-ayf",
"Hiroshiba",
"nmori",
"P0ngCh4ng",
"romot-co",
"sabonerune",
"sevenc-nanashi",
"sigprogramming",
"tsym77yoshi",
"weweweok",
"y-chan"
]
},
{
"version": "0.16.1",
"descriptions": ["マルチエンジン稼働時に起動しないバグを修正"],
Expand Down
14 changes: 14 additions & 0 deletions src/backend/common/ConfigManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,20 @@ const migrations: [string, (store: Record<string, unknown>) => unknown][] = [
return config;
},
],
[
">=0.17",
(config) => {
// 書き出し先のディレクトリが空文字の場合書き出し先固定を無効化する
// FIXME: 勝手に書き換えるのは少し不親切なので、ダイアログで書き換えたことを案内する
const savingSetting = config.savingSetting as ConfigType["savingSetting"];
if (
savingSetting.fixedExportEnabled &&
savingSetting.fixedExportDir === ""
) {
savingSetting.fixedExportEnabled = false;
}
},
],
];

export type Metadata = {
Expand Down
5 changes: 2 additions & 3 deletions src/backend/electron/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -364,8 +364,8 @@ let filePathOnMac: string | undefined = undefined;
// create window
async function createWindow() {
const mainWindowState = windowStateKeeper({
defaultWidth: 800,
defaultHeight: 600,
defaultWidth: 1024,
defaultHeight: 630,
});

const currentTheme = configManager.get("currentTheme");
Expand Down Expand Up @@ -470,7 +470,6 @@ async function loadUrl(obj: {
projectFilePath?: string;
}) {
const fragment =
"#/talk" +
`?isMultiEngineOffMode=${obj?.isMultiEngineOffMode ?? false}` +
`&projectFilePath=${obj?.projectFilePath ?? ""}`;
return win.loadURL(`${firstUrl}${fragment}`);
Expand Down
Loading

0 comments on commit c30afd0

Please sign in to comment.