Skip to content

Commit

Permalink
Merge branch 'VOICEVOX:main' into redesign-help-osslicense-section
Browse files Browse the repository at this point in the history
  • Loading branch information
takusea authored Dec 2, 2023
2 parents d1768a2 + 7ec48c9 commit 08eaeb9
Show file tree
Hide file tree
Showing 17 changed files with 242 additions and 147 deletions.
3 changes: 2 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ LGPL_LICENSEを参照してください。

2. ソースコードの公開が不要な別ライセンス

別ライセンスを取得したい場合は、ヒホ(twitter: @hiho_karuta)に求めてください。
別ライセンスを取得したい場合は、ヒホに求めてください。
X アカウント: @hiho_karuta
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ npm run test-watch:unit # 監視モード
### ブラウザ End to End テスト

Electron の機能が不要な、UI や音声合成などの End to End テストを実行します。

> **Note**
> 一部のエンジンの設定を書き換えるテストは、CI(Github Actions)上でのみ実行されるようになっています。
Expand Down Expand Up @@ -201,4 +202,5 @@ npm scripts の `serve` や `electron:serve` などの開発ビルド下では
## ライセンス

LGPL v3 と、ソースコードの公開が不要な別ライセンスのデュアルライセンスです。
別ライセンスを取得したい場合は、ヒホ(twitter: [@hiho_karuta](https://twitter.com/hiho_karuta))に求めてください。
別ライセンスを取得したい場合は、ヒホに求めてください。
X アカウント: [@hiho_karuta](https://x.com/hiho_karuta)
10 changes: 5 additions & 5 deletions public/contact.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

## ご感想・ご要望

ぜひ Twitter にてハッシュタグ `#VOICEVOX` を付けてツイートしてください。開発の励みになります。
ぜひ X(旧 Twitter)にてハッシュタグ `#VOICEVOX` を付けてポストしてください。開発の励みになります。

## 不具合・バグ報告

以下の内容を添えてハッシュタグ `#VOICEVOX` を付けてツイートしていただくか、VOICEVOX 公式([@voicevox_pj](https://twitter.com/voicevox_pj))までご報告ください。
以下の内容を添えてハッシュタグ `#VOICEVOX` を付けてポストしていただくか、VOICEVOX 公式([@voicevox_pj](https://x.com/voicevox_pj))までご報告ください。

- 不具合の内容
- 再現手順(動画や写真があれば添付してください)
Expand All @@ -28,11 +28,11 @@

## その他

[Q&A](https://voicevox.hiroshiba.jp/qa) に掲載されていないご質問があれば VOICEVOX 公式([@voicevox_pj](https://twitter.com/voicevox_pj))にお問い合わせください。
[Q&A](https://voicevox.hiroshiba.jp/qa) に掲載されていないご質問があれば VOICEVOX 公式([@voicevox_pj](https://x.com/voicevox_pj))にお問い合わせください。

## クレジット

VOICEVOX ホームページ:[https://voicevox.hiroshiba.jp](https://voicevox.hiroshiba.jp)
Copyright ©︎ Hiroshiba Kazuyuki
VOICEVOX 公式:[@voicevox_pj](https://twitter.com/voicevox_pj)
開発者 Twitter[@hiho_karuta](https://twitter.com/hiho_karuta)
VOICEVOX 公式:[@voicevox_pj](https://x.com/voicevox_pj)
開発者:[@hiho_karuta](https://x.com/hiho_karuta)
32 changes: 17 additions & 15 deletions public/howtouse.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,11 @@ GPU をお持ちの方は、音声の生成がずっと速い GPU モードを
GPU モードを利用するには、GPU が必要です。
Linux は Nvidia 製 GPU のみに対応しています。

#### 音声のサンプリングレート

音声のサンプリングレートを変更して再生・保存します。
サンプリングレートを高くしても音声の品質は上がりません。

### 「操作」項目

#### パラメータの引き継ぎ
Expand Down Expand Up @@ -298,6 +303,14 @@ Linux は Nvidia 製 GPU のみに対応しています。

### 「高度な設定」項目

#### マルチエンジン機能

VOICEVOX API 準拠エンジンを VOICEVOX 内で利用できるようになります。
マルチエンジン機能をオンにしたあと、メニューにある「エンジン」の「エンジンの管理」に移動し、次のどちらかを実行すると利用できます。

- VOICEVOX API 準拠エンジンの VVPP ファイルをインストールする
- VOICEVOX 系ソフトウェア内のエンジンのパスを指定する

#### 音声をステレオ化

音声をモノラルからステレオに変換して再生・保存します。
Expand All @@ -306,11 +319,6 @@ Linux は Nvidia 製 GPU のみに対応しています。

音声を再生するデバイスを変更できます。

#### 音声のサンプリングレート

音声のサンプリングレートを変更して再生・保存します。
サンプリングレートを高くしても音声の品質は上がりません。

### 「実験的機能」項目

開発中の便利機能を利用することができます。
Expand All @@ -333,13 +341,7 @@ Linux は Nvidia 製 GPU のみに対応しています。
対応している音声を混ぜてモーフィングした音声を合成できるようになります。
2つの音声を一度生成してから、音声を機械的に分析・再合成する後処理を行うことで実現しています。

#### マルチエンジン機能

VOICEVOX 以外の VOICEVOX API 準拠エンジンを VOICEVOX 内で利用できるようになります。
マルチエンジン機能をオンにしたあと、メニューにある「エンジン」の「エンジンの管理」に移動し、次のどちらかを実行すると利用できます。

- VOICEVOX API 準拠エンジンの VVPP ファイルをインストールする
- VOICEVOX 系ソフトウェア内のエンジンのパスを指定する
### 「データ収集」項目

#### ソフトウェア利用状況のデータ収集を許可する

Expand Down Expand Up @@ -372,8 +374,8 @@ ZIP ファイルを解凍した場合、ダウンロードした ZIP ファイ

## ご感想・ご要望・バグ報告など

ご感想・ご要望は、ぜひ Twitter にてハッシュタグ `#VOICEVOX` を付けてツイートしてください。開発の励みになります。
ご感想・ご要望は、ぜひ X(旧 Twitter)にてハッシュタグ `#VOICEVOX` を付けてポストしてください。開発の励みになります。

うまく動かない場合や不具合を見つけられた方は、Twitter にて不具合をハッシュタグ `#VOICEVOX` を付けてツイートしていただくか、VOICEVOX 公式([@voicevox_pj](https://twitter.com/voicevox_pj))までご報告ください。
うまく動かない場合や不具合を見つけられた方は、X にて不具合をハッシュタグ `#VOICEVOX` を付けてポストしていただくか、VOICEVOX 公式([@voicevox_pj](https://x.com/voicevox_pj))までご報告ください。

その他、 Q&A に掲載されていないご質問があれば VOICEVOX 公式([@voicevox_pj](https://twitter.com/voicevox_pj))にお問い合わせください。
その他、 Q&A に掲載されていないご質問があれば VOICEVOX 公式([@voicevox_pj](https://x.com/voicevox_pj))にお問い合わせください。
12 changes: 6 additions & 6 deletions public/qAndA.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ DirectML 対応の GPU を搭載した Windows PC と、Nvidia 製 GPU 搭載の
### Q. 使い方がわかりません

[使い方](https://voicevox.hiroshiba.jp/how_to_use) Web ページか、ソフトウェアのヘルプからご確認ください。
わからないところがあれば Twitter にて `#VOICEVOX` を付けてツイートすると、解決策を教えてくれる方がいらっしゃるかもしれません。
わからないところがあれば X(旧 Twitter)にて `#VOICEVOX` を付けてポストすると、解決策を教えてくれる方がいらっしゃるかもしれません。

### Q. オフラインのパソコンで使用できますか?

Expand All @@ -84,8 +84,8 @@ DirectML 対応の GPU を搭載した Windows PC と、Nvidia 製 GPU 搭載の

### Q. バグを見つけました。どこに報告すれば良いですか?

バグを見つけられた方はツイッターにてご報告いただけると助かります
VOICEVOX Twitter アカウント [@voicevox_pj](https://twitter.com/voicevox_pj)
バグを見つけられた方は X にてご報告いただけると助かります
VOICEVOX X アカウント [@voicevox_pj](https://x.com/voicevox_pj)

### Q. バージョンアップすると表示がおかしくなりました

Expand Down Expand Up @@ -218,8 +218,8 @@ VOICEVOX は、キャラクターとソフトウェアで権利者が異なり

### Q. 問い合わせ先を教えてください

ご感想・ご要望は、ぜひ Twitter にてハッシュタグ `#VOICEVOX` を付けてツイートしてください。開発の励みになります。
ご感想・ご要望は、ぜひ X(旧 Twitter)にてハッシュタグ `#VOICEVOX` を付けてポストしてください。開発の励みになります。

うまく動かない場合や不具合を見つけられた方は、Twitter にて不具合をハッシュタグ `#VOICEVOX` を付けてツイートしていただくか、VOICEVOX 公式([@voicevox_pj](https://twitter.com/voicevox_pj))までご報告ください。
うまく動かない場合や不具合を見つけられた方は、X にて不具合をハッシュタグ `#VOICEVOX` を付けてポストしていただくか、VOICEVOX 公式([@voicevox_pj](https://x.com/voicevox_pj))までご報告ください。

その他、 Q&A に掲載されていないご質問があれば VOICEVOX 公式([@voicevox_pj](https://twitter.com/voicevox_pj))にお問い合わせください。
その他、 Q&A に掲載されていないご質問があれば VOICEVOX 公式([@voicevox_pj](https://x.com/voicevox_pj))にお問い合わせください。
10 changes: 10 additions & 0 deletions public/updateInfos.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
[
{
"version": "0.14.10",
"descriptions": ["初回起動及び0.13からアップデートできないバグを修正"],
"contributors": ["sevenc-nanashi"]
},
{
"version": "0.14.9",
"descriptions": ["マルチエンジン機能を通常機能に"],
"contributors": []
},
{
"version": "0.14.8",
"descriptions": [
Expand Down
2 changes: 1 addition & 1 deletion src/background.ts
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ async function installVvppEngineWithWarning({
* 無効だった場合はダイアログを表示してfalseを返す。
*/
function checkMultiEngineEnabled(): boolean {
const enabled = configManager.get("experimentalSetting").enableMultiEngine;
const enabled = configManager.get("enableMultiEngine");
if (!enabled) {
dialog.showMessageBoxSync(win, {
type: "info",
Expand Down
61 changes: 47 additions & 14 deletions src/components/AudioCell.vue
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
文章が長いと正常に動作しない可能性があります。
句読点の位置で文章を分割してください。
</template>
<template v-if="deleteButtonEnable" #after>
<template v-if="enableDeleteButton" #after>
<q-btn
round
flat
Expand Down Expand Up @@ -436,33 +436,66 @@ const moveDownCell = moveCell(1);
// 消去
const willRemove = ref(false);
const removeCell = async () => {
// 1つだけの時は削除せず
if (audioKeys.value.length > 1) {
let audioKeysToDelete: AudioKey[];
if (
isMultiSelectEnabled.value &&
store.getters.SELECTED_AUDIO_KEYS.includes(props.audioKey)
) {
audioKeysToDelete = store.getters.SELECTED_AUDIO_KEYS;
} else {
audioKeysToDelete = [props.audioKey];
}
// 全て消える場合はなにもしない
if (audioKeys.value.length > audioKeysToDelete.length) {
// フォーカスを外したりREMOVEしたりすると、
// テキストフィールドのchangeイベントが非同期に飛んでundefinedエラーになる
// エラー防止のためにまずwillRemoveフラグを建てる
willRemove.value = true;
const index = audioKeys.value.indexOf(props.audioKey);
if (index > 0) {
emit("focusCell", {
audioKey: audioKeys.value[index - 1],
});
} else {
if (audioKeysToDelete.includes(props.audioKey)) {
// 選択するAudioKeyを決定する。
// - 削除ボタンが押されたAudioCellから開始
// - 残るAudioCellを上方向に探す
// - 上方向になかったら下方向に探す
// - なかったらエラー(Unreachable)
const startIndex = audioKeys.value.indexOf(props.audioKey);
let willNextFocusIndex = -1;
for (let i = startIndex; i >= 0; i--) {
if (!audioKeysToDelete.includes(audioKeys.value[i])) {
willNextFocusIndex = i;
break;
}
}
if (willNextFocusIndex === -1) {
for (let i = startIndex; i < audioKeys.value.length; i++) {
if (!audioKeysToDelete.includes(audioKeys.value[i])) {
willNextFocusIndex = i;
break;
}
}
}
if (willNextFocusIndex === -1) {
throw new Error(
"次に選択するaudioKeyが見付かりませんでした(unreachable)"
);
}
emit("focusCell", {
audioKey: audioKeys.value[index + 1],
audioKey: audioKeys.value[willNextFocusIndex],
});
}
store.dispatch("COMMAND_REMOVE_AUDIO_ITEM", {
audioKey: props.audioKey,
store.dispatch("COMMAND_MULTI_REMOVE_AUDIO_ITEM", {
audioKeys: audioKeysToDelete,
});
}
};
// 削除ボタンの有効/無効判定
const deleteButtonEnable = computed(() => {
return 1 < audioKeys.value.length;
const enableDeleteButton = computed(() => {
return (
store.state.audioKeys.length >
(isMultiSelectEnabled.value ? store.getters.SELECTED_AUDIO_KEYS.length : 1)
);
});
// テキスト編集エリアの右クリック
Expand Down
17 changes: 10 additions & 7 deletions src/components/AudioDetail.vue
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,11 @@ const hotkeyMap = new Map<HotkeyAction, () => HotkeyReturnType>([
"全体のイントネーションをリセット",
() => {
if (!uiLocked.value && store.getters.ACTIVE_AUDIO_KEY) {
store.dispatch("COMMAND_RESET_MORA_PITCH_AND_LENGTH", {
audioKey: store.getters.ACTIVE_AUDIO_KEY,
const audioKeys = store.state.experimentalSetting.enableMultiSelect
? store.getters.SELECTED_AUDIO_KEYS
: [store.getters.ACTIVE_AUDIO_KEY];
store.dispatch("COMMAND_MULTI_RESET_MORA_PITCH_AND_LENGTH", {
audioKeys,
});
}
},
Expand All @@ -160,7 +163,7 @@ const hotkeyMap = new Map<HotkeyAction, () => HotkeyReturnType>([
if (
!uiLocked.value &&
store.getters.ACTIVE_AUDIO_KEY &&
store.getters.AUDIO_PLAY_START_POINT !== undefined
store.getters.AUDIO_PLAY_START_POINT != undefined
) {
store.dispatch("COMMAND_RESET_SELECTED_MORA_PITCH_AND_LENGTH", {
audioKey: store.getters.ACTIVE_AUDIO_KEY,
Expand Down Expand Up @@ -273,7 +276,7 @@ const accentPhraseComponents = ref<InstanceType<typeof AccentPhrase>[]>([]);
const scrollToActivePoint = () => {
if (
activePoint.value === undefined ||
activePoint.value == undefined ||
!audioDetail.value ||
accentPhraseComponents.value.length === 0
)
Expand Down Expand Up @@ -320,7 +323,7 @@ watch(nowPlaying, async (newState) => {
// それに合わせてフォーカスするアクセント句を変えていく
const focusAccentPhrase = () => {
const currentTime = store.getters.ACTIVE_AUDIO_ELEM_CURRENT_TIME;
if (currentTime === undefined) {
if (currentTime == undefined) {
throw new Error("currentTime === undefined)");
}
const playingAccentPhraseIndex =
Expand All @@ -343,13 +346,13 @@ watch(nowPlaying, async (newState) => {
requestId = window.requestAnimationFrame(focusAccentPhrase);
};
requestId = window.requestAnimationFrame(focusAccentPhrase);
} else if (requestId !== undefined) {
} else if (requestId != undefined) {
window.cancelAnimationFrame(requestId);
requestId = undefined;
// startPointがundefinedの場合、一旦最初のアクセント句までスクロール、その後activePointの選択を解除(undefinedに)する
activePoint.value = startPoint.value ?? 0;
scrollToActivePoint();
if (startPoint.value === undefined) activePoint.value = startPoint.value;
if (startPoint.value == undefined) activePoint.value = startPoint.value;
}
});
Expand Down
4 changes: 1 addition & 3 deletions src/components/MenuBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,7 @@ const isFullscreen = computed(() => store.getters.IS_FULLSCREEN);
const engineIds = computed(() => store.state.engineIds);
const engineInfos = computed(() => store.state.engineInfos);
const engineManifests = computed(() => store.state.engineManifests);
const enableMultiEngine = computed(
() => store.state.experimentalSetting.enableMultiEngine
);
const enableMultiEngine = computed(() => store.state.enableMultiEngine);
const titleText = computed(
() =>
Expand Down
Loading

0 comments on commit 08eaeb9

Please sign in to comment.