store.state.engineIds);
const engineInfos = computed(() => store.state.engineInfos);
+// 新規
+// QBtnToggleはv-modelがの変更がsetに結びつく設計になってるみたい
+// Vuexの変更がgetで反映される
+// それらがcomputedによって自動反映
+const switchPauseLengthMode = computed({
+ get: () => store.state.switchPauseLengthMode,
+ set: (switchPauseLengthMode: SwitchPauseLengthMode) => {
+ store.dispatch("SET_SWITCH_PAUSE_LENGTH_MODE", {
+ switchPauseLengthMode,
+ });
+ },
+});
const inheritAudioInfoMode = computed(() => store.state.inheritAudioInfo);
const activePointScrollMode = computed({
get: () => store.state.activePointScrollMode,
diff --git a/src/components/Talk/AccentPhrase.vue b/src/components/Talk/AccentPhrase.vue
index dcc82d72c7..f026f4c0e2 100644
--- a/src/components/Talk/AccentPhrase.vue
+++ b/src/components/Talk/AccentPhrase.vue
@@ -48,7 +48,7 @@
class="q-mb-sm pitch-cell"
:style="{ 'grid-column': `${moraIndex * 2 + 1} / span 1` }"
>
-
+
-
+
-
+
{
});
const handleChangePronounce = (newPronunciation: string) => {
+ console.log("handleChangePronounce");
let popUntilPause = false;
newPronunciation = newPronunciation
.replace(/,/g, "、")
diff --git a/src/components/Talk/AudioCell.vue b/src/components/Talk/AudioCell.vue
index a69fc56a6e..690542c947 100644
--- a/src/components/Talk/AudioCell.vue
+++ b/src/components/Talk/AudioCell.vue
@@ -307,6 +307,7 @@ watch(
);
const pushAudioTextIfNeeded = async (event?: KeyboardEvent) => {
+ console.log("pushAudioTextIfNeeded");
if (event && event.isComposing) return;
if (!willRemove.value && isChangeFlag.value && !willFocusOrBlur.value) {
isChangeFlag.value = false;
diff --git a/src/components/Talk/AudioDetail.vue b/src/components/Talk/AudioDetail.vue
index f44aad85f0..957e886181 100644
--- a/src/components/Talk/AudioDetail.vue
+++ b/src/components/Talk/AudioDetail.vue
@@ -242,6 +242,7 @@ watch(accentPhrases, async () => {
// audio play
const play = async () => {
+ console.log("play in AudioDetail");
try {
await store.dispatch("PLAY_AUDIO", {
audioKey: props.activeAudioKey,
diff --git a/src/components/Talk/AudioInfo.vue b/src/components/Talk/AudioInfo.vue
index 8250cf3296..b3da96e3cd 100644
--- a/src/components/Talk/AudioInfo.vue
+++ b/src/components/Talk/AudioInfo.vue
@@ -324,14 +324,22 @@ const props = defineProps<{
}>();
const store = useStore();
+
const { info } = createLogger("AudioInfo");
// accent phrase
const uiLocked = computed(() => store.getters.UI_LOCKED);
const audioItem = computed(() => store.state.audioItems[props.activeAudioKey]);
+
const query = computed(() => audioItem.value?.query);
+// 文内無音の指定方式 "SCALE" || "ABSOLUTE"
+// 折り返さないとESLintにおこられる
+const switchPauseLengthMode = computed(() => {
+ return store.state.switchPauseLengthMode;
+});
+
const supportedFeatures = computed(
() =>
(store.state.engineIds.some(
@@ -353,126 +361,183 @@ const selectedAudioKeys = computed(() =>
? store.getters.SELECTED_AUDIO_KEYS
: [props.activeAudioKey],
);
-const parameters = computed(() => [
- {
- label: "話速",
- slider: previewSliderHelper({
- modelValue: () => query.value?.speedScale ?? null,
- disable: () =>
- uiLocked.value || supportedFeatures.value?.adjustSpeedScale === false,
- max: SLIDER_PARAMETERS.SPEED.max,
- min: SLIDER_PARAMETERS.SPEED.min,
- step: SLIDER_PARAMETERS.SPEED.step,
- scrollStep: SLIDER_PARAMETERS.SPEED.scrollStep,
- scrollMinStep: SLIDER_PARAMETERS.SPEED.scrollMinStep,
- onChange: (speedScale: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_SPEED_SCALE", {
- audioKeys: selectedAudioKeys.value,
- speedScale,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_SPEED_SCALE",
- key: "speedScale",
- },
- {
- label: "音高",
- slider: previewSliderHelper({
- modelValue: () => query.value?.pitchScale ?? null,
- disable: () =>
- uiLocked.value || supportedFeatures.value?.adjustPitchScale === false,
- max: SLIDER_PARAMETERS.PITCH.max,
- min: SLIDER_PARAMETERS.PITCH.min,
- step: SLIDER_PARAMETERS.PITCH.step,
- scrollStep: SLIDER_PARAMETERS.PITCH.scrollStep,
- onChange: (pitchScale: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_PITCH_SCALE", {
- audioKeys: selectedAudioKeys.value,
- pitchScale,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_PITCH_SCALE",
- key: "pitchScale",
- },
- {
- label: "抑揚",
- slider: previewSliderHelper({
- modelValue: () => query.value?.intonationScale ?? null,
- disable: () =>
- uiLocked.value ||
- supportedFeatures.value?.adjustIntonationScale === false,
- max: SLIDER_PARAMETERS.INTONATION.max,
- min: SLIDER_PARAMETERS.INTONATION.min,
- step: SLIDER_PARAMETERS.INTONATION.step,
- scrollStep: SLIDER_PARAMETERS.INTONATION.scrollStep,
- scrollMinStep: SLIDER_PARAMETERS.INTONATION.scrollMinStep,
- onChange: (intonationScale: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_INTONATION_SCALE", {
- audioKeys: selectedAudioKeys.value,
- intonationScale,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_INTONATION_SCALE",
- key: "intonationScale",
- },
- {
- label: "音量",
- slider: previewSliderHelper({
- modelValue: () => query.value?.volumeScale ?? null,
- disable: () =>
- uiLocked.value || supportedFeatures.value?.adjustVolumeScale === false,
- max: SLIDER_PARAMETERS.VOLUME.max,
- min: SLIDER_PARAMETERS.VOLUME.min,
- step: SLIDER_PARAMETERS.VOLUME.step,
- scrollStep: SLIDER_PARAMETERS.VOLUME.scrollStep,
- scrollMinStep: SLIDER_PARAMETERS.VOLUME.scrollMinStep,
- onChange: (volumeScale: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_VOLUME_SCALE", {
- audioKeys: selectedAudioKeys.value,
- volumeScale,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_VOLUME_SCALE",
- key: "volumeScale",
- },
- {
- label: "開始無音",
- slider: previewSliderHelper({
- modelValue: () => query.value?.prePhonemeLength ?? null,
- disable: () => uiLocked.value,
- max: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.max,
- min: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.min,
- step: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.step,
- scrollStep: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.scrollStep,
- scrollMinStep: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.scrollMinStep,
- onChange: (prePhonemeLength: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_PRE_PHONEME_LENGTH", {
- audioKeys: selectedAudioKeys.value,
- prePhonemeLength,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_PRE_PHONEME_LENGTH",
- key: "prePhonemeLength",
- },
- {
- label: "終了無音",
- slider: previewSliderHelper({
- modelValue: () => query.value?.postPhonemeLength ?? null,
- disable: () => uiLocked.value,
- max: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.max,
- min: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.min,
- step: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.step,
- scrollStep: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.scrollStep,
- scrollMinStep: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.scrollMinStep,
- onChange: (postPhonemeLength: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_POST_PHONEME_LENGTH", {
- audioKeys: selectedAudioKeys.value,
- postPhonemeLength,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_POST_PHONEME_LENGTH",
- key: "postPhonemeLength",
- },
-]);
+
+const plParam: Parameter = {
+ label: "文内無音",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.pauseLength ?? null,
+ disable: () => uiLocked.value,
+ max: SLIDER_PARAMETERS.PAUSE_LENGTH.max,
+ min: SLIDER_PARAMETERS.PAUSE_LENGTH.min,
+ step: SLIDER_PARAMETERS.PAUSE_LENGTH.step,
+ scrollStep: SLIDER_PARAMETERS.PAUSE_LENGTH.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.PAUSE_LENGTH.scrollMinStep,
+ onChange: (pauseLength: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH", {
+ audioKeys: selectedAudioKeys.value,
+ pauseLength,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH",
+ key: "pauseLength",
+};
+
+const plsParam: Parameter = {
+ label: "文内無音",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.pauseLengthScale ?? null,
+ disable: () => uiLocked.value,
+ max: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.max,
+ min: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.min,
+ step: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.step,
+ scrollStep: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.scrollMinStep,
+ onChange: (pauseLengthScale: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE", {
+ audioKeys: selectedAudioKeys.value,
+ pauseLengthScale,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH",
+ key: "pauseLength",
+};
+
+// 文内無音はひとまず倍率verを表示 のち必要に応じ絶対値に切替
+// 泥臭くなっちゃったかも
+const parameters = computed(() => {
+ const baseParam: Parameter[] = [
+ {
+ label: "話速",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.speedScale ?? null,
+ disable: () =>
+ uiLocked.value || supportedFeatures.value?.adjustSpeedScale === false,
+ max: SLIDER_PARAMETERS.SPEED.max,
+ min: SLIDER_PARAMETERS.SPEED.min,
+ step: SLIDER_PARAMETERS.SPEED.step,
+ scrollStep: SLIDER_PARAMETERS.SPEED.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.SPEED.scrollMinStep,
+ onChange: (speedScale: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_SPEED_SCALE", {
+ audioKeys: selectedAudioKeys.value,
+ speedScale,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_SPEED_SCALE",
+ key: "speedScale",
+ },
+ {
+ label: "音高",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.pitchScale ?? null,
+ disable: () =>
+ uiLocked.value || supportedFeatures.value?.adjustPitchScale === false,
+ max: SLIDER_PARAMETERS.PITCH.max,
+ min: SLIDER_PARAMETERS.PITCH.min,
+ step: SLIDER_PARAMETERS.PITCH.step,
+ scrollStep: SLIDER_PARAMETERS.PITCH.scrollStep,
+ onChange: (pitchScale: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PITCH_SCALE", {
+ audioKeys: selectedAudioKeys.value,
+ pitchScale,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_PITCH_SCALE",
+ key: "pitchScale",
+ },
+ {
+ label: "抑揚",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.intonationScale ?? null,
+ disable: () =>
+ uiLocked.value ||
+ supportedFeatures.value?.adjustIntonationScale === false,
+ max: SLIDER_PARAMETERS.INTONATION.max,
+ min: SLIDER_PARAMETERS.INTONATION.min,
+ step: SLIDER_PARAMETERS.INTONATION.step,
+ scrollStep: SLIDER_PARAMETERS.INTONATION.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.INTONATION.scrollMinStep,
+ onChange: (intonationScale: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_INTONATION_SCALE", {
+ audioKeys: selectedAudioKeys.value,
+ intonationScale,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_INTONATION_SCALE",
+ key: "intonationScale",
+ },
+ {
+ label: "音量",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.volumeScale ?? null,
+ disable: () =>
+ uiLocked.value ||
+ supportedFeatures.value?.adjustVolumeScale === false,
+ max: SLIDER_PARAMETERS.VOLUME.max,
+ min: SLIDER_PARAMETERS.VOLUME.min,
+ step: SLIDER_PARAMETERS.VOLUME.step,
+ scrollStep: SLIDER_PARAMETERS.VOLUME.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.VOLUME.scrollMinStep,
+ onChange: (volumeScale: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_VOLUME_SCALE", {
+ audioKeys: selectedAudioKeys.value,
+ volumeScale,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_VOLUME_SCALE",
+ key: "volumeScale",
+ },
+ {
+ label: "開始無音",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.prePhonemeLength ?? null,
+ disable: () => uiLocked.value,
+ max: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.max,
+ min: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.min,
+ step: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.step,
+ scrollStep: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.PRE_PHONEME_LENGTH.scrollMinStep,
+ onChange: (prePhonemeLength: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PRE_PHONEME_LENGTH", {
+ audioKeys: selectedAudioKeys.value,
+ prePhonemeLength,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_PRE_PHONEME_LENGTH",
+ key: "prePhonemeLength",
+ },
+ {
+ label: "終了無音",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.postPhonemeLength ?? null,
+ disable: () => uiLocked.value,
+ max: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.max,
+ min: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.min,
+ step: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.step,
+ scrollStep: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.POST_PHONEME_LENGTH.scrollMinStep,
+ onChange: (postPhonemeLength: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_POST_PHONEME_LENGTH", {
+ audioKeys: selectedAudioKeys.value,
+ postPhonemeLength,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_POST_PHONEME_LENGTH",
+ key: "postPhonemeLength",
+ },
+ switchPauseLengthMode.value === "SCALE" ? plsParam : plParam,
+ ];
+ // こっからswitchPauseLengthModeの変更に伴って更新
+ const newParam = switchPauseLengthMode.value === "SCALE" ? plsParam : plParam;
+ const index = baseParam.findIndex((param) => param.label === newParam.label);
+ if (index !== -1) {
+ baseParam[index] = newParam;
+ } else {
+ baseParam.push(newParam);
+ }
+ return baseParam;
+});
+
const handleParameterChange = (
parameter: Parameter,
inputValue: string | number | null,
@@ -507,6 +572,7 @@ const morphingTargetEngines = store.getters.MORPHING_SUPPORTED_ENGINES;
// モーフィング可能なターゲット一覧を取得
watchEffect(() => {
+ // console.log("watchEffect");
if (audioItem.value != undefined) {
store.dispatch("LOAD_MORPHABLE_TARGETS", {
engineId: audioItem.value.voice.engineId,
diff --git a/src/components/Talk/TalkEditor.vue b/src/components/Talk/TalkEditor.vue
index cb11bd6e5b..861351b23b 100644
--- a/src/components/Talk/TalkEditor.vue
+++ b/src/components/Talk/TalkEditor.vue
@@ -512,15 +512,17 @@ watch(userOrderedCharacterInfos, (userOrderedCharacterInfos) => {
// エンジン初期化後の処理
const isCompletedInitialStartup = ref(false);
-// TODO: Vueっぽくないので解体する
+// TODO: Vueっぽくないので解体する チョットマッテ
onetimeWatch(
() => props.isProjectFileLoaded,
async (isProjectFileLoaded) => {
+ console.log("onetimeWatch");
if (isProjectFileLoaded == "waiting" || !props.isEnginesReady)
return "continue";
if (!isProjectFileLoaded) {
// 最初のAudioCellを作成
const audioItem = await store.dispatch("GENERATE_AUDIO_ITEM", {});
+ console.log(audioItem);
const newAudioKey = await store.dispatch("REGISTER_AUDIO_ITEM", {
audioItem,
});
diff --git a/src/domain/project/schema.ts b/src/domain/project/schema.ts
index ca74e7987f..08d39bd201 100644
--- a/src/domain/project/schema.ts
+++ b/src/domain/project/schema.ts
@@ -34,6 +34,8 @@ const audioQuerySchema = z.object({
volumeScale: z.number(),
prePhonemeLength: z.number(),
postPhonemeLength: z.number(),
+ pauseLength: z.number(),
+ pauseLengthScale: z.number(),
outputSamplingRate: z.union([z.number(), z.literal("engineDefault")]),
outputStereo: z.boolean(),
kana: z.string().optional(),
diff --git a/src/openapi/apis/DefaultApi.ts b/src/openapi/apis/DefaultApi.ts
index 0295755437..de92cc6177 100644
--- a/src/openapi/apis/DefaultApi.ts
+++ b/src/openapi/apis/DefaultApi.ts
@@ -5,7 +5,7 @@
* VOICEVOXの音声合成エンジンです。
*
* The version of the OpenAPI document: latest
- *
+ *
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@@ -254,7 +254,7 @@ export interface ValidateKanaValidateKanaPostRequest {
/**
* DefaultApi - interface
- *
+ *
* @export
* @interface DefaultApiInterface
*/
@@ -262,10 +262,10 @@ export interface DefaultApiInterface {
/**
* テキストからアクセント句を得ます。 is_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。 * 全てのカナはカタカナで記述される * アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。 * カナの手前に`_`を入れるとそのカナは無声化される * アクセント位置を`\'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。 * アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。
* @summary テキストからアクセント句を得る
- * @param {string} text
- * @param {number} speaker
- * @param {boolean} [isKana]
- * @param {string} [coreVersion]
+ * @param {string} text
+ * @param {number} speaker
+ * @param {boolean} [isKana]
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -281,7 +281,7 @@ export interface DefaultApiInterface {
/**
* 新しいプリセットを追加します
* @summary Add Preset
- * @param {Preset} preset
+ * @param {Preset} preset
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -317,9 +317,9 @@ export interface DefaultApiInterface {
/**
* 音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
* @summary 音声合成用のクエリを作成する
- * @param {string} text
- * @param {number} speaker
- * @param {string} [coreVersion]
+ * @param {string} text
+ * @param {number} speaker
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -335,9 +335,9 @@ export interface DefaultApiInterface {
/**
* 音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
* @summary 音声合成用のクエリをプリセットを用いて作成する
- * @param {string} text
- * @param {number} presetId
- * @param {string} [coreVersion]
+ * @param {string} text
+ * @param {number} presetId
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -351,11 +351,11 @@ export interface DefaultApiInterface {
audioQueryFromPresetAudioQueryFromPresetPost(requestParameters: AudioQueryFromPresetAudioQueryFromPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary 音声合成する(キャンセル可能)
- * @param {number} speaker
- * @param {AudioQuery} audioQuery
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {AudioQuery} audioQuery
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -370,7 +370,7 @@ export interface DefaultApiInterface {
/**
* base64エンコードされたwavデータを一纏めにし、wavファイルで返します。
* @summary base64エンコードされた複数のwavデータを一つに結合する
- * @param {Array} requestBody
+ * @param {Array} requestBody
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -384,7 +384,7 @@ export interface DefaultApiInterface {
connectWavesConnectWavesPost(requestParameters: ConnectWavesConnectWavesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary Core Versions
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -445,7 +445,7 @@ export interface DefaultApiInterface {
downloadableLibrariesDownloadableLibrariesGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
- *
+ *
* @summary Engine Manifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -461,9 +461,9 @@ export interface DefaultApiInterface {
/**
* 歌唱音声合成を行います。
* @summary Frame Synthesis
- * @param {number} speaker
- * @param {FrameAudioQuery} frameAudioQuery
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {FrameAudioQuery} frameAudioQuery
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -510,7 +510,7 @@ export interface DefaultApiInterface {
* 他のユーザー辞書をインポートします。
* @summary Import User Dict Words
* @param {boolean} override 重複したエントリがあった場合、上書きするかどうか
- * @param {{ [key: string]: UserDictWord; }} requestBody
+ * @param {{ [key: string]: UserDictWord; }} requestBody
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -526,9 +526,9 @@ export interface DefaultApiInterface {
/**
* 指定されたスタイルを初期化します。 実行しなくても他のAPIは使用できますが、初回実行時に時間がかかることがあります。
* @summary Initialize Speaker
- * @param {number} speaker
+ * @param {number} speaker
* @param {boolean} [skipReinit] 既に初期化済みのスタイルの再初期化をスキップするかどうか
- * @param {string} [coreVersion]
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -575,8 +575,8 @@ export interface DefaultApiInterface {
/**
* 指定されたスタイルが初期化されているかどうかを返します。
* @summary Is Initialized Speaker
- * @param {number} speaker
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -590,11 +590,11 @@ export interface DefaultApiInterface {
isInitializedSpeakerIsInitializedSpeakerGet(requestParameters: IsInitializedSpeakerIsInitializedSpeakerGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary アクセント句から音高・音素長を得る
- * @param {number} speaker
- * @param {Array} accentPhrase
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {Array} accentPhrase
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -607,11 +607,11 @@ export interface DefaultApiInterface {
moraDataMoraDataPost(requestParameters: MoraDataMoraDataPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
- *
+ *
* @summary アクセント句から音素長を得る
- * @param {number} speaker
- * @param {Array} accentPhrase
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {Array} accentPhrase
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -624,11 +624,11 @@ export interface DefaultApiInterface {
moraLengthMoraLengthPost(requestParameters: MoraLengthMoraLengthPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
- *
+ *
* @summary アクセント句から音高を得る
- * @param {number} speaker
- * @param {Array} accentPhrase
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {Array} accentPhrase
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -643,8 +643,8 @@ export interface DefaultApiInterface {
/**
* 指定されたベーススタイルに対してエンジン内の各話者がモーフィング機能を利用可能か返します。 モーフィングの許可/禁止は`/speakers`の`speaker.supported_features.synthesis_morphing`に記載されています。 プロパティが存在しない場合は、モーフィングが許可されているとみなします。 返り値のスタイルIDはstring型なので注意。
* @summary 指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する
- * @param {Array} requestBody
- * @param {string} [coreVersion]
+ * @param {Array} requestBody
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -658,11 +658,11 @@ export interface DefaultApiInterface {
morphableTargetsMorphableTargetsPost(requestParameters: MorphableTargetsMorphableTargetsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
- *
+ *
* @summary 複数まとめて音声合成する
- * @param {number} speaker
- * @param {Array} audioQuery
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {Array} audioQuery
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -713,8 +713,8 @@ export interface DefaultApiInterface {
/**
* 設定を更新します。
* @summary Setting Post
- * @param {CorsPolicyMode} corsPolicyMode
- * @param {string} [allowOrigin]
+ * @param {CorsPolicyMode} corsPolicyMode
+ * @param {string} [allowOrigin]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -730,9 +730,9 @@ export interface DefaultApiInterface {
/**
* 歌唱音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま歌唱音声合成に利用できます。各値の意味は`Schemas`を参照してください。
* @summary 歌唱音声合成用のクエリを作成する
- * @param {number} speaker
- * @param {Score} score
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {Score} score
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -746,11 +746,11 @@ export interface DefaultApiInterface {
singFrameAudioQuerySingFrameAudioQueryPost(requestParameters: SingFrameAudioQuerySingFrameAudioQueryPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary スコア・歌唱音声合成用のクエリからフレームごとの音量を得る
- * @param {number} speaker
- * @param {BodySingFrameVolumeSingFrameVolumePost} bodySingFrameVolumeSingFrameVolumePost
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {BodySingFrameVolumeSingFrameVolumePost} bodySingFrameVolumeSingFrameVolumePost
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -765,8 +765,8 @@ export interface DefaultApiInterface {
/**
* 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。
* @summary Singer Info
- * @param {string} speakerUuid
- * @param {string} [coreVersion]
+ * @param {string} speakerUuid
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -780,9 +780,9 @@ export interface DefaultApiInterface {
singerInfoSingerInfoGet(requestParameters: SingerInfoSingerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary Singers
- * @param {string} [coreVersion]
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -797,8 +797,8 @@ export interface DefaultApiInterface {
/**
* 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。
* @summary Speaker Info
- * @param {string} speakerUuid
- * @param {string} [coreVersion]
+ * @param {string} speakerUuid
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -812,9 +812,9 @@ export interface DefaultApiInterface {
speakerInfoSpeakerInfoGet(requestParameters: SpeakerInfoSpeakerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary Speakers
- * @param {string} [coreVersion]
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -827,9 +827,9 @@ export interface DefaultApiInterface {
speakersSpeakersGet(requestParameters: SpeakersSpeakersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
- *
+ *
* @summary Supported Devices
- * @param {string} [coreVersion]
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -844,11 +844,11 @@ export interface DefaultApiInterface {
/**
* 指定された2種類のスタイルで音声を合成、指定した割合でモーフィングした音声を得ます。 モーフィングの割合は`morph_rate`で指定でき、0.0でベースのスタイル、1.0でターゲットのスタイルに近づきます。
* @summary 2種類のスタイルでモーフィングした音声を合成する
- * @param {number} baseSpeaker
- * @param {number} targetSpeaker
- * @param {number} morphRate
- * @param {AudioQuery} audioQuery
- * @param {string} [coreVersion]
+ * @param {number} baseSpeaker
+ * @param {number} targetSpeaker
+ * @param {number} morphRate
+ * @param {AudioQuery} audioQuery
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -862,12 +862,12 @@ export interface DefaultApiInterface {
synthesisMorphingSynthesisMorphingPost(requestParameters: SynthesisMorphingSynthesisMorphingPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary 音声合成する
- * @param {number} speaker
- * @param {AudioQuery} audioQuery
+ * @param {number} speaker
+ * @param {AudioQuery} audioQuery
* @param {boolean} [enableInterrogativeUpspeak] 疑問系のテキストが与えられたら語尾を自動調整する
- * @param {string} [coreVersion]
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -898,7 +898,7 @@ export interface DefaultApiInterface {
/**
* 既存のプリセットを更新します
* @summary Update Preset
- * @param {Preset} preset
+ * @param {Preset} preset
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
@@ -928,7 +928,7 @@ export interface DefaultApiInterface {
validateKanaValidateKanaPost(requestParameters: ValidateKanaValidateKanaPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
- *
+ *
* @summary Version
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -944,7 +944,7 @@ export interface DefaultApiInterface {
}
/**
- *
+ *
*/
export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
@@ -953,6 +953,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* テキストからアクセント句を得る
*/
async accentPhrasesAccentPhrasesPostRaw(requestParameters: AccentPhrasesAccentPhrasesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("accentPhrasesAccentPhrasesPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling accentPhrasesAccentPhrasesPost.');
}
@@ -996,6 +997,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* テキストからアクセント句を得る
*/
async accentPhrasesAccentPhrasesPost(requestParameters: AccentPhrasesAccentPhrasesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("accentPhrasesAccentPhrasesPost");
const response = await this.accentPhrasesAccentPhrasesPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -1005,6 +1007,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Add Preset
*/
async addPresetAddPresetPostRaw(requestParameters: AddPresetAddPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("addPresetAddPresetPostRaw");
if (requestParameters.preset === null || requestParameters.preset === undefined) {
throw new runtime.RequiredError('preset','Required parameter requestParameters.preset was null or undefined when calling addPresetAddPresetPost.');
}
@@ -1044,6 +1047,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Add User Dict Word
*/
async addUserDictWordUserDictWordPostRaw(requestParameters: AddUserDictWordUserDictWordPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("addUserDictWordUserDictWordPostRaw");
if (requestParameters.surface === null || requestParameters.surface === undefined) {
throw new runtime.RequiredError('surface','Required parameter requestParameters.surface was null or undefined when calling addUserDictWordUserDictWordPost.');
}
@@ -1108,12 +1112,13 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成用のクエリを作成する
*/
async audioQueryAudioQueryPostRaw(requestParameters: AudioQueryAudioQueryPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("audioQueryAudioQueryPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling audioQueryAudioQueryPost.');
}
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
- throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling audioQueryAudioQueryPost.');
+ throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling QueryPost.');
}
const queryParameters: any = {};
@@ -1131,14 +1136,13 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
}
const headerParameters: runtime.HTTPHeaders = {};
-
+ console.log(queryParameters);
const response = await this.request({
path: `/audio_query`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
}, initOverrides);
-
return new runtime.JSONApiResponse(response, (jsonValue) => AudioQueryFromJSON(jsonValue));
}
@@ -1147,6 +1151,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成用のクエリを作成する
*/
async audioQueryAudioQueryPost(requestParameters: AudioQueryAudioQueryPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ console.log("audioQueryAudioQueryPost");
const response = await this.audioQueryAudioQueryPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -1156,6 +1161,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成用のクエリをプリセットを用いて作成する
*/
async audioQueryFromPresetAudioQueryFromPresetPostRaw(requestParameters: AudioQueryFromPresetAudioQueryFromPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("audioQueryFromPresetAudioQueryFromPresetPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling audioQueryFromPresetAudioQueryFromPresetPost.');
}
@@ -1203,6 +1209,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成する(キャンセル可能)
*/
async cancellableSynthesisCancellableSynthesisPostRaw(requestParameters: CancellableSynthesisCancellableSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("cancellableSynthesisCancellableSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling cancellableSynthesisCancellableSynthesisPost.');
}
@@ -1249,6 +1256,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* base64エンコードされた複数のwavデータを一つに結合する
*/
async connectWavesConnectWavesPostRaw(requestParameters: ConnectWavesConnectWavesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("connectWavesConnectWavesPostRaw");
if (requestParameters.requestBody === null || requestParameters.requestBody === undefined) {
throw new runtime.RequiredError('requestBody','Required parameter requestParameters.requestBody was null or undefined when calling connectWavesConnectWavesPost.');
}
@@ -1283,6 +1291,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Core Versions
*/
async coreVersionsCoreVersionsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("coreVersionsCoreVersionsGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1310,6 +1319,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Delete Preset
*/
async deletePresetDeletePresetPostRaw(requestParameters: DeletePresetDeletePresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("deletePresetDeletePresetPostRaw");
if (requestParameters.id === null || requestParameters.id === undefined) {
throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling deletePresetDeletePresetPost.');
}
@@ -1345,6 +1355,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Delete User Dict Word
*/
async deleteUserDictWordUserDictWordWordUuidDeleteRaw(requestParameters: DeleteUserDictWordUserDictWordWordUuidDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("deleteUserDictWordUserDictWordWordUuidDeleteRaw");
if (requestParameters.wordUuid === null || requestParameters.wordUuid === undefined) {
throw new runtime.RequiredError('wordUuid','Required parameter requestParameters.wordUuid was null or undefined when calling deleteUserDictWordUserDictWordWordUuidDelete.');
}
@@ -1376,6 +1387,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Downloadable Libraries
*/
async downloadableLibrariesDownloadableLibrariesGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("downloadableLibrariesDownloadableLibrariesGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1403,6 +1415,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Engine Manifest
*/
async engineManifestEngineManifestGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("engineManifestEngineManifestGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1430,6 +1443,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Frame Synthesis
*/
async frameSynthesisFrameSynthesisPostRaw(requestParameters: FrameSynthesisFrameSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("frameSynthesisFrameSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling frameSynthesisFrameSynthesisPost.');
}
@@ -1477,6 +1491,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Get Presets
*/
async getPresetsPresetsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("getPresetsPresetsGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1505,6 +1520,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Get User Dict Words
*/
async getUserDictWordsUserDictGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("getUserDictWordsUserDictGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1533,6 +1549,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Import User Dict Words
*/
async importUserDictWordsImportUserDictPostRaw(requestParameters: ImportUserDictWordsImportUserDictPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("importUserDictWordsImportUserDictPostRaw");
if (requestParameters.override === null || requestParameters.override === undefined) {
throw new runtime.RequiredError('override','Required parameter requestParameters.override was null or undefined when calling importUserDictWordsImportUserDictPost.');
}
@@ -1575,6 +1592,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Initialize Speaker
*/
async initializeSpeakerInitializeSpeakerPostRaw(requestParameters: InitializeSpeakerInitializeSpeakerPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("initializeSpeakerInitializeSpeakerPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling initializeSpeakerInitializeSpeakerPost.');
}
@@ -1618,6 +1636,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Install Library
*/
async installLibraryInstallLibraryLibraryUuidPostRaw(requestParameters: InstallLibraryInstallLibraryLibraryUuidPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("installLibraryInstallLibraryLibraryUuidPostRaw");
if (requestParameters.libraryUuid === null || requestParameters.libraryUuid === undefined) {
throw new runtime.RequiredError('libraryUuid','Required parameter requestParameters.libraryUuid was null or undefined when calling installLibraryInstallLibraryLibraryUuidPost.');
}
@@ -1649,6 +1668,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Installed Libraries
*/
async installedLibrariesInstalledLibrariesGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("installedLibrariesInstalledLibrariesGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1677,6 +1697,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Is Initialized Speaker
*/
async isInitializedSpeakerIsInitializedSpeakerGetRaw(requestParameters: IsInitializedSpeakerIsInitializedSpeakerGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("isInitializedSpeakerIsInitializedSpeakerGetRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling isInitializedSpeakerIsInitializedSpeakerGet.');
}
@@ -1712,6 +1733,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Is Initialized Speaker
*/
async isInitializedSpeakerIsInitializedSpeakerGet(requestParameters: IsInitializedSpeakerIsInitializedSpeakerGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ console.log("isInitializedSpeakerIsInitializedSpeakerGet");
const response = await this.isInitializedSpeakerIsInitializedSpeakerGetRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -1720,6 +1742,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* アクセント句から音高・音素長を得る
*/
async moraDataMoraDataPostRaw(requestParameters: MoraDataMoraDataPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("moraDataMoraDataPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling moraDataMoraDataPost.');
}
@@ -1765,6 +1788,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* アクセント句から音素長を得る
*/
async moraLengthMoraLengthPostRaw(requestParameters: MoraLengthMoraLengthPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("moraLengthMoraLengthPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling moraLengthMoraLengthPost.');
}
@@ -1810,6 +1834,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* アクセント句から音高を得る
*/
async moraPitchMoraPitchPostRaw(requestParameters: MoraPitchMoraPitchPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("moraPitchMoraPitchPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling moraPitchMoraPitchPost.');
}
@@ -1856,6 +1881,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する
*/
async morphableTargetsMorphableTargetsPostRaw(requestParameters: MorphableTargetsMorphableTargetsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ // console.log("morphableTargetsMorphableTargetsPostRaw");
if (requestParameters.requestBody === null || requestParameters.requestBody === undefined) {
throw new runtime.RequiredError('requestBody','Required parameter requestParameters.requestBody was null or undefined when calling morphableTargetsMorphableTargetsPost.');
}
@@ -1886,6 +1912,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する
*/
async morphableTargetsMorphableTargetsPost(requestParameters: MorphableTargetsMorphableTargetsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ // console.log("morphableTargetsMorphableTargetsPost");
const response = await this.morphableTargetsMorphableTargetsPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -1894,6 +1921,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 複数まとめて音声合成する
*/
async multiSynthesisMultiSynthesisPostRaw(requestParameters: MultiSynthesisMultiSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("multiSynthesisMultiSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling multiSynthesisMultiSynthesisPost.');
}
@@ -1940,6 +1968,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Rewrite User Dict Word
*/
async rewriteUserDictWordUserDictWordWordUuidPutRaw(requestParameters: RewriteUserDictWordUserDictWordWordUuidPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("rewriteUserDictWordUserDictWordWordUuidPutRaw");
if (requestParameters.wordUuid === null || requestParameters.wordUuid === undefined) {
throw new runtime.RequiredError('wordUuid','Required parameter requestParameters.wordUuid was null or undefined when calling rewriteUserDictWordUserDictWordWordUuidPut.');
}
@@ -2003,6 +2032,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Setting Get
*/
async settingGetSettingGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("settingGetSettingGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -2030,6 +2060,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Setting Post
*/
async settingPostSettingPostRaw(requestParameters: SettingPostSettingPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("settingPostSettingPostRaw");
if (requestParameters.corsPolicyMode === null || requestParameters.corsPolicyMode === undefined) {
throw new runtime.RequiredError('corsPolicyMode','Required parameter requestParameters.corsPolicyMode was null or undefined when calling settingPostSettingPost.');
}
@@ -2176,6 +2207,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Singer Info
*/
async singerInfoSingerInfoGetRaw(requestParameters: SingerInfoSingerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ // console.log("singerInfoSingerInfoGetRaw");
if (requestParameters.speakerUuid === null || requestParameters.speakerUuid === undefined) {
throw new runtime.RequiredError('speakerUuid','Required parameter requestParameters.speakerUuid was null or undefined when calling singerInfoSingerInfoGet.');
}
@@ -2246,6 +2278,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Speaker Info
*/
async speakerInfoSpeakerInfoGetRaw(requestParameters: SpeakerInfoSpeakerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ // console.log("speakerInfoSpeakerInfoGetRaw");
if (requestParameters.speakerUuid === null || requestParameters.speakerUuid === undefined) {
throw new runtime.RequiredError('speakerUuid','Required parameter requestParameters.speakerUuid was null or undefined when calling speakerInfoSpeakerInfoGet.');
}
@@ -2285,6 +2318,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Speakers
*/
async speakersSpeakersGetRaw(requestParameters: SpeakersSpeakersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ console.log("speakersSpeakersGetRaw");
const queryParameters: any = {};
if (requestParameters.coreVersion !== undefined) {
@@ -2346,6 +2380,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 2種類のスタイルでモーフィングした音声を合成する
*/
async synthesisMorphingSynthesisMorphingPostRaw(requestParameters: SynthesisMorphingSynthesisMorphingPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("synthesisMorphingSynthesisMorphingPostRaw");
if (requestParameters.baseSpeaker === null || requestParameters.baseSpeaker === undefined) {
throw new runtime.RequiredError('baseSpeaker','Required parameter requestParameters.baseSpeaker was null or undefined when calling synthesisMorphingSynthesisMorphingPost.');
}
@@ -2408,6 +2443,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成する
*/
async synthesisSynthesisPostRaw(requestParameters: SynthesisSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("synthesisSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling synthesisSynthesisPost.');
}
@@ -2449,6 +2485,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成する
*/
async synthesisSynthesisPost(requestParameters: SynthesisSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ console.log("synthesisSynthesisPost");
const response = await this.synthesisSynthesisPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -2489,6 +2526,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Update Preset
*/
async updatePresetUpdatePresetPostRaw(requestParameters: UpdatePresetUpdatePresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("updatePresetUpdatePresetPostRaw");
if (requestParameters.preset === null || requestParameters.preset === undefined) {
throw new runtime.RequiredError('preset','Required parameter requestParameters.preset was null or undefined when calling updatePresetUpdatePresetPost.');
}
@@ -2528,6 +2566,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* テキストがAquesTalk 風記法に従っているか判定する
*/
async validateKanaValidateKanaPostRaw(requestParameters: ValidateKanaValidateKanaPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ console.log("validateKanaValidateKanaPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling validateKanaValidateKanaPost.');
}
diff --git a/src/openapi/models/AudioQuery.ts b/src/openapi/models/AudioQuery.ts
index 6dfe8177e5..baab874e2a 100644
--- a/src/openapi/models/AudioQuery.ts
+++ b/src/openapi/models/AudioQuery.ts
@@ -5,7 +5,7 @@
* VOICEVOXの音声合成エンジンです。
*
* The version of the OpenAPI document: latest
- *
+ *
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@@ -27,61 +27,73 @@ import {
*/
export interface AudioQuery {
/**
- *
+ *
* @type {Array}
* @memberof AudioQuery
*/
accentPhrases: Array;
/**
- *
+ *
* @type {number}
* @memberof AudioQuery
*/
speedScale: number;
/**
- *
+ *
* @type {number}
* @memberof AudioQuery
*/
pitchScale: number;
/**
- *
+ *
* @type {number}
* @memberof AudioQuery
*/
intonationScale: number;
/**
- *
+ *
* @type {number}
* @memberof AudioQuery
*/
volumeScale: number;
/**
- *
+ *
* @type {number}
* @memberof AudioQuery
*/
prePhonemeLength: number;
/**
- *
+ *
* @type {number}
* @memberof AudioQuery
*/
postPhonemeLength: number;
/**
- *
+ *
* @type {number}
* @memberof AudioQuery
*/
+ pauseLength: number;
+ /**
+ *
+ * @type {number}
+ * @memberof AudioQuery
+ */
+ pauseLengthScale: number;
+ /**
+ *
+ * @type {number}
+ * @memberof AudioQuery
+ */
outputSamplingRate: number;
/**
- *
+ *
* @type {boolean}
* @memberof AudioQuery
*/
outputStereo: boolean;
/**
- *
+ *
* @type {string}
* @memberof AudioQuery
*/
@@ -100,6 +112,8 @@ export function instanceOfAudioQuery(value: object): boolean {
isInstance = isInstance && "volumeScale" in value;
isInstance = isInstance && "prePhonemeLength" in value;
isInstance = isInstance && "postPhonemeLength" in value;
+ isInstance = isInstance && "pauseLength" in value;
+ isInstance = isInstance && "pauseLengthScale" in value;
isInstance = isInstance && "outputSamplingRate" in value;
isInstance = isInstance && "outputStereo" in value;
@@ -115,7 +129,7 @@ export function AudioQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean)
return json;
}
return {
-
+
'accentPhrases': ((json['accent_phrases'] as Array).map(AccentPhraseFromJSON)),
'speedScale': json['speedScale'],
'pitchScale': json['pitchScale'],
@@ -123,6 +137,8 @@ export function AudioQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean)
'volumeScale': json['volumeScale'],
'prePhonemeLength': json['prePhonemeLength'],
'postPhonemeLength': json['postPhonemeLength'],
+ 'pauseLength': json['pauseLength'],
+ 'pauseLengthScale': json['pauseLengthScale'],
'outputSamplingRate': json['outputSamplingRate'],
'outputStereo': json['outputStereo'],
'kana': !exists(json, 'kana') ? undefined : json['kana'],
@@ -137,7 +153,7 @@ export function AudioQueryToJSON(value?: AudioQuery | null): any {
return null;
}
return {
-
+
'accent_phrases': ((value.accentPhrases as Array).map(AccentPhraseToJSON)),
'speedScale': value.speedScale,
'pitchScale': value.pitchScale,
@@ -145,9 +161,10 @@ export function AudioQueryToJSON(value?: AudioQuery | null): any {
'volumeScale': value.volumeScale,
'prePhonemeLength': value.prePhonemeLength,
'postPhonemeLength': value.postPhonemeLength,
+ 'pauseLength': value.pauseLength,
+ 'pauseLengthScale': value.pauseLengthScale,
'outputSamplingRate': value.outputSamplingRate,
'outputStereo': value.outputStereo,
'kana': value.kana,
};
}
-
diff --git a/src/openapi/models/Preset.ts b/src/openapi/models/Preset.ts
index 4a7670ffab..e8a4e5c1d4 100644
--- a/src/openapi/models/Preset.ts
+++ b/src/openapi/models/Preset.ts
@@ -5,7 +5,7 @@
* VOICEVOXの音声合成エンジンです。
*
* The version of the OpenAPI document: latest
- *
+ *
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@@ -20,65 +20,77 @@ import { exists, mapValues } from '../runtime';
*/
export interface Preset {
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
id: number;
/**
- *
+ *
* @type {string}
* @memberof Preset
*/
name: string;
/**
- *
+ *
* @type {string}
* @memberof Preset
*/
speakerUuid: string;
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
styleId: number;
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
speedScale: number;
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
pitchScale: number;
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
intonationScale: number;
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
volumeScale: number;
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
prePhonemeLength: number;
/**
- *
+ *
* @type {number}
* @memberof Preset
*/
postPhonemeLength: number;
+ /**
+ *
+ * @type {number}
+ * @memberof Preset
+ */
+ pauseLength: number;
+ /**
+ *
+ * @type {number}
+ * @memberof Preset
+ */
+ pauseLengthScale: number;
}
/**
@@ -96,6 +108,8 @@ export function instanceOfPreset(value: object): boolean {
isInstance = isInstance && "volumeScale" in value;
isInstance = isInstance && "prePhonemeLength" in value;
isInstance = isInstance && "postPhonemeLength" in value;
+ isInstance = isInstance && "pauseLength" in value;
+ isInstance = isInstance && "pauseLengthScale" in value;
return isInstance;
}
@@ -109,7 +123,7 @@ export function PresetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pr
return json;
}
return {
-
+
'id': json['id'],
'name': json['name'],
'speakerUuid': json['speaker_uuid'],
@@ -120,6 +134,8 @@ export function PresetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pr
'volumeScale': json['volumeScale'],
'prePhonemeLength': json['prePhonemeLength'],
'postPhonemeLength': json['postPhonemeLength'],
+ 'pauseLength': json['pauseLength'],
+ 'pauseLengthScale': json['pauseLengthScale'],
};
}
@@ -131,7 +147,7 @@ export function PresetToJSON(value?: Preset | null): any {
return null;
}
return {
-
+
'id': value.id,
'name': value.name,
'speaker_uuid': value.speakerUuid,
@@ -142,6 +158,7 @@ export function PresetToJSON(value?: Preset | null): any {
'volumeScale': value.volumeScale,
'prePhonemeLength': value.prePhonemeLength,
'postPhonemeLength': value.postPhonemeLength,
+ 'pauseLength': value.pauseLength,
+ 'pauseLengthScale': value.pauseLengthScale,
};
}
-
diff --git a/src/store/audio.ts b/src/store/audio.ts
index 45abaf0d51..db947396b5 100644
--- a/src/store/audio.ts
+++ b/src/store/audio.ts
@@ -66,6 +66,7 @@ function parseTextFile(
userOrderedCharacterInfos: CharacterInfo[],
initVoice?: Voice,
): AudioItem[] {
+ console.log("parseTextFile"); // きてない
const name2Voice = new Map();
const uuid2Voice = new Map();
for (const defaultStyleId of defaultStyleIds) {
@@ -435,6 +436,7 @@ export const audioStore = createPartialStore({
LOAD_MORPHABLE_TARGETS: {
async action({ state, dispatch, commit }, { engineId, baseStyleId }) {
+ // console.log("LOAD_MORPHABLE_TARGETS");
if (!state.engineManifests[engineId].supportedFeatures?.synthesisMorphing)
return;
@@ -545,6 +547,7 @@ export const audioStore = createPartialStore({
* AudioItemに設定される話者(スタイルID)に対してエンジン側の初期化を行い、即座に音声合成ができるようにする。
*/
async action({ commit, dispatch }, { engineId, audioKeys, styleId }) {
+ console.log("SETUP_SPEAKER");
const isInitialized = await dispatch("IS_INITIALIZED_ENGINE_SPEAKER", {
engineId,
styleId,
@@ -640,6 +643,7 @@ export const audioStore = createPartialStore({
baseAudioItem?: AudioItem;
},
) {
+ console.log("GENERATE_AUDIO_ITEM");
//引数にbaseAudioItemが与えられた場合、baseAudioItemから話速等のパラメータを引き継いだAudioItemを返す
//baseAudioItem.queryのうち、accentPhrasesとkanaは基本設定パラメータではないので引き継がない
//baseAudioItemのうち、textとstyleIdは別途与えられるので引き継がない
@@ -675,12 +679,13 @@ export const audioStore = createPartialStore({
engineId: voice.engineId,
styleId: voice.styleId,
};
-
+ // ここでAudioItem > query > pauseLengthにundefinedが入ってると思う
const query = getters.IS_ENGINE_READY(voice.engineId)
? await dispatch("FETCH_AUDIO_QUERY", fetchQueryParams).catch(
() => undefined,
)
: undefined;
+ console.log(query);
const newAudioItem: AudioItem = { text, voice };
if (query != undefined) {
@@ -721,6 +726,9 @@ export const audioStore = createPartialStore({
baseAudioItem.query.prePhonemeLength;
newAudioItem.query.postPhonemeLength =
baseAudioItem.query.postPhonemeLength;
+ newAudioItem.query.pauseLength = baseAudioItem.query.pauseLength;
+ newAudioItem.query.pauseLengthScale =
+ baseAudioItem.query.pauseLengthScale;
newAudioItem.query.outputSamplingRate =
baseAudioItem.query.outputSamplingRate;
newAudioItem.query.outputStereo = baseAudioItem.query.outputStereo;
@@ -741,6 +749,7 @@ export const audioStore = createPartialStore({
prevAudioKey,
}: { audioItem: AudioItem; prevAudioKey?: AudioKey },
) {
+ console.log("REGISTER_AUDIO_ITEM");
const audioKey = generateAudioKey();
commit("INSERT_AUDIO_ITEM", { audioItem, audioKey, prevAudioKey });
return audioKey;
@@ -760,6 +769,7 @@ export const audioStore = createPartialStore({
prevAudioKey: AudioKey | undefined;
},
) {
+ console.log("INSERT_AUDIO_ITEM");
const index =
prevAudioKey != undefined
? state.audioKeys.indexOf(prevAudioKey) + 1
@@ -783,6 +793,7 @@ export const audioStore = createPartialStore({
prevAudioKey: AudioKey | undefined;
},
) {
+ console.log("INSERT_AUDIO_ITEMS");
const index =
prevAudioKey != undefined
? state.audioKeys.indexOf(prevAudioKey) + 1
@@ -895,12 +906,45 @@ export const audioStore = createPartialStore({
postPhonemeLength,
}: { audioKey: AudioKey; postPhonemeLength: number },
) {
+ console.log("SET_AUDIO_POST_PHONEME_LENGTH");
const query = state.audioItems[audioKey].query;
if (query == undefined) throw new Error("query == undefined");
query.postPhonemeLength = postPhonemeLength;
},
},
+ SET_AUDIO_PAUSE_LENGTH: {
+ mutation(
+ state,
+ { audioKey, pauseLength }: { audioKey: AudioKey; pauseLength: number },
+ ) {
+ console.log("SET_AUDIO_PAUSE_LENGTH");
+ const query = state.audioItems[audioKey].query;
+ console.log(query);
+ if (query == undefined) throw new Error("query == undefined");
+ query.pauseLength = pauseLength;
+ },
+ },
+
+ SET_AUDIO_PAUSE_LENGTH_SCALE: {
+ mutation(
+ state,
+ {
+ audioKey,
+ pauseLengthScale,
+ }: {
+ audioKey: AudioKey;
+ pauseLengthScale: number;
+ },
+ ) {
+ console.log("SET_AUDIO_PAUSE_LENGTH_SCALE");
+ const query = state.audioItems[audioKey].query;
+ console.log(query);
+ if (query == undefined) throw new Error("query == undefined");
+ query.pauseLengthScale = pauseLengthScale;
+ },
+ },
+
SET_MORPHING_INFO: {
mutation(
state,
@@ -933,6 +977,7 @@ export const audioStore = createPartialStore({
state,
{ audioKey, audioQuery }: { audioKey: AudioKey; audioQuery: AudioQuery },
) {
+ console.log("SET_AUDIO_QUERY");
state.audioItems[audioKey].query = audioQuery;
},
action(
@@ -952,6 +997,7 @@ export const audioStore = createPartialStore({
styleId,
}: { text: string; engineId: EngineId; styleId: StyleId },
) {
+ console.log("FETCH_AUDIO_QUERY");
return dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId,
})
@@ -985,6 +1031,7 @@ export const audioStore = createPartialStore({
accentPhrases,
}: { audioKey: AudioKey; accentPhrases: AccentPhrase[] },
) {
+ console.log("SET_SINGLE_ACCENT_PHRASE");
const query = state.audioItems[audioKey].query;
if (query == undefined) throw new Error("query == undefined");
query.accentPhrases = accentPhrases;
@@ -1006,6 +1053,7 @@ export const audioStore = createPartialStore({
isKana?: boolean;
},
) {
+ console.log("FETCH_ACCENT_PHRASES");
return dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId,
})
@@ -1104,6 +1152,7 @@ export const audioStore = createPartialStore({
APPLY_AUDIO_PRESET: {
mutation(state, { audioKey }: { audioKey: AudioKey }) {
+ console.log("APPLY_AUDIO_PRESET");
const audioItem = state.audioItems[audioKey];
if (!audioItem.presetKey) return;
@@ -1230,7 +1279,9 @@ export const audioStore = createPartialStore({
GET_AUDIO_PLAY_OFFSETS: {
action({ state }, { audioKey }: { audioKey: AudioKey }) {
+ console.log("GET_AUDIO_PLAY_OFFSETS");
const query = state.audioItems[audioKey].query;
+ console.log(query);
const accentPhrases = query?.accentPhrases;
if (query == undefined || accentPhrases == undefined)
throw Error("query == undefined or accentPhrases == undefined");
@@ -1263,9 +1314,12 @@ export const audioStore = createPartialStore({
{ dispatch, state },
{ audioKey, ...options }: { audioKey: AudioKey; cacheOnly?: boolean },
) {
+ console.log("FETCH_AUDIO");
+ await console.log(state.audioItems[audioKey]);
const audioItem: AudioItem = JSON.parse(
JSON.stringify(state.audioItems[audioKey]),
);
+ await console.log(audioItem); // この時点ではまだpresetがmoraに反映されていない
return dispatch("FETCH_AUDIO_FROM_AUDIO_ITEM", {
audioItem,
...options,
@@ -1279,6 +1333,7 @@ export const audioStore = createPartialStore({
{ dispatch, state },
options: { audioItem: AudioItem; cacheOnly?: boolean },
) => {
+ console.log("FETCH_AUDIO_FROM_AUDIO_ITEM");
const instance = await dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId: options.audioItem.voice.engineId,
});
@@ -1324,6 +1379,7 @@ export const audioStore = createPartialStore({
filePath?: string;
},
): Promise => {
+ console.log("GENERATE_AND_SAVE_AUDIO");
const defaultAudioFileName = getters.DEFAULT_AUDIO_FILE_NAME(audioKey);
if (state.savingSetting.fixedExportEnabled) {
filePath = path.join(
@@ -1468,6 +1524,7 @@ export const audioStore = createPartialStore({
callback?: (finishedCount: number, totalCount: number) => void;
},
): Promise => {
+ console.log("GENERATE_AND_CONNECT_AND_SAVE_AUDIO");
const defaultFileName = `${getters.DEFAULT_PROJECT_FILE_BASE_NAME}.wav`;
if (state.savingSetting.fixedExportEnabled) {
@@ -1605,6 +1662,7 @@ export const audioStore = createPartialStore({
{ state, getters },
{ filePath }: { filePath?: string },
): Promise => {
+ console.log("CONNECT_AND_EXPORT_TEXT");
const defaultFileName = `${getters.DEFAULT_PROJECT_FILE_BASE_NAME}.txt`;
if (state.savingSetting.fixedExportEnabled) {
filePath = path.join(
@@ -1684,6 +1742,7 @@ export const audioStore = createPartialStore({
PLAY_AUDIO: {
action: createUILockAction(
async ({ commit, dispatch }, { audioKey }: { audioKey: AudioKey }) => {
+ console.log("PLAY_AUDIO");
await dispatch("STOP_AUDIO");
// 音声用意
@@ -1692,18 +1751,21 @@ export const audioStore = createPartialStore({
audioKey,
nowGenerating: true,
});
+ console.log(`audioKey : ${audioKey}`);
try {
fetchAudioResult = await withProgress(
dispatch("FETCH_AUDIO", { audioKey }),
dispatch,
);
+ console.log(fetchAudioResult);
} finally {
+ // console.log(fetchAudioResult); // 来てない
commit("SET_AUDIO_NOW_GENERATING", {
audioKey,
nowGenerating: false,
});
}
-
+ console.log("PLAY_AUDIO:到達");
const { blob } = fetchAudioResult;
return dispatch("PLAY_AUDIO_BLOB", {
audioBlob: blob,
@@ -1719,6 +1781,7 @@ export const audioStore = createPartialStore({
{ getters, commit, dispatch },
{ audioBlob, audioKey }: { audioBlob: Blob; audioKey?: AudioKey },
) => {
+ console.log("PLAY_AUDIO_BLOB");
commit("SET_AUDIO_SOURCE", { audioBlob });
let offset: number | undefined;
// 途中再生用の処理
@@ -1749,6 +1812,7 @@ export const audioStore = createPartialStore({
presetKey,
}: { audioKey: AudioKey; presetKey: PresetKey | undefined },
) {
+ console.log("SET_AUDIO_PRESET_KEY");
if (presetKey == undefined) {
delete state.audioItems[audioKey].presetKey;
} else {
@@ -1905,6 +1969,7 @@ export const audioCommandStore = transformCommandStore(
{ state, commit, dispatch },
{ audioKey, text }: { audioKey: AudioKey; text: string },
) {
+ console.log("COMMAND_CHANGE_AUDIO_TEXT");
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
const query = state.audioItems[audioKey].query;
@@ -1912,6 +1977,7 @@ export const audioCommandStore = transformCommandStore(
enableMemoNotation: state.enableMemoNotation,
enableRubyNotation: state.enableRubyNotation,
});
+ console.log(`skippedText : ${skippedText}`);
try {
if (query != undefined) {
@@ -1923,6 +1989,8 @@ export const audioCommandStore = transformCommandStore(
styleId,
},
);
+ await console.log(query);
+ await console.log(accentPhrases);
// 読みの内容が変わっていなければテキストだけ変更
const isSameText = !isAccentPhrasesTextDifferent(
@@ -1995,6 +2063,7 @@ export const audioCommandStore = transformCommandStore(
>;
},
) {
+ console.log("COMMAND_MULTI_CHANGE_VOICE");
for (const [audioKey_, change] of Object.entries(payload.changes)) {
// TypeScriptは`Object.entries`のKeyの型を`string`としてしまうので、`as`で型を指定する
const audioKey = audioKey_ as AudioKey;
@@ -2130,6 +2199,7 @@ export const audioCommandStore = transformCommandStore(
accent,
}: { audioKey: AudioKey; accentPhraseIndex: number; accent: number },
) {
+ console.log("COMMAND_CHANGE_ACCENT");
const query = state.audioItems[audioKey].query;
if (query != undefined) {
const newAccentPhrases: AccentPhrase[] = JSON.parse(
@@ -2183,6 +2253,7 @@ export const audioCommandStore = transformCommandStore(
accentPhraseIndex: number;
} & ({ isPause: false; moraIndex: number } | { isPause: true }),
) {
+ console.log("COMMAND_CHANGE_ACCENT_PHRASE_SPLIT");
const { audioKey, accentPhraseIndex } = payload;
const query = state.audioItems[audioKey].query;
@@ -2299,6 +2370,7 @@ export const audioCommandStore = transformCommandStore(
accentPhraseIndex: number;
},
) {
+ console.log("COMMAND_DELETE_ACCENT_PHRASE");
const query = state.audioItems[audioKey].query;
if (query == undefined) throw new Error("query == undefined");
@@ -2341,6 +2413,7 @@ export const audioCommandStore = transformCommandStore(
popUntilPause: boolean;
},
) {
+ console.log("COMMAND_CHANGE_SINGLE_ACCENT_PHRASE");
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
@@ -2362,6 +2435,7 @@ export const audioCommandStore = transformCommandStore(
// accent phraseの生成をリクエスト
// 判別できない読み仮名が混じっていた場合400エラーが帰るのでfallback
+ console.log("COMMAND_CHANGE_SINGLE_ACCENT_PHRASE");
newAccentPhrasesSegment = await dispatch("FETCH_ACCENT_PHRASES", {
text: pureKatakanaWithAccent,
engineId,
@@ -2436,6 +2510,7 @@ export const audioCommandStore = transformCommandStore(
COMMAND_MULTI_RESET_MORA_PITCH_AND_LENGTH: {
async action({ state, dispatch, commit }, { audioKeys }) {
+ console.log("COMMAND_MULTI_RESET_MORA_PITCH_AND_LENGTH");
for (const audioKey of audioKeys) {
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
@@ -2462,6 +2537,7 @@ export const audioCommandStore = transformCommandStore(
{ state, dispatch, commit },
{ audioKey, accentPhraseIndex },
) {
+ console.log("COMMAND_RESET_SELECTED_MORA_PITCH_AND_LENGTH");
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
@@ -2520,6 +2596,7 @@ export const audioCommandStore = transformCommandStore(
type: MoraDataType;
},
) {
+ console.log("COMMAND_SET_AUDIO_MORA_DATA_ACCENT_PHRASE");
const maxPitch = 6.5;
const minPitch = 3;
const maxMoraLength = 0.3;
@@ -2717,6 +2794,46 @@ export const audioCommandStore = transformCommandStore(
},
},
+ COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH: {
+ mutation(draft, payload: { audioKeys: AudioKey[]; pauseLength: number }) {
+ for (const audioKey of payload.audioKeys) {
+ audioStore.mutations.SET_AUDIO_PAUSE_LENGTH(draft, {
+ audioKey,
+ pauseLength: payload.pauseLength,
+ });
+ }
+ },
+ action(
+ { commit },
+ payload: { audioKeys: AudioKey[]; pauseLength: number },
+ ) {
+ commit("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH", payload);
+ },
+ },
+
+ COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE: {
+ mutation(
+ draft,
+ payload: {
+ audioKeys: AudioKey[];
+ pauseLengthScale: number;
+ },
+ ) {
+ for (const audioKey of payload.audioKeys) {
+ audioStore.mutations.SET_AUDIO_PAUSE_LENGTH_SCALE(draft, {
+ audioKey,
+ pauseLengthScale: payload.pauseLengthScale,
+ });
+ }
+ },
+ action(
+ { commit },
+ payload: { audioKeys: AudioKey[]; pauseLengthScale: number },
+ ) {
+ commit("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE", payload);
+ },
+ },
+
COMMAND_MULTI_SET_MORPHING_INFO: {
mutation(
draft,
@@ -2783,6 +2900,7 @@ export const audioCommandStore = transformCommandStore(
COMMAND_FULLY_APPLY_AUDIO_PRESET: {
mutation(draft, { presetKey }: { presetKey: PresetKey }) {
+ console.log("COMMAND_FULLY_APPLY_AUDIO_PRESET");
const targetAudioKeys = draft.audioKeys.filter(
(audioKey) => draft.audioItems[audioKey].presetKey === presetKey,
);
@@ -2814,6 +2932,7 @@ export const audioCommandStore = transformCommandStore(
{ state, commit, dispatch, getters },
{ filePath }: { filePath?: string },
) => {
+ console.log("COMMAND_IMPORT_FROM_FILE");
if (!filePath) {
filePath = await window.backend.showImportFileDialog({
title: "セリフ読み込み",
@@ -2892,6 +3011,7 @@ export const audioCommandStore = transformCommandStore(
voice: Voice;
},
) => {
+ console.log("COMMAND_PUT_TEXTS");
const audioKeyItemPairs: {
audioKey: AudioKey;
audioItem: AudioItem;
diff --git a/src/store/audioGenerate.ts b/src/store/audioGenerate.ts
index 7d9ca52b74..3de4d1be57 100644
--- a/src/store/audioGenerate.ts
+++ b/src/store/audioGenerate.ts
@@ -27,23 +27,35 @@ export async function fetchAudioFromAudioItem(
audioItem: AudioItem;
},
): Promise {
+ console.log("fetchAudioFromAudioItem");
+ // 試しにここで弄ってみる
+ // audioItem.query.accentPhrases[0].moras[0].consonantLength = 0.1; コンソールには出るがqueryでundefined
+ // 多分非同期が悪さしててこの時点ではまだaudioQueryのresponseは入ってない
const engineId = audioItem.voice.engineId;
const [id, audioQuery] = await generateUniqueIdAndQuery(state, audioItem);
+ await console.log(audioQuery); // preset未反映
+ // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // まだ
if (audioQuery == undefined)
throw new Error("audioQuery is not defined for audioItem");
if (Object.prototype.hasOwnProperty.call(audioBlobCache, id)) {
+ console.log("check"); // 来てない
const blob = audioBlobCache[id];
return { audioQuery, blob };
}
-
+ // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // 反映確認
const speaker = audioItem.voice.styleId;
-
+ // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // 反映確認
+ // 何かしらの互換のための処理?
const engineAudioQuery = convertAudioQueryFromEditorToEngine(
audioQuery,
state.engineManifests[engineId].defaultSamplingRate,
);
+ // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // 反映確認
+ // マニュアル値の設定はどこでやってるんだろ audioQueryの前?
+ // console.log(audioQuery);
+ await console.log(engineAudioQuery);
let blob: Blob;
// FIXME: モーフィングが設定で無効化されていてもモーフィングが行われるので気づけるUIを作成する
@@ -71,6 +83,7 @@ export async function generateLabFromAudioQuery(
audioQuery: EditorAudioQuery,
offset?: number,
) {
+ console.log("generateLabFromAudioQuery");
const speedScale = audioQuery.speedScale;
let labString = "";
diff --git a/src/store/engine.ts b/src/store/engine.ts
index 3e8823b99b..561575880a 100644
--- a/src/store/engine.ts
+++ b/src/store/engine.ts
@@ -202,6 +202,7 @@ export const engineStore = createPartialStore({
RESTART_ENGINES: {
async action({ dispatch, commit }, { engineIds }) {
+ console.log("RESTART_ENGINES");
await Promise.all(
engineIds.map(async (engineId) => {
commit("SET_ENGINE_STATE", { engineId, engineState: "STARTING" });
@@ -230,6 +231,7 @@ export const engineStore = createPartialStore({
POST_ENGINE_START: {
async action({ state, dispatch }, { engineIds }) {
+ console.log("POST_ENGINE_START");
await dispatch("GET_ALT_PORT_INFOS");
const result = await Promise.all(
engineIds.map(async (engineId) => {
@@ -311,6 +313,7 @@ export const engineStore = createPartialStore({
* 指定した話者(スタイルID)がエンジン側で初期化されているか
*/
async action({ dispatch }, { engineId, styleId }) {
+ console.log("IS_INITIALIZED_ENGINE_SPEAKER");
const isInitialized = await dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId,
}).then((instance) =>
diff --git a/src/store/preset.ts b/src/store/preset.ts
index ac0bbf5561..94a16eb325 100644
--- a/src/store/preset.ts
+++ b/src/store/preset.ts
@@ -167,6 +167,7 @@ export const presetStore = createPartialStore({
presetKeys,
}: { presetItems: Record; presetKeys: PresetKey[] },
) {
+ console.log("SAVE_PRESET_CONFIG");
const result = await window.backend.setSetting("presets", {
items: JSON.parse(JSON.stringify(presetItems)),
keys: JSON.parse(JSON.stringify(presetKeys)),
@@ -200,8 +201,8 @@ export const presetStore = createPartialStore({
CREATE_ALL_DEFAULT_PRESET: {
async action({ state, dispatch, getters }) {
+ console.log("CREATE_ALL_DEFAULT_PRESET");
const voices = getters.GET_ALL_VOICES("talk");
-
for (const voice of voices) {
const voiceId = VoiceId(voice);
const defaultPresetKey = state.defaultPresetKeys[voiceId];
@@ -211,7 +212,7 @@ export const presetStore = createPartialStore({
}
const characterName = getters.VOICE_NAME(voice);
-
+ console.log(`characterName : ${characterName}`);
const presetData: Preset = {
name: `デフォルト:${characterName}`,
speedScale: 1.0,
@@ -220,6 +221,8 @@ export const presetStore = createPartialStore({
volumeScale: 1.0,
prePhonemeLength: 0.1,
postPhonemeLength: 0.1,
+ pauseLength: 0.3,
+ pauseLengthScale: 1,
};
const newPresetKey = await dispatch("ADD_PRESET", { presetData });
@@ -238,6 +241,7 @@ export const presetStore = createPartialStore({
context,
{ presetKey, presetData }: { presetData: Preset; presetKey: PresetKey },
) {
+ console.log("UPDATE_PRESET");
const newPresetItems = {
...context.state.presetItems,
[presetKey]: presetData,
diff --git a/src/store/project.ts b/src/store/project.ts
index b8fd91512d..0ad034d14c 100755
--- a/src/store/project.ts
+++ b/src/store/project.ts
@@ -187,6 +187,7 @@ export const projectStore = createPartialStore({
context,
{ filePath, confirm }: { filePath?: string; confirm?: boolean },
) => {
+ console.log("LOAD_PROJECT_FILE");
if (!filePath) {
// Select and load a project File.
const ret = await window.backend.showProjectLoadDialog({
@@ -250,12 +251,17 @@ export const projectStore = createPartialStore({
}
}
for (const audioItemsKey in projectData.audioItems) {
+ console.log(`audioItemsKey : ${audioItemsKey}`);
if (projectData.audioItems[audioItemsKey].query != null) {
+ console.log("query代入");
projectData.audioItems[audioItemsKey].query.volumeScale = 1;
projectData.audioItems[audioItemsKey].query.prePhonemeLength =
0.1;
projectData.audioItems[audioItemsKey].query.postPhonemeLength =
0.1;
+ projectData.audioItems[audioItemsKey].query.pauseLength = 0.1;
+ projectData.audioItems[audioItemsKey].query.pauseLengthScale =
+ 1;
projectData.audioItems[audioItemsKey].query.outputSamplingRate =
DEFAULT_SAMPLING_RATE;
}
@@ -459,6 +465,7 @@ export const projectStore = createPartialStore({
// Validation check
// トークはvalidateTalkProjectで検証する
// ソングはSET_SCOREの中の`isValidScore`関数で検証される
+ console.log("parsedProjectData");
const parsedProjectData = projectSchema.parse(projectData);
validateTalkProject(parsedProjectData.talk);
diff --git a/src/store/proxy.ts b/src/store/proxy.ts
index 799ef3e069..784c82b3b0 100644
--- a/src/store/proxy.ts
+++ b/src/store/proxy.ts
@@ -13,6 +13,7 @@ const proxyStoreCreator = (_engineFactory: IEngineConnectorFactory) => {
const proxyStore = createPartialStore({
INSTANTIATE_ENGINE_CONNECTOR: {
action({ state }, payload) {
+ // console.log("INSTANTIATE_ENGINE_CONNECTOR");
const engineId = payload.engineId;
const engineInfo: EngineInfo | undefined = state.engineInfos[engineId];
if (engineInfo == undefined)
@@ -21,6 +22,7 @@ const proxyStoreCreator = (_engineFactory: IEngineConnectorFactory) => {
);
const instance = _engineFactory.instance(engineInfo.host);
+ // console.log(instance);
return Promise.resolve({
invoke: (v) => (arg) =>
// FIXME: anyを使わないようにする
diff --git a/src/store/type.ts b/src/store/type.ts
index d134eef477..2dd16d6d5f 100644
--- a/src/store/type.ts
+++ b/src/store/type.ts
@@ -34,6 +34,7 @@ import {
UpdateInfo,
Preset,
MorphingInfo,
+ SwitchPauseLengthMode,
ActivePointScrollMode,
EngineInfo,
ConfirmedTips,
@@ -289,6 +290,14 @@ export type AudioStoreTypes = {
mutation: { audioKey: AudioKey; postPhonemeLength: number };
};
+ SET_AUDIO_PAUSE_LENGTH: {
+ mutation: { audioKey: AudioKey; pauseLength: number };
+ };
+
+ SET_AUDIO_PAUSE_LENGTH_SCALE: {
+ mutation: { audioKey: AudioKey; pauseLengthScale: number };
+ };
+
LOAD_MORPHABLE_TARGETS: {
action(payload: { engineId: EngineId; baseStyleId: StyleId }): void;
};
@@ -628,6 +637,16 @@ export type AudioCommandStoreTypes = {
action(payload: { audioKeys: AudioKey[]; postPhonemeLength: number }): void;
};
+ COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH: {
+ mutation: { audioKeys: AudioKey[]; pauseLength: number };
+ action(payload: { audioKeys: AudioKey[]; pauseLength: number }): void;
+ };
+
+ COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE: {
+ mutation: { audioKeys: AudioKey[]; pauseLengthScale: number };
+ action(payload: { audioKeys: AudioKey[]; pauseLengthScale: number }): void;
+ };
+
COMMAND_MULTI_SET_MORPHING_INFO: {
mutation: {
audioKeys: AudioKey[];
@@ -1625,6 +1644,7 @@ export type UiStoreState = {
uiLockCount: number;
dialogLockCount: number;
reloadingLock: boolean;
+ switchPauseLengthMode: SwitchPauseLengthMode;
inheritAudioInfo: boolean;
activePointScrollMode: ActivePointScrollMode;
isHelpDialogOpen: boolean;
@@ -1765,6 +1785,11 @@ export type UiStoreTypes = {
action(): void;
};
+ SET_SWITCH_PAUSE_LENGTH_MODE: {
+ mutation: { switchPauseLengthMode: SwitchPauseLengthMode };
+ action(payload: { switchPauseLengthMode: SwitchPauseLengthMode }): void;
+ };
+
SET_INHERIT_AUDIOINFO: {
mutation: { inheritAudioInfo: boolean };
action(payload: { inheritAudioInfo: boolean }): void;
diff --git a/src/store/ui.ts b/src/store/ui.ts
index d83d9974db..b8a12730d3 100644
--- a/src/store/ui.ts
+++ b/src/store/ui.ts
@@ -7,6 +7,7 @@ import {
UiStoreTypes,
} from "./type";
import { createPartialStore } from "./vuex";
+import { SwitchPauseLengthMode } from "@/type/preload";
import { ActivePointScrollMode } from "@/type/preload";
import {
CommonDialogOptions,
@@ -53,6 +54,7 @@ export const uiStoreState: UiStoreState = {
uiLockCount: 0,
dialogLockCount: 0,
reloadingLock: false,
+ switchPauseLengthMode: "SCALE",
inheritAudioInfo: true,
activePointScrollMode: "OFF",
isHelpDialogOpen: false,
@@ -257,6 +259,12 @@ export const uiStore = createPartialStore({
HYDRATE_UI_STORE: {
async action({ commit }) {
+ commit("SET_SWITCH_PAUSE_LENGTH_MODE", {
+ switchPauseLengthMode: await window.backend.getSetting(
+ "switchPauseLengthMode",
+ ),
+ });
+
commit("SET_INHERIT_AUDIOINFO", {
inheritAudioInfo: await window.backend.getSetting("inheritAudioInfo"),
});
@@ -301,6 +309,30 @@ export const uiStore = createPartialStore({
},
},
+ SET_SWITCH_PAUSE_LENGTH_MODE: {
+ mutation(
+ state,
+ {
+ switchPauseLengthMode,
+ }: { switchPauseLengthMode: SwitchPauseLengthMode },
+ ) {
+ state.switchPauseLengthMode = switchPauseLengthMode;
+ },
+ async action(
+ { commit },
+ {
+ switchPauseLengthMode,
+ }: { switchPauseLengthMode: SwitchPauseLengthMode },
+ ) {
+ commit("SET_SWITCH_PAUSE_LENGTH_MODE", {
+ switchPauseLengthMode: await window.backend.setSetting(
+ "switchPauseLengthMode",
+ switchPauseLengthMode,
+ ),
+ });
+ },
+ },
+
SET_INHERIT_AUDIOINFO: {
mutation(state, { inheritAudioInfo }: { inheritAudioInfo: boolean }) {
state.inheritAudioInfo = inheritAudioInfo;
diff --git a/src/store/utility.ts b/src/store/utility.ts
index a5379bf5c0..a3d89e9e62 100644
--- a/src/store/utility.ts
+++ b/src/store/utility.ts
@@ -102,6 +102,26 @@ export const SLIDER_PARAMETERS = {
scrollStep: () => 0.1,
scrollMinStep: () => 0.01,
},
+ /**
+ * 文内無音(絶対値)パラメータの定義
+ */
+ PAUSE_LENGTH: {
+ max: () => 3,
+ min: () => 0,
+ step: () => 0.01,
+ scrollStep: () => 0.1,
+ scrollMinStep: () => 0.01,
+ },
+ /**
+ * 文内無音(倍率)パラメータの定義
+ */
+ PAUSE_LENGTH_SCALE: {
+ max: () => 2,
+ min: () => 0,
+ step: () => 0.01,
+ scrollStep: () => 0.1,
+ scrollMinStep: () => 0.01,
+ },
/**
* モーフィングレートパラメータの定義
*/
diff --git a/src/type/preload.ts b/src/type/preload.ts
index 179f5a1b05..b44326d6f0 100644
--- a/src/type/preload.ts
+++ b/src/type/preload.ts
@@ -349,6 +349,8 @@ export type AcceptRetrieveTelemetryStatus =
export type AcceptTermsStatus = "Unconfirmed" | "Accepted" | "Rejected";
+export type SwitchPauseLengthMode = "SCALE" | "ABSOLUTE";
+
export type ActivePointScrollMode = "CONTINUOUSLY" | "PAGE" | "OFF";
export type SplitTextWhenPasteType = "PERIOD_AND_NEW_LINE" | "NEW_LINE" | "OFF";
@@ -424,6 +426,8 @@ export type Preset = {
volumeScale: number;
prePhonemeLength: number;
postPhonemeLength: number;
+ pauseLength: number;
+ pauseLengthScale: number;
morphingInfo?: MorphingInfo;
};
@@ -601,6 +605,7 @@ export type RootMiscSettingType = z.infer;
export const configSchema = z
.object({
+ switchPauseLengthMode: z.enum(["SCALE", "ABSOLUTE"]).default("SCALE"),
inheritAudioInfo: z.boolean().default(true),
activePointScrollMode: z
.enum(["CONTINUOUSLY", "PAGE", "OFF"])
@@ -647,6 +652,8 @@ export const configSchema = z
volumeScale: z.number(),
prePhonemeLength: z.number(),
postPhonemeLength: z.number(),
+ pauseLength: z.number(),
+ pauseLengthScale: z.number(),
morphingInfo: z
.object({
rate: z.number(),
diff --git a/tests/unit/backend/common/pastConfigs/0.13.json b/tests/unit/backend/common/pastConfigs/0.13.json
index a66de624ad..09eee3552d 100644
--- a/tests/unit/backend/common/pastConfigs/0.13.json
+++ b/tests/unit/backend/common/pastConfigs/0.13.json
@@ -1,5 +1,6 @@
{
"useGpu": false,
+ "switchPauseLengthMode": "SCALE",
"inheritAudioInfo": true,
"activePointScrollMode": "OFF",
"savingSetting": {
@@ -148,4 +149,4 @@
"version": "0.13.3"
}
}
-}
\ No newline at end of file
+}
From a5db9d2718a32fa6b45b5bfd17c56fc1b1c6d0a4 Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Sun, 26 May 2024 10:29:02 +0900
Subject: [PATCH 02/86] =?UTF-8?q?=E6=96=B0=E8=A6=8F:=E3=83=97=E3=83=AA?=
=?UTF-8?q?=E3=82=BB=E3=83=83=E3=83=88[pauseLength,=20pauseLengthScale]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Dialog/AllDialog.vue | 10 +++-
src/components/Dialog/SettingDialog.vue | 25 ++++++++
src/components/Talk/AudioInfo.vue | 80 ++++++++++++-------------
src/store/audio.ts | 13 +++-
4 files changed, 86 insertions(+), 42 deletions(-)
diff --git a/src/components/Dialog/AllDialog.vue b/src/components/Dialog/AllDialog.vue
index 981cae021e..cb09b3a75f 100644
--- a/src/components/Dialog/AllDialog.vue
+++ b/src/components/Dialog/AllDialog.vue
@@ -4,7 +4,10 @@
/>
-
+
();
const store = useStore();
+const activeAudioKey = computed(
+ () => store.getters.ACTIVE_AUDIO_KEY,
+);
+
// ライセンス表示
const isHelpDialogOpenComputed = computed({
get: () => store.state.isHelpDialogOpen,
diff --git a/src/components/Dialog/SettingDialog.vue b/src/components/Dialog/SettingDialog.vue
index 50a07f1ed5..e026885d3d 100644
--- a/src/components/Dialog/SettingDialog.vue
+++ b/src/components/Dialog/SettingDialog.vue
@@ -1065,6 +1065,7 @@ import { computed, ref, watchEffect } from "vue";
import FileNamePatternDialog from "./FileNamePatternDialog.vue";
import { useStore } from "@/store";
import {
+ AudioKey,
isProduction,
SavingSetting,
EngineSettingType,
@@ -1091,6 +1092,7 @@ const useRootMiscSetting = (key: T) => {
const props = defineProps<{
modelValue: boolean;
+ activeAudioKey: AudioKey;
}>();
const emit = defineEmits<{
(e: "update:modelValue", val: boolean): void;
@@ -1126,6 +1128,29 @@ const switchPauseLengthMode = computed({
});
},
});
+
+const selectedAudioKeys = computed(() =>
+ store.state.experimentalSetting.enableMultiSelect
+ ? store.getters.SELECTED_AUDIO_KEYS
+ : [props.activeAudioKey],
+);
+
+watchEffect(() => {
+ if (selectedAudioKeys.value) {
+ if (switchPauseLengthMode.value === "SCALE") {
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH", {
+ audioKeys: selectedAudioKeys.value,
+ pauseLength: 0.3,
+ });
+ } else {
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE", {
+ audioKeys: selectedAudioKeys.value,
+ pauseLengthScale: 1,
+ });
+ }
+ }
+});
+
const inheritAudioInfoMode = computed(() => store.state.inheritAudioInfo);
const activePointScrollMode = computed({
get: () => store.state.activePointScrollMode,
diff --git a/src/components/Talk/AudioInfo.vue b/src/components/Talk/AudioInfo.vue
index b3da96e3cd..d7c88632a2 100644
--- a/src/components/Talk/AudioInfo.vue
+++ b/src/components/Talk/AudioInfo.vue
@@ -362,49 +362,49 @@ const selectedAudioKeys = computed(() =>
: [props.activeAudioKey],
);
-const plParam: Parameter = {
- label: "文内無音",
- slider: previewSliderHelper({
- modelValue: () => query.value?.pauseLength ?? null,
- disable: () => uiLocked.value,
- max: SLIDER_PARAMETERS.PAUSE_LENGTH.max,
- min: SLIDER_PARAMETERS.PAUSE_LENGTH.min,
- step: SLIDER_PARAMETERS.PAUSE_LENGTH.step,
- scrollStep: SLIDER_PARAMETERS.PAUSE_LENGTH.scrollStep,
- scrollMinStep: SLIDER_PARAMETERS.PAUSE_LENGTH.scrollMinStep,
- onChange: (pauseLength: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH", {
- audioKeys: selectedAudioKeys.value,
- pauseLength,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH",
- key: "pauseLength",
-};
-
-const plsParam: Parameter = {
- label: "文内無音",
- slider: previewSliderHelper({
- modelValue: () => query.value?.pauseLengthScale ?? null,
- disable: () => uiLocked.value,
- max: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.max,
- min: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.min,
- step: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.step,
- scrollStep: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.scrollStep,
- scrollMinStep: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.scrollMinStep,
- onChange: (pauseLengthScale: number) =>
- store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE", {
- audioKeys: selectedAudioKeys.value,
- pauseLengthScale,
- }),
- }),
- action: "COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH",
- key: "pauseLength",
-};
-
// 文内無音はひとまず倍率verを表示 のち必要に応じ絶対値に切替
// 泥臭くなっちゃったかも
const parameters = computed(() => {
+ // 一旦ここで初期値を入れてしまう
+ const plParam: Parameter = {
+ label: "文内無音(秒)",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.pauseLength ?? null,
+ disable: () => uiLocked.value,
+ max: SLIDER_PARAMETERS.PAUSE_LENGTH.max,
+ min: SLIDER_PARAMETERS.PAUSE_LENGTH.min,
+ step: SLIDER_PARAMETERS.PAUSE_LENGTH.step,
+ scrollStep: SLIDER_PARAMETERS.PAUSE_LENGTH.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.PAUSE_LENGTH.scrollMinStep,
+ onChange: (pauseLength: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH", {
+ audioKeys: selectedAudioKeys.value,
+ pauseLength: pauseLength,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH",
+ key: "pauseLength",
+ };
+
+ const plsParam: Parameter = {
+ label: "文内無音(倍)",
+ slider: previewSliderHelper({
+ modelValue: () => query.value?.pauseLengthScale ?? null,
+ disable: () => uiLocked.value,
+ max: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.max,
+ min: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.min,
+ step: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.step,
+ scrollStep: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.scrollStep,
+ scrollMinStep: SLIDER_PARAMETERS.PAUSE_LENGTH_SCALE.scrollMinStep,
+ onChange: (pauseLengthScale: number) =>
+ store.dispatch("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE", {
+ audioKeys: selectedAudioKeys.value,
+ pauseLengthScale: pauseLengthScale,
+ }),
+ }),
+ action: "COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE",
+ key: "pauseLengthScale",
+ };
const baseParam: Parameter[] = [
{
label: "話速",
diff --git a/src/store/audio.ts b/src/store/audio.ts
index db947396b5..685180be3f 100644
--- a/src/store/audio.ts
+++ b/src/store/audio.ts
@@ -685,6 +685,9 @@ export const audioStore = createPartialStore({
() => undefined,
)
: undefined;
+ if (query) {
+ query.pauseLength = 0.3;
+ }
console.log(query);
const newAudioItem: AudioItem = { text, voice };
@@ -1319,7 +1322,14 @@ export const audioStore = createPartialStore({
const audioItem: AudioItem = JSON.parse(
JSON.stringify(state.audioItems[audioKey]),
);
- await console.log(audioItem); // この時点ではまだpresetがmoraに反映されていない
+ // ここでqueryのチェックを行う
+ if (audioItem.query?.pauseLengthScale !== 1) {
+ if (audioItem.query) {
+ audioItem.query.pauseLength = -1;
+ }
+ }
+ await console.log("以下audioItem");
+ await console.log(audioItem);
return dispatch("FETCH_AUDIO_FROM_AUDIO_ITEM", {
audioItem,
...options,
@@ -1823,6 +1833,7 @@ export const audioStore = createPartialStore({
PLAY_CONTINUOUSLY_AUDIO: {
action: createUILockAction(async ({ state, getters, commit, dispatch }) => {
+ console.log("PLAY_CONTINUOUSLY_AUDIO");
const currentAudioKey = state._activeAudioKey;
const currentAudioPlayStartPoint = getters.AUDIO_PLAY_START_POINT;
From 25da5cabe65d2533b5970fdec7363b1c5a46ac93 Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Tue, 28 May 2024 20:08:12 +0900
Subject: [PATCH 03/86] =?UTF-8?q?=E3=83=9E=E3=83=8B=E3=83=A5=E3=82=A2?=
=?UTF-8?q?=E3=83=AB=E5=80=A4=E3=81=AE=E8=A8=AD=E5=AE=9A=E3=81=AB=E5=AF=BE?=
=?UTF-8?q?=E5=BF=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/App.vue | 1 -
.../Dialog/DictionaryManageDialog.vue | 1 -
src/components/Talk/AccentPhrase.vue | 2 ++
src/components/Talk/AudioDetail.vue | 32 ++++++++++++++++++-
src/components/Talk/AudioInfo.vue | 1 -
src/domain/project/schema.ts | 2 +-
src/openapi/apis/DefaultApi.ts | 4 ---
src/openapi/models/AudioQuery.ts | 4 +--
src/openapi/models/Preset.ts | 6 ++--
src/store/audio.ts | 28 +++++++++-------
src/store/audioGenerate.ts | 5 ---
src/store/project.ts | 2 +-
src/store/type.ts | 9 ++++--
src/store/utility.ts | 4 +--
src/type/preload.ts | 2 +-
15 files changed, 65 insertions(+), 38 deletions(-)
diff --git a/src/components/App.vue b/src/components/App.vue
index ff059d5d95..1dc3451b31 100644
--- a/src/components/App.vue
+++ b/src/components/App.vue
@@ -122,7 +122,6 @@ onMounted(async () => {
engineIds = store.state.engineIds;
}
await store.dispatch("LOAD_USER_CHARACTER_ORDER");
- console.log("onMounted");
await store.dispatch("POST_ENGINE_START", {
engineIds,
});
diff --git a/src/components/Dialog/DictionaryManageDialog.vue b/src/components/Dialog/DictionaryManageDialog.vue
index aeffd0cb5e..b646d45205 100644
--- a/src/components/Dialog/DictionaryManageDialog.vue
+++ b/src/components/Dialog/DictionaryManageDialog.vue
@@ -397,7 +397,6 @@ const setYomi = async (text: string, changeWord?: boolean) => {
if (isOnlyHiraOrKana.value && text.length) {
text = convertHiraToKana(text);
text = convertLongVowel(text);
- console.log("setYomi");
accentPhrase.value = (
await createUILockAction(
store.dispatch("FETCH_ACCENT_PHRASES", {
diff --git a/src/components/Talk/AccentPhrase.vue b/src/components/Talk/AccentPhrase.vue
index f026f4c0e2..6db3210c0d 100644
--- a/src/components/Talk/AccentPhrase.vue
+++ b/src/components/Talk/AccentPhrase.vue
@@ -363,6 +363,7 @@ const lastPitches = computed(() =>
props.accentPhrase.moras.map((mora) => mora.pitch),
);
+// スライダー操作で発火
const maxPitch = 6.5;
const minPitch = 3;
const maxMoraLength = 0.3;
@@ -372,6 +373,7 @@ const changeMoraData = (
data: number,
type: MoraDataType,
) => {
+ console.log("changeMoraData in AccentPhrase.vue");
const accentPhraseIndex = props.index;
if (!props.altKeyFlag) {
if (type == "pitch") {
diff --git a/src/components/Talk/AudioDetail.vue b/src/components/Talk/AudioDetail.vue
index 957e886181..a08a0970b7 100644
--- a/src/components/Talk/AudioDetail.vue
+++ b/src/components/Talk/AudioDetail.vue
@@ -183,9 +183,38 @@ const selectedDetail = ref("accent");
// accent phrase
const uiLocked = computed(() => store.getters.UI_LOCKED);
+const switchPauseLengthMode = computed(() => store.state.switchPauseLengthMode);
+
const audioItem = computed(() => store.state.audioItems[props.activeAudioKey]);
+
const query = computed(() => audioItem.value?.query);
-const accentPhrases = computed(() => query.value?.accentPhrases);
+
+// pauseLength&pauseLengthScaleにおいては、エンジン側で行う処理を例外的にここで行う
+// storeへの反映はAccentPhrases.vueでやってくれる
+const accentPhrases = computed(() => {
+ console.log("accentPhrase in AudioDetail.vue");
+ const newAccentPhrases = query.value?.accentPhrases;
+ if (switchPauseLengthMode.value === "ABSOLUTE" && newAccentPhrases) {
+ const pauseLength = query.value?.pauseLength;
+ if (pauseLength != null) {
+ newAccentPhrases.forEach((accentPhrase) => {
+ if (accentPhrase.pauseMora) {
+ accentPhrase.pauseMora.vowelLength = pauseLength;
+ }
+ });
+ }
+ } else if (switchPauseLengthMode.value === "SCALE" && newAccentPhrases) {
+ const pauseLengthScale = query.value?.pauseLengthScale;
+ if (pauseLengthScale != null) {
+ newAccentPhrases.forEach((accentPhrase) => {
+ if (accentPhrase.pauseMora) {
+ accentPhrase.pauseMora.vowelLength *= pauseLengthScale;
+ }
+ });
+ }
+ }
+ return newAccentPhrases;
+});
// エンジンが変わったとき、selectedDetailが対応していないものを選択している場合はaccentに戻す
// TODO: 連続再生するとアクセントに移動してしまうため、タブの中身を全てdisabledにする、半透明divをかぶせるなど
@@ -314,6 +343,7 @@ watch(nowPlaying, async (newState) => {
const accentPhraseOffsets = await store.dispatch("GET_AUDIO_PLAY_OFFSETS", {
audioKey: props.activeAudioKey,
});
+ console.log(accentPhraseOffsets);
// 現在再生されているaudio elementの再生時刻を描画毎に取得(監視)し、
// それに合わせてフォーカスするアクセント句を変えていく
const focusAccentPhrase = () => {
diff --git a/src/components/Talk/AudioInfo.vue b/src/components/Talk/AudioInfo.vue
index d7c88632a2..230b175e5c 100644
--- a/src/components/Talk/AudioInfo.vue
+++ b/src/components/Talk/AudioInfo.vue
@@ -365,7 +365,6 @@ const selectedAudioKeys = computed(() =>
// 文内無音はひとまず倍率verを表示 のち必要に応じ絶対値に切替
// 泥臭くなっちゃったかも
const parameters = computed(() => {
- // 一旦ここで初期値を入れてしまう
const plParam: Parameter = {
label: "文内無音(秒)",
slider: previewSliderHelper({
diff --git a/src/domain/project/schema.ts b/src/domain/project/schema.ts
index 08d39bd201..6fe97d4d58 100644
--- a/src/domain/project/schema.ts
+++ b/src/domain/project/schema.ts
@@ -34,7 +34,7 @@ const audioQuerySchema = z.object({
volumeScale: z.number(),
prePhonemeLength: z.number(),
postPhonemeLength: z.number(),
- pauseLength: z.number(),
+ pauseLength: z.number().nullable(),
pauseLengthScale: z.number(),
outputSamplingRate: z.union([z.number(), z.literal("engineDefault")]),
outputStereo: z.boolean(),
diff --git a/src/openapi/apis/DefaultApi.ts b/src/openapi/apis/DefaultApi.ts
index de92cc6177..91e68f190b 100644
--- a/src/openapi/apis/DefaultApi.ts
+++ b/src/openapi/apis/DefaultApi.ts
@@ -1881,7 +1881,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する
*/
async morphableTargetsMorphableTargetsPostRaw(requestParameters: MorphableTargetsMorphableTargetsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- // console.log("morphableTargetsMorphableTargetsPostRaw");
if (requestParameters.requestBody === null || requestParameters.requestBody === undefined) {
throw new runtime.RequiredError('requestBody','Required parameter requestParameters.requestBody was null or undefined when calling morphableTargetsMorphableTargetsPost.');
}
@@ -1912,7 +1911,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する
*/
async morphableTargetsMorphableTargetsPost(requestParameters: MorphableTargetsMorphableTargetsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- // console.log("morphableTargetsMorphableTargetsPost");
const response = await this.morphableTargetsMorphableTargetsPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -2207,7 +2205,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Singer Info
*/
async singerInfoSingerInfoGetRaw(requestParameters: SingerInfoSingerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- // console.log("singerInfoSingerInfoGetRaw");
if (requestParameters.speakerUuid === null || requestParameters.speakerUuid === undefined) {
throw new runtime.RequiredError('speakerUuid','Required parameter requestParameters.speakerUuid was null or undefined when calling singerInfoSingerInfoGet.');
}
@@ -2278,7 +2275,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Speaker Info
*/
async speakerInfoSpeakerInfoGetRaw(requestParameters: SpeakerInfoSpeakerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- // console.log("speakerInfoSpeakerInfoGetRaw");
if (requestParameters.speakerUuid === null || requestParameters.speakerUuid === undefined) {
throw new runtime.RequiredError('speakerUuid','Required parameter requestParameters.speakerUuid was null or undefined when calling speakerInfoSpeakerInfoGet.');
}
diff --git a/src/openapi/models/AudioQuery.ts b/src/openapi/models/AudioQuery.ts
index baab874e2a..cef65dac0e 100644
--- a/src/openapi/models/AudioQuery.ts
+++ b/src/openapi/models/AudioQuery.ts
@@ -70,10 +70,10 @@ export interface AudioQuery {
postPhonemeLength: number;
/**
*
- * @type {number}
+ * @type {number | null}
* @memberof AudioQuery
*/
- pauseLength: number;
+ pauseLength: number | null;
/**
*
* @type {number}
diff --git a/src/openapi/models/Preset.ts b/src/openapi/models/Preset.ts
index e8a4e5c1d4..53bb75ef9f 100644
--- a/src/openapi/models/Preset.ts
+++ b/src/openapi/models/Preset.ts
@@ -81,10 +81,10 @@ export interface Preset {
postPhonemeLength: number;
/**
*
- * @type {number}
- * @memberof Preset
+ * @type {number | null}
+ * @memberof AudioQuery
*/
- pauseLength: number;
+ pauseLength: number | null;
/**
*
* @type {number}
diff --git a/src/store/audio.ts b/src/store/audio.ts
index 685180be3f..41ae4860d0 100644
--- a/src/store/audio.ts
+++ b/src/store/audio.ts
@@ -66,7 +66,6 @@ function parseTextFile(
userOrderedCharacterInfos: CharacterInfo[],
initVoice?: Voice,
): AudioItem[] {
- console.log("parseTextFile"); // きてない
const name2Voice = new Map();
const uuid2Voice = new Map();
for (const defaultStyleId of defaultStyleIds) {
@@ -436,7 +435,6 @@ export const audioStore = createPartialStore({
LOAD_MORPHABLE_TARGETS: {
async action({ state, dispatch, commit }, { engineId, baseStyleId }) {
- // console.log("LOAD_MORPHABLE_TARGETS");
if (!state.engineManifests[engineId].supportedFeatures?.synthesisMorphing)
return;
@@ -919,7 +917,10 @@ export const audioStore = createPartialStore({
SET_AUDIO_PAUSE_LENGTH: {
mutation(
state,
- { audioKey, pauseLength }: { audioKey: AudioKey; pauseLength: number },
+ {
+ audioKey,
+ pauseLength,
+ }: { audioKey: AudioKey; pauseLength: number | null },
) {
console.log("SET_AUDIO_PAUSE_LENGTH");
const query = state.audioItems[audioKey].query;
@@ -1318,15 +1319,13 @@ export const audioStore = createPartialStore({
{ audioKey, ...options }: { audioKey: AudioKey; cacheOnly?: boolean },
) {
console.log("FETCH_AUDIO");
- await console.log(state.audioItems[audioKey]);
const audioItem: AudioItem = JSON.parse(
JSON.stringify(state.audioItems[audioKey]),
);
- // ここでqueryのチェックを行う
- if (audioItem.query?.pauseLengthScale !== 1) {
- if (audioItem.query) {
- audioItem.query.pauseLength = -1;
- }
+ // pauseLength&pauseLengthScaleは無効(APIに相当する処理はAudioDetail.vue > accentPhraseで既に済んでる)
+ if (audioItem.query) {
+ audioItem.query.pauseLength = null;
+ audioItem.query.pauseLengthScale = 1;
}
await console.log("以下audioItem");
await console.log(audioItem);
@@ -1775,7 +1774,6 @@ export const audioStore = createPartialStore({
nowGenerating: false,
});
}
- console.log("PLAY_AUDIO:到達");
const { blob } = fetchAudioResult;
return dispatch("PLAY_AUDIO_BLOB", {
audioBlob: blob,
@@ -2806,7 +2804,13 @@ export const audioCommandStore = transformCommandStore(
},
COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH: {
- mutation(draft, payload: { audioKeys: AudioKey[]; pauseLength: number }) {
+ mutation(
+ draft,
+ payload: {
+ audioKeys: AudioKey[];
+ pauseLength: number | null;
+ },
+ ) {
for (const audioKey of payload.audioKeys) {
audioStore.mutations.SET_AUDIO_PAUSE_LENGTH(draft, {
audioKey,
@@ -2816,7 +2820,7 @@ export const audioCommandStore = transformCommandStore(
},
action(
{ commit },
- payload: { audioKeys: AudioKey[]; pauseLength: number },
+ payload: { audioKeys: AudioKey[]; pauseLength: number | null },
) {
commit("COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH", payload);
},
diff --git a/src/store/audioGenerate.ts b/src/store/audioGenerate.ts
index 3de4d1be57..278e298dbd 100644
--- a/src/store/audioGenerate.ts
+++ b/src/store/audioGenerate.ts
@@ -28,14 +28,9 @@ export async function fetchAudioFromAudioItem(
},
): Promise {
console.log("fetchAudioFromAudioItem");
- // 試しにここで弄ってみる
- // audioItem.query.accentPhrases[0].moras[0].consonantLength = 0.1; コンソールには出るがqueryでundefined
- // 多分非同期が悪さしててこの時点ではまだaudioQueryのresponseは入ってない
const engineId = audioItem.voice.engineId;
const [id, audioQuery] = await generateUniqueIdAndQuery(state, audioItem);
- await console.log(audioQuery); // preset未反映
- // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // まだ
if (audioQuery == undefined)
throw new Error("audioQuery is not defined for audioItem");
diff --git a/src/store/project.ts b/src/store/project.ts
index 0ad034d14c..917e98f18c 100755
--- a/src/store/project.ts
+++ b/src/store/project.ts
@@ -259,7 +259,7 @@ export const projectStore = createPartialStore({
0.1;
projectData.audioItems[audioItemsKey].query.postPhonemeLength =
0.1;
- projectData.audioItems[audioItemsKey].query.pauseLength = 0.1;
+ projectData.audioItems[audioItemsKey].query.pauseLength = 0.3;
projectData.audioItems[audioItemsKey].query.pauseLengthScale =
1;
projectData.audioItems[audioItemsKey].query.outputSamplingRate =
diff --git a/src/store/type.ts b/src/store/type.ts
index 2dd16d6d5f..20913afee2 100644
--- a/src/store/type.ts
+++ b/src/store/type.ts
@@ -291,7 +291,7 @@ export type AudioStoreTypes = {
};
SET_AUDIO_PAUSE_LENGTH: {
- mutation: { audioKey: AudioKey; pauseLength: number };
+ mutation: { audioKey: AudioKey; pauseLength: number | null };
};
SET_AUDIO_PAUSE_LENGTH_SCALE: {
@@ -638,8 +638,11 @@ export type AudioCommandStoreTypes = {
};
COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH: {
- mutation: { audioKeys: AudioKey[]; pauseLength: number };
- action(payload: { audioKeys: AudioKey[]; pauseLength: number }): void;
+ mutation: { audioKeys: AudioKey[]; pauseLength: number | null };
+ action(payload: {
+ audioKeys: AudioKey[];
+ pauseLength: number | null;
+ }): void;
};
COMMAND_MULTI_SET_AUDIO_PAUSE_LENGTH_SCALE: {
diff --git a/src/store/utility.ts b/src/store/utility.ts
index a3d89e9e62..b04c631ea9 100644
--- a/src/store/utility.ts
+++ b/src/store/utility.ts
@@ -106,10 +106,10 @@ export const SLIDER_PARAMETERS = {
* 文内無音(絶対値)パラメータの定義
*/
PAUSE_LENGTH: {
- max: () => 3,
+ max: () => 1,
min: () => 0,
step: () => 0.01,
- scrollStep: () => 0.1,
+ scrollStep: () => 0.01,
scrollMinStep: () => 0.01,
},
/**
diff --git a/src/type/preload.ts b/src/type/preload.ts
index b44326d6f0..c13095c269 100644
--- a/src/type/preload.ts
+++ b/src/type/preload.ts
@@ -426,7 +426,7 @@ export type Preset = {
volumeScale: number;
prePhonemeLength: number;
postPhonemeLength: number;
- pauseLength: number;
+ pauseLength: number | null;
pauseLengthScale: number;
morphingInfo?: MorphingInfo;
};
From 1f22f5614b812269481664adfc40a02fd812105b Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Tue, 28 May 2024 20:50:41 +0900
Subject: [PATCH 04/86] Add files via upload
---
env.production | 14 ++++++++++++++
env.test | 14 ++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 env.production
create mode 100644 env.test
diff --git a/env.production b/env.production
new file mode 100644
index 0000000000..5b0dcb0498
--- /dev/null
+++ b/env.production
@@ -0,0 +1,14 @@
+VITE_APP_NAME=voicevox
+VITE_DEFAULT_ENGINE_INFOS=`[
+ {
+ "uuid": "074fc39e-678b-4c13-8916-ffca8d505d1d",
+ "name": "VOICEVOX Engine",
+ "executionEnabled": true,
+ "executionFilePath": "vv-engine/run.exe",
+ "executionArgs": [],
+ "host": "http://127.0.0.1:50021"
+ }
+]`
+VITE_OFFICIAL_WEBSITE_URL=https://voicevox.hiroshiba.jp/
+VITE_LATEST_UPDATE_INFOS_URL=https://raw.githubusercontent.com/VOICEVOX/voicevox_blog/master/src/data/updateInfos.json
+VITE_GTM_CONTAINER_ID=GTM-DUMMY
diff --git a/env.test b/env.test
new file mode 100644
index 0000000000..dcf447f8b2
--- /dev/null
+++ b/env.test
@@ -0,0 +1,14 @@
+VITE_APP_NAME=voicevox
+VITE_DEFAULT_ENGINE_INFOS=`[
+ {
+ "uuid": "074fc39e-678b-4c13-8916-ffca8d505d1d",
+ "name": "VOICEVOX Engine",
+ "executionEnabled": true,
+ "executionFilePath": "../voicevox_engine/run.exe",
+ "executionArgs": [],
+ "host": "http://127.0.0.1:50021"
+ }
+]`
+VITE_OFFICIAL_WEBSITE_URL=https://voicevox.hiroshiba.jp/
+VITE_LATEST_UPDATE_INFOS_URL=https://raw.githubusercontent.com/VOICEVOX/voicevox_blog/master/src/data/updateInfos.json
+VITE_GTM_CONTAINER_ID=GTM-DUMMY
From 81079eedca21da3a7d475efd48bfd3696775296f Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Tue, 28 May 2024 21:36:22 +0900
Subject: [PATCH 05/86] =?UTF-8?q?pauseLengthScale=E3=82=92=E8=A4=87?=
=?UTF-8?q?=E6=95=B0=E5=9B=9E=E6=93=8D=E4=BD=9C=E3=81=99=E3=82=8B=E3=81=A8?=
=?UTF-8?q?=E5=8F=8D=E6=98=A0=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E3=83=90?=
=?UTF-8?q?=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
env.production | 14 ++++++++++++++
src/components/Talk/AudioDetail.vue | 6 ++++--
src/store/audio.ts | 7 +++++--
3 files changed, 23 insertions(+), 4 deletions(-)
create mode 100644 env.production
diff --git a/env.production b/env.production
new file mode 100644
index 0000000000..5b0dcb0498
--- /dev/null
+++ b/env.production
@@ -0,0 +1,14 @@
+VITE_APP_NAME=voicevox
+VITE_DEFAULT_ENGINE_INFOS=`[
+ {
+ "uuid": "074fc39e-678b-4c13-8916-ffca8d505d1d",
+ "name": "VOICEVOX Engine",
+ "executionEnabled": true,
+ "executionFilePath": "vv-engine/run.exe",
+ "executionArgs": [],
+ "host": "http://127.0.0.1:50021"
+ }
+]`
+VITE_OFFICIAL_WEBSITE_URL=https://voicevox.hiroshiba.jp/
+VITE_LATEST_UPDATE_INFOS_URL=https://raw.githubusercontent.com/VOICEVOX/voicevox_blog/master/src/data/updateInfos.json
+VITE_GTM_CONTAINER_ID=GTM-DUMMY
diff --git a/src/components/Talk/AudioDetail.vue b/src/components/Talk/AudioDetail.vue
index a08a0970b7..7e5e514e52 100644
--- a/src/components/Talk/AudioDetail.vue
+++ b/src/components/Talk/AudioDetail.vue
@@ -193,6 +193,7 @@ const query = computed(() => audioItem.value?.query);
// storeへの反映はAccentPhrases.vueでやってくれる
const accentPhrases = computed(() => {
console.log("accentPhrase in AudioDetail.vue");
+ console.log(switchPauseLengthMode.value);
const newAccentPhrases = query.value?.accentPhrases;
if (switchPauseLengthMode.value === "ABSOLUTE" && newAccentPhrases) {
const pauseLength = query.value?.pauseLength;
@@ -203,8 +204,9 @@ const accentPhrases = computed(() => {
}
});
}
- } else if (switchPauseLengthMode.value === "SCALE" && newAccentPhrases) {
+ }/* else if (switchPauseLengthMode.value === "SCALE" && newAccentPhrases) {
const pauseLengthScale = query.value?.pauseLengthScale;
+ console.log(pauseLengthScale);
if (pauseLengthScale != null) {
newAccentPhrases.forEach((accentPhrase) => {
if (accentPhrase.pauseMora) {
@@ -212,7 +214,7 @@ const accentPhrases = computed(() => {
}
});
}
- }
+ }*/
return newAccentPhrases;
});
diff --git a/src/store/audio.ts b/src/store/audio.ts
index 41ae4860d0..b14fca2b0b 100644
--- a/src/store/audio.ts
+++ b/src/store/audio.ts
@@ -1301,7 +1301,11 @@ export const audioStore = createPartialStore({
length += m.consonantLength != undefined ? m.consonantLength : 0;
length += m.vowelLength;
});
- length += phrase.pauseMora ? phrase.pauseMora.vowelLength : 0;
+ if (state.switchPauseLengthMode === "SCALE") {
+ length += phrase.pauseMora ? phrase.pauseMora.vowelLength * query.pauseLengthScale : 0;
+ } else {
+ length += phrase.pauseMora ? phrase.pauseMora.vowelLength : 0;
+ }
// post phoneme lengthは最後のアクセント句の一部として扱う
if (i === accentPhrases.length - 1) {
length += query.postPhonemeLength;
@@ -1325,7 +1329,6 @@ export const audioStore = createPartialStore({
// pauseLength&pauseLengthScaleは無効(APIに相当する処理はAudioDetail.vue > accentPhraseで既に済んでる)
if (audioItem.query) {
audioItem.query.pauseLength = null;
- audioItem.query.pauseLengthScale = 1;
}
await console.log("以下audioItem");
await console.log(audioItem);
From 0ccb1e3724d9f6ed753a75643448c480ff5c3b06 Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Tue, 28 May 2024 21:40:07 +0900
Subject: [PATCH 06/86] Delete env.test
---
env.test | 14 --------------
1 file changed, 14 deletions(-)
delete mode 100644 env.test
diff --git a/env.test b/env.test
deleted file mode 100644
index dcf447f8b2..0000000000
--- a/env.test
+++ /dev/null
@@ -1,14 +0,0 @@
-VITE_APP_NAME=voicevox
-VITE_DEFAULT_ENGINE_INFOS=`[
- {
- "uuid": "074fc39e-678b-4c13-8916-ffca8d505d1d",
- "name": "VOICEVOX Engine",
- "executionEnabled": true,
- "executionFilePath": "../voicevox_engine/run.exe",
- "executionArgs": [],
- "host": "http://127.0.0.1:50021"
- }
-]`
-VITE_OFFICIAL_WEBSITE_URL=https://voicevox.hiroshiba.jp/
-VITE_LATEST_UPDATE_INFOS_URL=https://raw.githubusercontent.com/VOICEVOX/voicevox_blog/master/src/data/updateInfos.json
-VITE_GTM_CONTAINER_ID=GTM-DUMMY
From 5fc13cd78ada8a2f4b2ae6797bf397601d7cc020 Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Tue, 28 May 2024 21:40:29 +0900
Subject: [PATCH 07/86] Delete env.production
---
env.production | 14 --------------
1 file changed, 14 deletions(-)
delete mode 100644 env.production
diff --git a/env.production b/env.production
deleted file mode 100644
index 5b0dcb0498..0000000000
--- a/env.production
+++ /dev/null
@@ -1,14 +0,0 @@
-VITE_APP_NAME=voicevox
-VITE_DEFAULT_ENGINE_INFOS=`[
- {
- "uuid": "074fc39e-678b-4c13-8916-ffca8d505d1d",
- "name": "VOICEVOX Engine",
- "executionEnabled": true,
- "executionFilePath": "vv-engine/run.exe",
- "executionArgs": [],
- "host": "http://127.0.0.1:50021"
- }
-]`
-VITE_OFFICIAL_WEBSITE_URL=https://voicevox.hiroshiba.jp/
-VITE_LATEST_UPDATE_INFOS_URL=https://raw.githubusercontent.com/VOICEVOX/voicevox_blog/master/src/data/updateInfos.json
-VITE_GTM_CONTAINER_ID=GTM-DUMMY
From 5ca3eca71c9e4c04ff737ada5801ec67bf8fab7a Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Sun, 2 Jun 2024 05:40:28 +0900
Subject: [PATCH 08/86] =?UTF-8?q?=E7=89=87=E4=BB=98=E3=81=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
env.test | 14 +
openapi.json | 3171 +----------------------
src/backend/electron/main.ts | 3 +-
src/components/Dialog/SettingDialog.vue | 5 +-
src/components/Talk/AccentPhrase.vue | 9 +-
src/components/Talk/AudioCell.vue | 1 -
src/components/Talk/AudioDetail.vue | 16 +-
src/components/Talk/AudioInfo.vue | 4 -
src/components/Talk/TalkEditor.vue | 4 +-
src/openapi/apis/DefaultApi.ts | 37 -
src/store/audio.ts | 54 +-
src/store/audioGenerate.ts | 11 +-
src/store/engine.ts | 3 -
src/store/preset.ts | 5 +-
src/store/project.ts | 4 -
src/store/proxy.ts | 2 -
16 files changed, 28 insertions(+), 3315 deletions(-)
create mode 100644 env.test
diff --git a/env.test b/env.test
new file mode 100644
index 0000000000..dcf447f8b2
--- /dev/null
+++ b/env.test
@@ -0,0 +1,14 @@
+VITE_APP_NAME=voicevox
+VITE_DEFAULT_ENGINE_INFOS=`[
+ {
+ "uuid": "074fc39e-678b-4c13-8916-ffca8d505d1d",
+ "name": "VOICEVOX Engine",
+ "executionEnabled": true,
+ "executionFilePath": "../voicevox_engine/run.exe",
+ "executionArgs": [],
+ "host": "http://127.0.0.1:50021"
+ }
+]`
+VITE_OFFICIAL_WEBSITE_URL=https://voicevox.hiroshiba.jp/
+VITE_LATEST_UPDATE_INFOS_URL=https://raw.githubusercontent.com/VOICEVOX/voicevox_blog/master/src/data/updateInfos.json
+VITE_GTM_CONTAINER_ID=GTM-DUMMY
diff --git a/openapi.json b/openapi.json
index bdef017bb1..f3cfa20a90 100644
--- a/openapi.json
+++ b/openapi.json
@@ -1,3170 +1 @@
-{
- "openapi": "3.1.0",
- "info": {
- "title": "VOICEVOX Engine",
- "description": "VOICEVOXの音声合成エンジンです。",
- "version": "0.18.1"
- },
- "paths": {
- "/audio_query": {
- "post": {
- "tags": [
- "クエリ作成"
- ],
- "summary": "音声合成用のクエリを作成する",
- "description": "音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。",
- "operationId": "audio_query_audio_query_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "string",
- "title": "Text"
- },
- "name": "text",
- "in": "query"
- },
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AudioQuery"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/audio_query_from_preset": {
- "post": {
- "tags": [
- "クエリ作成"
- ],
- "summary": "音声合成用のクエリをプリセットを用いて作成する",
- "description": "音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。",
- "operationId": "audio_query_from_preset_audio_query_from_preset_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "string",
- "title": "Text"
- },
- "name": "text",
- "in": "query"
- },
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Preset Id"
- },
- "name": "preset_id",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AudioQuery"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/accent_phrases": {
- "post": {
- "tags": [
- "クエリ編集"
- ],
- "summary": "テキストからアクセント句を得る",
- "description": "テキストからアクセント句を得ます。\nis_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。\n* 全てのカナはカタカナで記述される\n* アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。\n* カナの手前に`_`を入れるとそのカナは無声化される\n* アクセント位置を`'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。\n* アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。",
- "operationId": "accent_phrases_accent_phrases_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "string",
- "title": "Text"
- },
- "name": "text",
- "in": "query"
- },
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "boolean",
- "title": "Is Kana",
- "default": false
- },
- "name": "is_kana",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "Response Accent Phrases Accent Phrases Post"
- }
- }
- }
- },
- "400": {
- "description": "読み仮名のパースに失敗",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ParseKanaBadRequest"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/mora_data": {
- "post": {
- "tags": [
- "クエリ編集"
- ],
- "summary": "アクセント句から音高・音素長を得る",
- "operationId": "mora_data_mora_data_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "Accent Phrases"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "Response Mora Data Mora Data Post"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/mora_length": {
- "post": {
- "tags": [
- "クエリ編集"
- ],
- "summary": "アクセント句から音素長を得る",
- "operationId": "mora_length_mora_length_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "Accent Phrases"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "Response Mora Length Mora Length Post"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/mora_pitch": {
- "post": {
- "tags": [
- "クエリ編集"
- ],
- "summary": "アクセント句から音高を得る",
- "operationId": "mora_pitch_mora_pitch_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "Accent Phrases"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "Response Mora Pitch Mora Pitch Post"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/synthesis": {
- "post": {
- "tags": [
- "音声合成"
- ],
- "summary": "音声合成する",
- "operationId": "synthesis_synthesis_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "description": "疑問系のテキストが与えられたら語尾を自動調整する",
- "required": false,
- "schema": {
- "type": "boolean",
- "title": "Enable Interrogative Upspeak",
- "description": "疑問系のテキストが与えられたら語尾を自動調整する",
- "default": true
- },
- "name": "enable_interrogative_upspeak",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AudioQuery"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "audio/wav": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/cancellable_synthesis": {
- "post": {
- "tags": [
- "音声合成"
- ],
- "summary": "音声合成する(キャンセル可能)",
- "operationId": "cancellable_synthesis_cancellable_synthesis_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AudioQuery"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "audio/wav": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/multi_synthesis": {
- "post": {
- "tags": [
- "音声合成"
- ],
- "summary": "複数まとめて音声合成する",
- "operationId": "multi_synthesis_multi_synthesis_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/AudioQuery"
- },
- "type": "array",
- "title": "Queries"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/zip": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/morphable_targets": {
- "post": {
- "tags": [
- "音声合成"
- ],
- "summary": "指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する",
- "description": "指定されたベーススタイルに対してエンジン内の各話者がモーフィング機能を利用可能か返します。\nモーフィングの許可/禁止は`/speakers`の`speaker.supported_features.synthesis_morphing`に記載されています。\nプロパティが存在しない場合は、モーフィングが許可されているとみなします。\n返り値のスタイルIDはstring型なので注意。",
- "operationId": "morphable_targets_morphable_targets_post",
- "parameters": [
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "type": "integer"
- },
- "type": "array",
- "title": "Base Style Ids"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "additionalProperties": {
- "$ref": "#/components/schemas/MorphableTargetInfo"
- },
- "type": "object"
- },
- "type": "array",
- "title": "Response Morphable Targets Morphable Targets Post"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/synthesis_morphing": {
- "post": {
- "tags": [
- "音声合成"
- ],
- "summary": "2種類のスタイルでモーフィングした音声を合成する",
- "description": "指定された2種類のスタイルで音声を合成、指定した割合でモーフィングした音声を得ます。\nモーフィングの割合は`morph_rate`で指定でき、0.0でベースのスタイル、1.0でターゲットのスタイルに近づきます。",
- "operationId": "_synthesis_morphing_synthesis_morphing_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Base Speaker"
- },
- "name": "base_speaker",
- "in": "query"
- },
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Target Speaker"
- },
- "name": "target_speaker",
- "in": "query"
- },
- {
- "required": true,
- "schema": {
- "type": "number",
- "maximum": 1.0,
- "minimum": 0.0,
- "title": "Morph Rate"
- },
- "name": "morph_rate",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AudioQuery"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "audio/wav": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/sing_frame_audio_query": {
- "post": {
- "tags": [
- "クエリ作成"
- ],
- "summary": "歌唱音声合成用のクエリを作成する",
- "description": "歌唱音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま歌唱音声合成に利用できます。各値の意味は`Schemas`を参照してください。",
- "operationId": "sing_frame_audio_query_sing_frame_audio_query_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Score"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FrameAudioQuery"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/frame_synthesis": {
- "post": {
- "tags": [
- "音声合成"
- ],
- "summary": "Frame Synthesis",
- "description": "歌唱音声合成を行います。",
- "operationId": "frame_synthesis_frame_synthesis_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FrameAudioQuery"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "audio/wav": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/connect_waves": {
- "post": {
- "tags": [
- "その他"
- ],
- "summary": "base64エンコードされた複数のwavデータを一つに結合する",
- "description": "base64エンコードされたwavデータを一纏めにし、wavファイルで返します。",
- "operationId": "connect_waves_connect_waves_post",
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "title": "Waves"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "audio/wav": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/presets": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Get Presets",
- "description": "エンジンが保持しているプリセットの設定を返します",
- "operationId": "get_presets_presets_get",
- "responses": {
- "200": {
- "description": "プリセットのリスト",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/Preset"
- },
- "type": "array",
- "title": "Response Get Presets Presets Get"
- }
- }
- }
- }
- }
- }
- },
- "/add_preset": {
- "post": {
- "tags": [
- "その他"
- ],
- "summary": "Add Preset",
- "description": "新しいプリセットを追加します",
- "operationId": "add_preset_add_preset_post",
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "allOf": [
- {
- "$ref": "#/components/schemas/Preset"
- }
- ],
- "title": "Preset",
- "description": "新しいプリセット。プリセットIDが既存のものと重複している場合は、新規のプリセットIDが採番されます。"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "追加したプリセットのプリセットID",
- "content": {
- "application/json": {
- "schema": {
- "type": "integer",
- "title": "Response Add Preset Add Preset Post"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/update_preset": {
- "post": {
- "tags": [
- "その他"
- ],
- "summary": "Update Preset",
- "description": "既存のプリセットを更新します",
- "operationId": "update_preset_update_preset_post",
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "allOf": [
- {
- "$ref": "#/components/schemas/Preset"
- }
- ],
- "title": "Preset",
- "description": "更新するプリセット。プリセットIDが更新対象と一致している必要があります。"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "更新したプリセットのプリセットID",
- "content": {
- "application/json": {
- "schema": {
- "type": "integer",
- "title": "Response Update Preset Update Preset Post"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/delete_preset": {
- "post": {
- "tags": [
- "その他"
- ],
- "summary": "Delete Preset",
- "description": "既存のプリセットを削除します",
- "operationId": "delete_preset_delete_preset_post",
- "parameters": [
- {
- "description": "削除するプリセットのプリセットID",
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Id",
- "description": "削除するプリセットのプリセットID"
- },
- "name": "id",
- "in": "query"
- }
- ],
- "responses": {
- "204": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/version": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Version",
- "operationId": "version_version_get",
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "title": "Response Version Version Get"
- }
- }
- }
- }
- }
- }
- },
- "/core_versions": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Core Versions",
- "operationId": "core_versions_core_versions_get",
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "title": "Response Core Versions Core Versions Get"
- }
- }
- }
- }
- }
- }
- },
- "/speakers": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Speakers",
- "operationId": "speakers_speakers_get",
- "parameters": [
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/Speaker"
- },
- "type": "array",
- "title": "Response Speakers Speakers Get"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/speaker_info": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Speaker Info",
- "description": "指定されたspeaker_uuidに関する情報をjson形式で返します。\n画像や音声はbase64エンコードされたものが返されます。",
- "operationId": "speaker_info_speaker_info_get",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "string",
- "title": "Speaker Uuid"
- },
- "name": "speaker_uuid",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SpeakerInfo"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/singers": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Singers",
- "operationId": "singers_singers_get",
- "parameters": [
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/Speaker"
- },
- "type": "array",
- "title": "Response Singers Singers Get"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/singer_info": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Singer Info",
- "description": "指定されたspeaker_uuidに関する情報をjson形式で返します。\n画像や音声はbase64エンコードされたものが返されます。",
- "operationId": "singer_info_singer_info_get",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "string",
- "title": "Speaker Uuid"
- },
- "name": "speaker_uuid",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SpeakerInfo"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/downloadable_libraries": {
- "get": {
- "tags": [
- "音声ライブラリ管理"
- ],
- "summary": "Downloadable Libraries",
- "description": "ダウンロード可能な音声ライブラリの情報を返します。",
- "operationId": "downloadable_libraries_downloadable_libraries_get",
- "responses": {
- "200": {
- "description": "ダウンロード可能な音声ライブラリの情報リスト",
- "content": {
- "application/json": {
- "schema": {
- "items": {
- "$ref": "#/components/schemas/DownloadableLibraryInfo"
- },
- "type": "array",
- "title": "Response Downloadable Libraries Downloadable Libraries Get"
- }
- }
- }
- }
- }
- }
- },
- "/installed_libraries": {
- "get": {
- "tags": [
- "音声ライブラリ管理"
- ],
- "summary": "Installed Libraries",
- "description": "インストールした音声ライブラリの情報を返します。",
- "operationId": "installed_libraries_installed_libraries_get",
- "responses": {
- "200": {
- "description": "インストールした音声ライブラリの情報",
- "content": {
- "application/json": {
- "schema": {
- "additionalProperties": {
- "$ref": "#/components/schemas/InstalledLibraryInfo"
- },
- "type": "object",
- "title": "Response Installed Libraries Installed Libraries Get"
- }
- }
- }
- }
- }
- }
- },
- "/install_library/{library_uuid}": {
- "post": {
- "tags": [
- "音声ライブラリ管理"
- ],
- "summary": "Install Library",
- "description": "音声ライブラリをインストールします。\n音声ライブラリのZIPファイルをリクエストボディとして送信してください。",
- "operationId": "install_library_install_library__library_uuid__post",
- "parameters": [
- {
- "description": "音声ライブラリのID",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Library Uuid",
- "description": "音声ライブラリのID"
- },
- "name": "library_uuid",
- "in": "path"
- }
- ],
- "responses": {
- "204": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/uninstall_library/{library_uuid}": {
- "post": {
- "tags": [
- "音声ライブラリ管理"
- ],
- "summary": "Uninstall Library",
- "description": "音声ライブラリをアンインストールします。",
- "operationId": "uninstall_library_uninstall_library__library_uuid__post",
- "parameters": [
- {
- "description": "音声ライブラリのID",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Library Uuid",
- "description": "音声ライブラリのID"
- },
- "name": "library_uuid",
- "in": "path"
- }
- ],
- "responses": {
- "204": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/initialize_speaker": {
- "post": {
- "tags": [
- "その他"
- ],
- "summary": "Initialize Speaker",
- "description": "指定されたスタイルを初期化します。\n実行しなくても他のAPIは使用できますが、初回実行時に時間がかかることがあります。",
- "operationId": "initialize_speaker_initialize_speaker_post",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "description": "既に初期化済みのスタイルの再初期化をスキップするかどうか",
- "required": false,
- "schema": {
- "type": "boolean",
- "title": "Skip Reinit",
- "description": "既に初期化済みのスタイルの再初期化をスキップするかどうか",
- "default": false
- },
- "name": "skip_reinit",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "204": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/is_initialized_speaker": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Is Initialized Speaker",
- "description": "指定されたスタイルが初期化されているかどうかを返します。",
- "operationId": "is_initialized_speaker_is_initialized_speaker_get",
- "parameters": [
- {
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Speaker"
- },
- "name": "speaker",
- "in": "query"
- },
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "type": "boolean",
- "title": "Response Is Initialized Speaker Is Initialized Speaker Get"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/user_dict": {
- "get": {
- "tags": [
- "ユーザー辞書"
- ],
- "summary": "Get User Dict Words",
- "description": "ユーザー辞書に登録されている単語の一覧を返します。\n単語の表層形(surface)は正規化済みの物を返します。",
- "operationId": "get_user_dict_words_user_dict_get",
- "responses": {
- "200": {
- "description": "単語のUUIDとその詳細",
- "content": {
- "application/json": {
- "schema": {
- "additionalProperties": {
- "$ref": "#/components/schemas/UserDictWord"
- },
- "type": "object",
- "title": "Response Get User Dict Words User Dict Get"
- }
- }
- }
- }
- }
- }
- },
- "/user_dict_word": {
- "post": {
- "tags": [
- "ユーザー辞書"
- ],
- "summary": "Add User Dict Word",
- "description": "ユーザー辞書に言葉を追加します。",
- "operationId": "add_user_dict_word_user_dict_word_post",
- "parameters": [
- {
- "description": "言葉の表層形",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Surface",
- "description": "言葉の表層形"
- },
- "name": "surface",
- "in": "query"
- },
- {
- "description": "言葉の発音(カタカナ)",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Pronunciation",
- "description": "言葉の発音(カタカナ)"
- },
- "name": "pronunciation",
- "in": "query"
- },
- {
- "description": "アクセント型(音が下がる場所を指す)",
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Accent Type",
- "description": "アクセント型(音が下がる場所を指す)"
- },
- "name": "accent_type",
- "in": "query"
- },
- {
- "description": "PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか",
- "required": false,
- "schema": {
- "allOf": [
- {
- "$ref": "#/components/schemas/WordTypes"
- }
- ],
- "description": "PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"
- },
- "name": "word_type",
- "in": "query"
- },
- {
- "description": "単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨",
- "required": false,
- "schema": {
- "type": "integer",
- "maximum": 10.0,
- "minimum": 0.0,
- "title": "Priority",
- "description": "単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨"
- },
- "name": "priority",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "title": "Response Add User Dict Word User Dict Word Post"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/user_dict_word/{word_uuid}": {
- "put": {
- "tags": [
- "ユーザー辞書"
- ],
- "summary": "Rewrite User Dict Word",
- "description": "ユーザー辞書に登録されている言葉を更新します。",
- "operationId": "rewrite_user_dict_word_user_dict_word__word_uuid__put",
- "parameters": [
- {
- "description": "更新する言葉のUUID",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Word Uuid",
- "description": "更新する言葉のUUID"
- },
- "name": "word_uuid",
- "in": "path"
- },
- {
- "description": "言葉の表層形",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Surface",
- "description": "言葉の表層形"
- },
- "name": "surface",
- "in": "query"
- },
- {
- "description": "言葉の発音(カタカナ)",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Pronunciation",
- "description": "言葉の発音(カタカナ)"
- },
- "name": "pronunciation",
- "in": "query"
- },
- {
- "description": "アクセント型(音が下がる場所を指す)",
- "required": true,
- "schema": {
- "type": "integer",
- "title": "Accent Type",
- "description": "アクセント型(音が下がる場所を指す)"
- },
- "name": "accent_type",
- "in": "query"
- },
- {
- "description": "PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか",
- "required": false,
- "schema": {
- "allOf": [
- {
- "$ref": "#/components/schemas/WordTypes"
- }
- ],
- "description": "PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"
- },
- "name": "word_type",
- "in": "query"
- },
- {
- "description": "単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。",
- "required": false,
- "schema": {
- "type": "integer",
- "maximum": 10.0,
- "minimum": 0.0,
- "title": "Priority",
- "description": "単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。"
- },
- "name": "priority",
- "in": "query"
- }
- ],
- "responses": {
- "204": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- },
- "delete": {
- "tags": [
- "ユーザー辞書"
- ],
- "summary": "Delete User Dict Word",
- "description": "ユーザー辞書に登録されている言葉を削除します。",
- "operationId": "delete_user_dict_word_user_dict_word__word_uuid__delete",
- "parameters": [
- {
- "description": "削除する言葉のUUID",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Word Uuid",
- "description": "削除する言葉のUUID"
- },
- "name": "word_uuid",
- "in": "path"
- }
- ],
- "responses": {
- "204": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/import_user_dict": {
- "post": {
- "tags": [
- "ユーザー辞書"
- ],
- "summary": "Import User Dict Words",
- "description": "他のユーザー辞書をインポートします。",
- "operationId": "import_user_dict_words_import_user_dict_post",
- "parameters": [
- {
- "description": "重複したエントリがあった場合、上書きするかどうか",
- "required": true,
- "schema": {
- "type": "boolean",
- "title": "Override",
- "description": "重複したエントリがあった場合、上書きするかどうか"
- },
- "name": "override",
- "in": "query"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "additionalProperties": {
- "$ref": "#/components/schemas/UserDictWord"
- },
- "type": "object",
- "title": "Import Dict Data",
- "description": "インポートするユーザー辞書のデータ"
- }
- }
- },
- "required": true
- },
- "responses": {
- "204": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/supported_devices": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Supported Devices",
- "operationId": "supported_devices_supported_devices_get",
- "parameters": [
- {
- "required": false,
- "schema": {
- "type": "string",
- "title": "Core Version"
- },
- "name": "core_version",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SupportedDevicesInfo"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/engine_manifest": {
- "get": {
- "tags": [
- "その他"
- ],
- "summary": "Engine Manifest",
- "operationId": "engine_manifest_engine_manifest_get",
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/EngineManifest"
- }
- }
- }
- }
- }
- }
- },
- "/validate_kana": {
- "post": {
- "tags": [
- "その他"
- ],
- "summary": "テキストがAquesTalk 風記法に従っているか判定する",
- "description": "テキストがAquesTalk 風記法に従っているかどうかを判定します。\n従っていない場合はエラーが返ります。",
- "operationId": "validate_kana_validate_kana_post",
- "parameters": [
- {
- "description": "判定する対象の文字列",
- "required": true,
- "schema": {
- "type": "string",
- "title": "Text",
- "description": "判定する対象の文字列"
- },
- "name": "text",
- "in": "query"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful Response",
- "content": {
- "application/json": {
- "schema": {
- "type": "boolean",
- "title": "Response Validate Kana Validate Kana Post"
- }
- }
- }
- },
- "400": {
- "description": "テキストが不正です",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ParseKanaBadRequest"
- }
- }
- }
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- },
- "/setting": {
- "get": {
- "tags": [
- "設定"
- ],
- "summary": "Setting Get",
- "description": "設定ページを返します。",
- "operationId": "setting_get_setting_get",
- "responses": {
- "200": {
- "description": "Successful Response"
- }
- }
- },
- "post": {
- "tags": [
- "設定"
- ],
- "summary": "Setting Post",
- "description": "設定を更新します。",
- "operationId": "setting_post_setting_post",
- "requestBody": {
- "content": {
- "application/x-www-form-urlencoded": {
- "schema": {
- "$ref": "#/components/schemas/Body_setting_post_setting_post"
- }
- }
- },
- "required": true
- },
- "responses": {
- "200": {
- "description": "Successful Response"
- },
- "422": {
- "description": "Validation Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HTTPValidationError"
- }
- }
- }
- }
- }
- }
- }
- },
- "components": {
- "schemas": {
- "AccentPhrase": {
- "properties": {
- "moras": {
- "items": {
- "$ref": "#/components/schemas/Mora"
- },
- "type": "array",
- "title": "モーラのリスト"
- },
- "accent": {
- "type": "integer",
- "title": "アクセント箇所"
- },
- "pause_mora": {
- "allOf": [
- {
- "$ref": "#/components/schemas/Mora"
- }
- ],
- "title": "後ろに無音を付けるかどうか"
- },
- "is_interrogative": {
- "type": "boolean",
- "title": "疑問系かどうか",
- "default": false
- }
- },
- "type": "object",
- "required": [
- "moras",
- "accent"
- ],
- "title": "AccentPhrase",
- "description": "アクセント句ごとの情報"
- },
- "AudioQuery": {
- "properties": {
- "accent_phrases": {
- "items": {
- "$ref": "#/components/schemas/AccentPhrase"
- },
- "type": "array",
- "title": "アクセント句のリスト"
- },
- "speedScale": {
- "type": "number",
- "title": "全体の話速"
- },
- "pitchScale": {
- "type": "number",
- "title": "全体の音高"
- },
- "intonationScale": {
- "type": "number",
- "title": "全体の抑揚"
- },
- "volumeScale": {
- "type": "number",
- "title": "全体の音量"
- },
- "prePhonemeLength": {
- "type": "number",
- "title": "音声の前の無音時間"
- },
- "postPhonemeLength": {
- "type": "number",
- "title": "音声の後の無音時間"
- },
- "pauseLength": {
- "type": "number",
- "title": "読点や括弧等の無音時間(絶対値)"
- },
- "pauseLengthScale": {
- "type": "number",
- "title": "読点や括弧等の無音時間(倍率)"
- },
- "outputSamplingRate": {
- "type": "integer",
- "title": "音声データの出力サンプリングレート"
- },
- "outputStereo": {
- "type": "boolean",
- "title": "音声データをステレオ出力するか否か"
- },
- "kana": {
- "type": "string",
- "title": "[読み取り専用]AquesTalk 風記法によるテキスト。音声合成用のクエリとしては無視される"
- }
- },
- "type": "object",
- "required": [
- "accent_phrases",
- "speedScale",
- "pitchScale",
- "intonationScale",
- "volumeScale",
- "prePhonemeLength",
- "postPhonemeLength",
- "pauseLength",
- "pauseLengthScale",
- "outputSamplingRate",
- "outputStereo"
- ],
- "title": "AudioQuery",
- "description": "音声合成用のクエリ"
- },
- "Body_setting_post_setting_post": {
- "properties": {
- "cors_policy_mode": {
- "$ref": "#/components/schemas/CorsPolicyMode"
- },
- "allow_origin": {
- "type": "string",
- "title": "Allow Origin"
- }
- },
- "type": "object",
- "required": [
- "cors_policy_mode"
- ],
- "title": "Body_setting_post_setting_post"
- },
- "CorsPolicyMode": {
- "type": "string",
- "enum": [
- "all",
- "localapps"
- ],
- "title": "CorsPolicyMode",
- "description": "CORSの許可モード"
- },
- "DownloadableLibraryInfo": {
- "properties": {
- "name": {
- "type": "string",
- "title": "音声ライブラリの名前"
- },
- "uuid": {
- "type": "string",
- "title": "音声ライブラリのUUID"
- },
- "version": {
- "type": "string",
- "title": "音声ライブラリのバージョン"
- },
- "download_url": {
- "type": "string",
- "title": "音声ライブラリのダウンロードURL"
- },
- "bytes": {
- "type": "integer",
- "title": "音声ライブラリのバイト数"
- },
- "speakers": {
- "items": {
- "$ref": "#/components/schemas/LibrarySpeaker"
- },
- "type": "array",
- "title": "音声ライブラリに含まれる話者のリスト"
- }
- },
- "type": "object",
- "required": [
- "name",
- "uuid",
- "version",
- "download_url",
- "bytes",
- "speakers"
- ],
- "title": "DownloadableLibraryInfo",
- "description": "ダウンロード可能な音声ライブラリの情報"
- },
- "EngineManifest": {
- "properties": {
- "manifest_version": {
- "type": "string",
- "title": "マニフェストのバージョン"
- },
- "name": {
- "type": "string",
- "title": "エンジン名"
- },
- "brand_name": {
- "type": "string",
- "title": "ブランド名"
- },
- "uuid": {
- "type": "string",
- "title": "エンジンのUUID"
- },
- "url": {
- "type": "string",
- "title": "エンジンのURL"
- },
- "icon": {
- "type": "string",
- "title": "エンジンのアイコンをBASE64エンコードしたもの"
- },
- "default_sampling_rate": {
- "type": "integer",
- "title": "デフォルトのサンプリング周波数"
- },
- "frame_rate": {
- "type": "number",
- "title": "エンジンのフレームレート"
- },
- "terms_of_service": {
- "type": "string",
- "title": "エンジンの利用規約"
- },
- "update_infos": {
- "items": {
- "$ref": "#/components/schemas/UpdateInfo"
- },
- "type": "array",
- "title": "エンジンのアップデート情報"
- },
- "dependency_licenses": {
- "items": {
- "$ref": "#/components/schemas/LicenseInfo"
- },
- "type": "array",
- "title": "依存関係のライセンス情報"
- },
- "supported_vvlib_manifest_version": {
- "type": "string",
- "title": "エンジンが対応するvvlibのバージョン"
- },
- "supported_features": {
- "allOf": [
- {
- "$ref": "#/components/schemas/SupportedFeatures"
- }
- ],
- "title": "エンジンが持つ機能"
- }
- },
- "type": "object",
- "required": [
- "manifest_version",
- "name",
- "brand_name",
- "uuid",
- "url",
- "icon",
- "default_sampling_rate",
- "frame_rate",
- "terms_of_service",
- "update_infos",
- "dependency_licenses",
- "supported_features"
- ],
- "title": "EngineManifest",
- "description": "エンジン自体に関する情報"
- },
- "FrameAudioQuery": {
- "properties": {
- "f0": {
- "items": {
- "type": "number"
- },
- "type": "array",
- "title": "フレームごとの基本周波数"
- },
- "volume": {
- "items": {
- "type": "number"
- },
- "type": "array",
- "title": "フレームごとの音量"
- },
- "phonemes": {
- "items": {
- "$ref": "#/components/schemas/FramePhoneme"
- },
- "type": "array",
- "title": "音素のリスト"
- },
- "volumeScale": {
- "type": "number",
- "title": "全体の音量"
- },
- "outputSamplingRate": {
- "type": "integer",
- "title": "音声データの出力サンプリングレート"
- },
- "outputStereo": {
- "type": "boolean",
- "title": "音声データをステレオ出力するか否か"
- }
- },
- "type": "object",
- "required": [
- "f0",
- "volume",
- "phonemes",
- "volumeScale",
- "outputSamplingRate",
- "outputStereo"
- ],
- "title": "FrameAudioQuery",
- "description": "フレームごとの音声合成用のクエリ"
- },
- "FramePhoneme": {
- "properties": {
- "phoneme": {
- "type": "string",
- "title": "音素"
- },
- "frame_length": {
- "type": "integer",
- "title": "音素のフレーム長"
- }
- },
- "type": "object",
- "required": [
- "phoneme",
- "frame_length"
- ],
- "title": "FramePhoneme",
- "description": "音素の情報"
- },
- "HTTPValidationError": {
- "properties": {
- "detail": {
- "items": {
- "$ref": "#/components/schemas/ValidationError"
- },
- "type": "array",
- "title": "Detail"
- }
- },
- "type": "object",
- "title": "HTTPValidationError"
- },
- "InstalledLibraryInfo": {
- "properties": {
- "name": {
- "type": "string",
- "title": "音声ライブラリの名前"
- },
- "uuid": {
- "type": "string",
- "title": "音声ライブラリのUUID"
- },
- "version": {
- "type": "string",
- "title": "音声ライブラリのバージョン"
- },
- "download_url": {
- "type": "string",
- "title": "音声ライブラリのダウンロードURL"
- },
- "bytes": {
- "type": "integer",
- "title": "音声ライブラリのバイト数"
- },
- "speakers": {
- "items": {
- "$ref": "#/components/schemas/LibrarySpeaker"
- },
- "type": "array",
- "title": "音声ライブラリに含まれる話者のリスト"
- },
- "uninstallable": {
- "type": "boolean",
- "title": "アンインストール可能かどうか"
- }
- },
- "type": "object",
- "required": [
- "name",
- "uuid",
- "version",
- "download_url",
- "bytes",
- "speakers",
- "uninstallable"
- ],
- "title": "InstalledLibraryInfo",
- "description": "インストール済み音声ライブラリの情報"
- },
- "LibrarySpeaker": {
- "properties": {
- "speaker": {
- "allOf": [
- {
- "$ref": "#/components/schemas/Speaker"
- }
- ],
- "title": "話者情報"
- },
- "speaker_info": {
- "allOf": [
- {
- "$ref": "#/components/schemas/SpeakerInfo"
- }
- ],
- "title": "話者の追加情報"
- }
- },
- "type": "object",
- "required": [
- "speaker",
- "speaker_info"
- ],
- "title": "LibrarySpeaker",
- "description": "音声ライブラリに含まれる話者の情報"
- },
- "LicenseInfo": {
- "properties": {
- "name": {
- "type": "string",
- "title": "依存ライブラリ名"
- },
- "version": {
- "type": "string",
- "title": "依存ライブラリのバージョン"
- },
- "license": {
- "type": "string",
- "title": "依存ライブラリのライセンス名"
- },
- "text": {
- "type": "string",
- "title": "依存ライブラリのライセンス本文"
- }
- },
- "type": "object",
- "required": [
- "name",
- "text"
- ],
- "title": "LicenseInfo",
- "description": "依存ライブラリのライセンス情報"
- },
- "Mora": {
- "properties": {
- "text": {
- "type": "string",
- "title": "文字"
- },
- "consonant": {
- "type": "string",
- "title": "子音の音素"
- },
- "consonant_length": {
- "type": "number",
- "title": "子音の音長"
- },
- "vowel": {
- "type": "string",
- "title": "母音の音素"
- },
- "vowel_length": {
- "type": "number",
- "title": "母音の音長"
- },
- "pitch": {
- "type": "number",
- "title": "音高"
- }
- },
- "type": "object",
- "required": [
- "text",
- "vowel",
- "vowel_length",
- "pitch"
- ],
- "title": "Mora",
- "description": "モーラ(子音+母音)ごとの情報"
- },
- "MorphableTargetInfo": {
- "properties": {
- "is_morphable": {
- "type": "boolean",
- "title": "指定した話者に対してモーフィングの可否"
- }
- },
- "type": "object",
- "required": [
- "is_morphable"
- ],
- "title": "MorphableTargetInfo"
- },
- "Note": {
- "properties": {
- "key": {
- "type": "integer",
- "title": "音階"
- },
- "frame_length": {
- "type": "integer",
- "title": "音符のフレーム長"
- },
- "lyric": {
- "type": "string",
- "title": "音符の歌詞"
- }
- },
- "type": "object",
- "required": [
- "frame_length",
- "lyric"
- ],
- "title": "Note",
- "description": "音符ごとの情報"
- },
- "ParseKanaBadRequest": {
- "properties": {
- "text": {
- "type": "string",
- "title": "エラーメッセージ"
- },
- "error_name": {
- "type": "string",
- "title": "エラー名",
- "description": "|name|description|\n|---|---|\n| UNKNOWN_TEXT | 判別できない読み仮名があります: {text} |\n| ACCENT_TOP | 句頭にアクセントは置けません: {text} |\n| ACCENT_TWICE | 1つのアクセント句に二つ以上のアクセントは置けません: {text} |\n| ACCENT_NOTFOUND | アクセントを指定していないアクセント句があります: {text} |\n| EMPTY_PHRASE | {position}番目のアクセント句が空白です |\n| INTERROGATION_MARK_NOT_AT_END | アクセント句末以外に「?」は置けません: {text} |\n| INFINITE_LOOP | 処理時に無限ループになってしまいました...バグ報告をお願いします。 |"
- },
- "error_args": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object",
- "title": "エラーを起こした箇所"
- }
- },
- "type": "object",
- "required": [
- "text",
- "error_name",
- "error_args"
- ],
- "title": "ParseKanaBadRequest"
- },
- "Preset": {
- "properties": {
- "id": {
- "type": "integer",
- "title": "プリセットID"
- },
- "name": {
- "type": "string",
- "title": "プリセット名"
- },
- "speaker_uuid": {
- "type": "string",
- "title": "話者のUUID"
- },
- "style_id": {
- "type": "integer",
- "title": "スタイルID"
- },
- "speedScale": {
- "type": "number",
- "title": "全体の話速"
- },
- "pitchScale": {
- "type": "number",
- "title": "全体の音高"
- },
- "intonationScale": {
- "type": "number",
- "title": "全体の抑揚"
- },
- "volumeScale": {
- "type": "number",
- "title": "全体の音量"
- },
- "prePhonemeLength": {
- "type": "number",
- "title": "音声の前の無音時間"
- },
- "postPhonemeLength": {
- "type": "number",
- "title": "音声の後の無音時間"
- },
- "pauseLength": {
- "type": "number",
- "title": "読点や括弧等の無音時間(絶対値)"
- },
- "pauseLengthScale": {
- "type": "number",
- "title": "読点や括弧等の無音時間(倍率)"
- }
- },
- "type": "object",
- "required": [
- "id",
- "name",
- "speaker_uuid",
- "style_id",
- "speedScale",
- "pitchScale",
- "intonationScale",
- "volumeScale",
- "prePhonemeLength",
- "postPhonemeLength",
- "pauseLength",
- "pauseLengthScale"
- ],
- "title": "Preset",
- "description": "プリセット情報"
- },
- "Score": {
- "properties": {
- "notes": {
- "items": {
- "$ref": "#/components/schemas/Note"
- },
- "type": "array",
- "title": "音符のリスト"
- }
- },
- "type": "object",
- "required": [
- "notes"
- ],
- "title": "Score",
- "description": "楽譜情報"
- },
- "Speaker": {
- "properties": {
- "supported_features": {
- "allOf": [
- {
- "$ref": "#/components/schemas/SpeakerSupportedFeatures"
- }
- ],
- "title": "話者の対応機能"
- },
- "name": {
- "type": "string",
- "title": "名前"
- },
- "speaker_uuid": {
- "type": "string",
- "title": "話者のUUID"
- },
- "styles": {
- "items": {
- "$ref": "#/components/schemas/SpeakerStyle"
- },
- "type": "array",
- "title": "スタイルの一覧"
- },
- "version": {
- "type": "string",
- "title": "Version",
- "default": "話者のバージョン"
- }
- },
- "type": "object",
- "required": [
- "name",
- "speaker_uuid",
- "styles"
- ],
- "title": "Speaker",
- "description": "話者情報"
- },
- "SpeakerInfo": {
- "properties": {
- "policy": {
- "type": "string",
- "title": "policy.md"
- },
- "portrait": {
- "type": "string",
- "title": "portrait.pngをbase64エンコードしたもの"
- },
- "style_infos": {
- "items": {
- "$ref": "#/components/schemas/StyleInfo"
- },
- "type": "array",
- "title": "スタイルの追加情報"
- }
- },
- "type": "object",
- "required": [
- "policy",
- "portrait",
- "style_infos"
- ],
- "title": "SpeakerInfo",
- "description": "話者の追加情報"
- },
- "SpeakerStyle": {
- "properties": {
- "name": {
- "type": "string",
- "title": "スタイル名"
- },
- "id": {
- "type": "integer",
- "title": "スタイルID"
- },
- "type": {
- "type": "string",
- "enum": [
- "talk",
- "singing_teacher",
- "frame_decode",
- "sing"
- ],
- "title": "スタイルの種類。talk:音声合成クエリの作成と音声合成が可能。singing_teacher:歌唱音声合成用のクエリの作成が可能。frame_decode:歌唱音声合成が可能。sing:歌唱音声合成用のクエリの作成と歌唱音声合成が可能。",
- "default": "talk"
- }
- },
- "type": "object",
- "required": [
- "name",
- "id"
- ],
- "title": "SpeakerStyle",
- "description": "話者のスタイル情報"
- },
- "SpeakerSupportPermittedSynthesisMorphing": {
- "type": "string",
- "enum": [
- "ALL",
- "SELF_ONLY",
- "NOTHING"
- ],
- "title": "SpeakerSupportPermittedSynthesisMorphing",
- "description": "An enumeration."
- },
- "SpeakerSupportedFeatures": {
- "properties": {
- "permitted_synthesis_morphing": {
- "allOf": [
- {
- "$ref": "#/components/schemas/SpeakerSupportPermittedSynthesisMorphing"
- }
- ],
- "title": "モーフィング機能への対応",
- "default": "ALL"
- }
- },
- "type": "object",
- "title": "SpeakerSupportedFeatures",
- "description": "話者の対応機能の情報"
- },
- "StyleInfo": {
- "properties": {
- "id": {
- "type": "integer",
- "title": "スタイルID"
- },
- "icon": {
- "type": "string",
- "title": "当該スタイルのアイコンをbase64エンコードしたもの"
- },
- "portrait": {
- "type": "string",
- "title": "当該スタイルのportrait.pngをbase64エンコードしたもの"
- },
- "voice_samples": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "title": "voice_sampleのwavファイルをbase64エンコードしたもの"
- }
- },
- "type": "object",
- "required": [
- "id",
- "icon",
- "voice_samples"
- ],
- "title": "StyleInfo",
- "description": "スタイルの追加情報"
- },
- "SupportedDevicesInfo": {
- "properties": {
- "cpu": {
- "type": "boolean",
- "title": "CPUに対応しているか"
- },
- "cuda": {
- "type": "boolean",
- "title": "CUDA(Nvidia GPU)に対応しているか"
- },
- "dml": {
- "type": "boolean",
- "title": "DirectML(Nvidia GPU/Radeon GPU等)に対応しているか"
- }
- },
- "type": "object",
- "required": [
- "cpu",
- "cuda",
- "dml"
- ],
- "title": "SupportedDevicesInfo",
- "description": "対応しているデバイスの情報"
- },
- "SupportedFeatures": {
- "properties": {
- "adjust_mora_pitch": {
- "type": "boolean",
- "title": "モーラごとの音高の調整"
- },
- "adjust_phoneme_length": {
- "type": "boolean",
- "title": "音素ごとの長さの調整"
- },
- "adjust_speed_scale": {
- "type": "boolean",
- "title": "全体の話速の調整"
- },
- "adjust_pitch_scale": {
- "type": "boolean",
- "title": "全体の音高の調整"
- },
- "adjust_intonation_scale": {
- "type": "boolean",
- "title": "全体の抑揚の調整"
- },
- "adjust_volume_scale": {
- "type": "boolean",
- "title": "全体の音量の調整"
- },
- "interrogative_upspeak": {
- "type": "boolean",
- "title": "疑問文の自動調整"
- },
- "synthesis_morphing": {
- "type": "boolean",
- "title": "2種類のスタイルでモーフィングした音声を合成"
- },
- "sing": {
- "type": "boolean",
- "title": "歌唱音声合成"
- },
- "manage_library": {
- "type": "boolean",
- "title": "音声ライブラリのインストール・アンインストール"
- }
- },
- "type": "object",
- "required": [
- "adjust_mora_pitch",
- "adjust_phoneme_length",
- "adjust_speed_scale",
- "adjust_pitch_scale",
- "adjust_intonation_scale",
- "adjust_volume_scale",
- "interrogative_upspeak",
- "synthesis_morphing"
- ],
- "title": "SupportedFeatures",
- "description": "エンジンが持つ機能の一覧"
- },
- "UpdateInfo": {
- "properties": {
- "version": {
- "type": "string",
- "title": "エンジンのバージョン名"
- },
- "descriptions": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "title": "アップデートの詳細についての説明"
- },
- "contributors": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "title": "貢献者名"
- }
- },
- "type": "object",
- "required": [
- "version",
- "descriptions"
- ],
- "title": "UpdateInfo",
- "description": "エンジンのアップデート情報"
- },
- "UserDictWord": {
- "properties": {
- "surface": {
- "type": "string",
- "title": "表層形"
- },
- "priority": {
- "type": "integer",
- "maximum": 10.0,
- "minimum": 0.0,
- "title": "優先度"
- },
- "context_id": {
- "type": "integer",
- "title": "文脈ID",
- "default": 1348
- },
- "part_of_speech": {
- "type": "string",
- "title": "品詞"
- },
- "part_of_speech_detail_1": {
- "type": "string",
- "title": "品詞細分類1"
- },
- "part_of_speech_detail_2": {
- "type": "string",
- "title": "品詞細分類2"
- },
- "part_of_speech_detail_3": {
- "type": "string",
- "title": "品詞細分類3"
- },
- "inflectional_type": {
- "type": "string",
- "title": "活用型"
- },
- "inflectional_form": {
- "type": "string",
- "title": "活用形"
- },
- "stem": {
- "type": "string",
- "title": "原形"
- },
- "yomi": {
- "type": "string",
- "title": "読み"
- },
- "pronunciation": {
- "type": "string",
- "title": "発音"
- },
- "accent_type": {
- "type": "integer",
- "title": "アクセント型"
- },
- "mora_count": {
- "type": "integer",
- "title": "モーラ数"
- },
- "accent_associative_rule": {
- "type": "string",
- "title": "アクセント結合規則"
- }
- },
- "type": "object",
- "required": [
- "surface",
- "priority",
- "part_of_speech",
- "part_of_speech_detail_1",
- "part_of_speech_detail_2",
- "part_of_speech_detail_3",
- "inflectional_type",
- "inflectional_form",
- "stem",
- "yomi",
- "pronunciation",
- "accent_type",
- "accent_associative_rule"
- ],
- "title": "UserDictWord",
- "description": "辞書のコンパイルに使われる情報"
- },
- "ValidationError": {
- "properties": {
- "loc": {
- "items": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "integer"
- }
- ]
- },
- "type": "array",
- "title": "Location"
- },
- "msg": {
- "type": "string",
- "title": "Message"
- },
- "type": {
- "type": "string",
- "title": "Error Type"
- }
- },
- "type": "object",
- "required": [
- "loc",
- "msg",
- "type"
- ],
- "title": "ValidationError"
- },
- "WordTypes": {
- "type": "string",
- "enum": [
- "PROPER_NOUN",
- "COMMON_NOUN",
- "VERB",
- "ADJECTIVE",
- "SUFFIX"
- ],
- "title": "WordTypes",
- "description": "fastapiでword_type引数を検証する時に使用するクラス"
- },
- "VvlibManifest": {
- "title": "VvlibManifest",
- "description": "vvlib(VOICEVOX Library)に関する情報",
- "type": "object",
- "properties": {
- "manifest_version": {
- "title": "マニフェストバージョン",
- "type": "string"
- },
- "name": {
- "title": "音声ライブラリ名",
- "type": "string"
- },
- "version": {
- "title": "音声ライブラリバージョン",
- "type": "string"
- },
- "uuid": {
- "title": "音声ライブラリのUUID",
- "type": "string"
- },
- "brand_name": {
- "title": "エンジンのブランド名",
- "type": "string"
- },
- "engine_name": {
- "title": "エンジン名",
- "type": "string"
- },
- "engine_uuid": {
- "title": "エンジンのUUID",
- "type": "string"
- }
- },
- "required": [
- "manifest_version",
- "name",
- "version",
- "uuid",
- "brand_name",
- "engine_name",
- "engine_uuid"
- ]
- },
- "BaseLibraryInfo": {
- "title": "BaseLibraryInfo",
- "description": "音声ライブラリの情報",
- "type": "object",
- "properties": {
- "name": {
- "title": "音声ライブラリの名前",
- "type": "string"
- },
- "uuid": {
- "title": "音声ライブラリのUUID",
- "type": "string"
- },
- "version": {
- "title": "音声ライブラリのバージョン",
- "type": "string"
- },
- "download_url": {
- "title": "音声ライブラリのダウンロードURL",
- "type": "string"
- },
- "bytes": {
- "title": "音声ライブラリのバイト数",
- "type": "integer"
- },
- "speakers": {
- "title": "音声ライブラリに含まれる話者のリスト",
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/LibrarySpeaker"
- }
- }
- },
- "required": [
- "name",
- "uuid",
- "version",
- "download_url",
- "bytes",
- "speakers"
- ]
- }
- }
- }
-}
+{"openapi":"3.1.0","info":{"title":"VOICEVOX Engine","description":"VOICEVOXの音声合成エンジンです。","version":"0.18.1"},"paths":{"/audio_query":{"post":{"tags":["クエリ作成"],"summary":"音声合成用のクエリを作成する","description":"音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"audio_query_audio_query_post","parameters":[{"required":true,"schema":{"type":"string","title":"Text"},"name":"text","in":"query"},{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audio_query_from_preset":{"post":{"tags":["クエリ作成"],"summary":"音声合成用のクエリをプリセットを用いて作成する","description":"音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"audio_query_from_preset_audio_query_from_preset_post","parameters":[{"required":true,"schema":{"type":"string","title":"Text"},"name":"text","in":"query"},{"required":true,"schema":{"type":"integer","title":"Preset Id"},"name":"preset_id","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accent_phrases":{"post":{"tags":["クエリ編集"],"summary":"テキストからアクセント句を得る","description":"テキストからアクセント句を得ます。\nis_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。\n* 全てのカナはカタカナで記述される\n* アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。\n* カナの手前に`_`を入れるとそのカナは無声化される\n* アクセント位置を`'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。\n* アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。","operationId":"accent_phrases_accent_phrases_post","parameters":[{"required":true,"schema":{"type":"string","title":"Text"},"name":"text","in":"query"},{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"boolean","title":"Is Kana","default":false},"name":"is_kana","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Accent Phrases Accent Phrases Post"}}}},"400":{"description":"読み仮名のパースに失敗","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseKanaBadRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_data":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音高・音素長を得る","operationId":"mora_data_mora_data_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Accent Phrases"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Mora Data Mora Data Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_length":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音素長を得る","operationId":"mora_length_mora_length_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Accent Phrases"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Mora Length Mora Length Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_pitch":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音高を得る","operationId":"mora_pitch_mora_pitch_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Accent Phrases"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Mora Pitch Mora Pitch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthesis":{"post":{"tags":["音声合成"],"summary":"音声合成する","operationId":"synthesis_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"description":"疑問系のテキストが与えられたら語尾を自動調整する","required":false,"schema":{"type":"boolean","title":"Enable Interrogative Upspeak","description":"疑問系のテキストが与えられたら語尾を自動調整する","default":true},"name":"enable_interrogative_upspeak","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cancellable_synthesis":{"post":{"tags":["音声合成"],"summary":"音声合成する(キャンセル可能)","operationId":"cancellable_synthesis_cancellable_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/multi_synthesis":{"post":{"tags":["音声合成"],"summary":"複数まとめて音声合成する","operationId":"multi_synthesis_multi_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AudioQuery"},"type":"array","title":"Queries"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/morphable_targets":{"post":{"tags":["音声合成"],"summary":"指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する","description":"指定されたベーススタイルに対してエンジン内の各話者がモーフィング機能を利用可能か返します。\nモーフィングの許可/禁止は`/speakers`の`speaker.supported_features.synthesis_morphing`に記載されています。\nプロパティが存在しない場合は、モーフィングが許可されているとみなします。\n返り値のスタイルIDはstring型なので注意。","operationId":"morphable_targets_morphable_targets_post","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"type":"integer"},"type":"array","title":"Base Style Ids"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":{"$ref":"#/components/schemas/MorphableTargetInfo"},"type":"object"},"type":"array","title":"Response Morphable Targets Morphable Targets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthesis_morphing":{"post":{"tags":["音声合成"],"summary":"2種類のスタイルでモーフィングした音声を合成する","description":"指定された2種類のスタイルで音声を合成、指定した割合でモーフィングした音声を得ます。\nモーフィングの割合は`morph_rate`で指定でき、0.0でベースのスタイル、1.0でターゲットのスタイルに近づきます。","operationId":"_synthesis_morphing_synthesis_morphing_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Base Speaker"},"name":"base_speaker","in":"query"},{"required":true,"schema":{"type":"integer","title":"Target Speaker"},"name":"target_speaker","in":"query"},{"required":true,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Morph Rate"},"name":"morph_rate","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sing_frame_audio_query":{"post":{"tags":["クエリ作成"],"summary":"歌唱音声合成用のクエリを作成する","description":"歌唱音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま歌唱音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"sing_frame_audio_query_sing_frame_audio_query_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Score"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameAudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/frame_synthesis":{"post":{"tags":["音声合成"],"summary":"Frame Synthesis","description":"歌唱音声合成を行います。","operationId":"frame_synthesis_frame_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameAudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connect_waves":{"post":{"tags":["その他"],"summary":"base64エンコードされた複数のwavデータを一つに結合する","description":"base64エンコードされたwavデータを一纏めにし、wavファイルで返します。","operationId":"connect_waves_connect_waves_post","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Waves"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/presets":{"get":{"tags":["その他"],"summary":"Get Presets","description":"エンジンが保持しているプリセットの設定を返します","operationId":"get_presets_presets_get","responses":{"200":{"description":"プリセットのリスト","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Preset"},"type":"array","title":"Response Get Presets Presets Get"}}}}}}},"/add_preset":{"post":{"tags":["その他"],"summary":"Add Preset","description":"新しいプリセットを追加します","operationId":"add_preset_add_preset_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Preset"}],"title":"Preset","description":"新しいプリセット。プリセットIDが既存のものと重複している場合は、新規のプリセットIDが採番されます。"}}},"required":true},"responses":{"200":{"description":"追加したプリセットのプリセットID","content":{"application/json":{"schema":{"type":"integer","title":"Response Add Preset Add Preset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/update_preset":{"post":{"tags":["その他"],"summary":"Update Preset","description":"既存のプリセットを更新します","operationId":"update_preset_update_preset_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Preset"}],"title":"Preset","description":"更新するプリセット。プリセットIDが更新対象と一致している必要があります。"}}},"required":true},"responses":{"200":{"description":"更新したプリセットのプリセットID","content":{"application/json":{"schema":{"type":"integer","title":"Response Update Preset Update Preset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delete_preset":{"post":{"tags":["その他"],"summary":"Delete Preset","description":"既存のプリセットを削除します","operationId":"delete_preset_delete_preset_post","parameters":[{"description":"削除するプリセットのプリセットID","required":true,"schema":{"type":"integer","title":"Id","description":"削除するプリセットのプリセットID"},"name":"id","in":"query"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/version":{"get":{"tags":["その他"],"summary":"Version","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Version Version Get"}}}}}}},"/core_versions":{"get":{"tags":["その他"],"summary":"Core Versions","operationId":"core_versions_core_versions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Core Versions Core Versions Get"}}}}}}},"/speakers":{"get":{"tags":["その他"],"summary":"Speakers","operationId":"speakers_speakers_get","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Speaker"},"type":"array","title":"Response Speakers Speakers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speaker_info":{"get":{"tags":["その他"],"summary":"Speaker Info","description":"指定されたspeaker_uuidに関する情報をjson形式で返します。\n画像や音声はbase64エンコードされたものが返されます。","operationId":"speaker_info_speaker_info_get","parameters":[{"required":true,"schema":{"type":"string","title":"Speaker Uuid"},"name":"speaker_uuid","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/singers":{"get":{"tags":["その他"],"summary":"Singers","operationId":"singers_singers_get","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Speaker"},"type":"array","title":"Response Singers Singers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/singer_info":{"get":{"tags":["その他"],"summary":"Singer Info","description":"指定されたspeaker_uuidに関する情報をjson形式で返します。\n画像や音声はbase64エンコードされたものが返されます。","operationId":"singer_info_singer_info_get","parameters":[{"required":true,"schema":{"type":"string","title":"Speaker Uuid"},"name":"speaker_uuid","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/downloadable_libraries":{"get":{"tags":["音声ライブラリ管理"],"summary":"Downloadable Libraries","description":"ダウンロード可能な音声ライブラリの情報を返します。","operationId":"downloadable_libraries_downloadable_libraries_get","responses":{"200":{"description":"ダウンロード可能な音声ライブラリの情報リスト","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DownloadableLibraryInfo"},"type":"array","title":"Response Downloadable Libraries Downloadable Libraries Get"}}}}}}},"/installed_libraries":{"get":{"tags":["音声ライブラリ管理"],"summary":"Installed Libraries","description":"インストールした音声ライブラリの情報を返します。","operationId":"installed_libraries_installed_libraries_get","responses":{"200":{"description":"インストールした音声ライブラリの情報","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/InstalledLibraryInfo"},"type":"object","title":"Response Installed Libraries Installed Libraries Get"}}}}}}},"/install_library/{library_uuid}":{"post":{"tags":["音声ライブラリ管理"],"summary":"Install Library","description":"音声ライブラリをインストールします。\n音声ライブラリのZIPファイルをリクエストボディとして送信してください。","operationId":"install_library_install_library__library_uuid__post","parameters":[{"description":"音声ライブラリのID","required":true,"schema":{"type":"string","title":"Library Uuid","description":"音声ライブラリのID"},"name":"library_uuid","in":"path"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/uninstall_library/{library_uuid}":{"post":{"tags":["音声ライブラリ管理"],"summary":"Uninstall Library","description":"音声ライブラリをアンインストールします。","operationId":"uninstall_library_uninstall_library__library_uuid__post","parameters":[{"description":"音声ライブラリのID","required":true,"schema":{"type":"string","title":"Library Uuid","description":"音声ライブラリのID"},"name":"library_uuid","in":"path"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/initialize_speaker":{"post":{"tags":["その他"],"summary":"Initialize Speaker","description":"指定されたスタイルを初期化します。\n実行しなくても他のAPIは使用できますが、初回実行時に時間がかかることがあります。","operationId":"initialize_speaker_initialize_speaker_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"description":"既に初期化済みのスタイルの再初期化をスキップするかどうか","required":false,"schema":{"type":"boolean","title":"Skip Reinit","description":"既に初期化済みのスタイルの再初期化をスキップするかどうか","default":false},"name":"skip_reinit","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/is_initialized_speaker":{"get":{"tags":["その他"],"summary":"Is Initialized Speaker","description":"指定されたスタイルが初期化されているかどうかを返します。","operationId":"is_initialized_speaker_is_initialized_speaker_get","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Is Initialized Speaker Is Initialized Speaker Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_dict":{"get":{"tags":["ユーザー辞書"],"summary":"Get User Dict Words","description":"ユーザー辞書に登録されている単語の一覧を返します。\n単語の表層形(surface)は正規化済みの物を返します。","operationId":"get_user_dict_words_user_dict_get","responses":{"200":{"description":"単語のUUIDとその詳細","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/UserDictWord"},"type":"object","title":"Response Get User Dict Words User Dict Get"}}}}}}},"/user_dict_word":{"post":{"tags":["ユーザー辞書"],"summary":"Add User Dict Word","description":"ユーザー辞書に言葉を追加します。","operationId":"add_user_dict_word_user_dict_word_post","parameters":[{"description":"言葉の表層形","required":true,"schema":{"type":"string","title":"Surface","description":"言葉の表層形"},"name":"surface","in":"query"},{"description":"言葉の発音(カタカナ)","required":true,"schema":{"type":"string","title":"Pronunciation","description":"言葉の発音(カタカナ)"},"name":"pronunciation","in":"query"},{"description":"アクセント型(音が下がる場所を指す)","required":true,"schema":{"type":"integer","title":"Accent Type","description":"アクセント型(音が下がる場所を指す)"},"name":"accent_type","in":"query"},{"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WordTypes"}],"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"},"name":"word_type","in":"query"},{"description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨","required":false,"schema":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Priority","description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨"},"name":"priority","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Add User Dict Word User Dict Word Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_dict_word/{word_uuid}":{"put":{"tags":["ユーザー辞書"],"summary":"Rewrite User Dict Word","description":"ユーザー辞書に登録されている言葉を更新します。","operationId":"rewrite_user_dict_word_user_dict_word__word_uuid__put","parameters":[{"description":"更新する言葉のUUID","required":true,"schema":{"type":"string","title":"Word Uuid","description":"更新する言葉のUUID"},"name":"word_uuid","in":"path"},{"description":"言葉の表層形","required":true,"schema":{"type":"string","title":"Surface","description":"言葉の表層形"},"name":"surface","in":"query"},{"description":"言葉の発音(カタカナ)","required":true,"schema":{"type":"string","title":"Pronunciation","description":"言葉の発音(カタカナ)"},"name":"pronunciation","in":"query"},{"description":"アクセント型(音が下がる場所を指す)","required":true,"schema":{"type":"integer","title":"Accent Type","description":"アクセント型(音が下がる場所を指す)"},"name":"accent_type","in":"query"},{"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WordTypes"}],"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"},"name":"word_type","in":"query"},{"description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。","required":false,"schema":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Priority","description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。"},"name":"priority","in":"query"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ユーザー辞書"],"summary":"Delete User Dict Word","description":"ユーザー辞書に登録されている言葉を削除します。","operationId":"delete_user_dict_word_user_dict_word__word_uuid__delete","parameters":[{"description":"削除する言葉のUUID","required":true,"schema":{"type":"string","title":"Word Uuid","description":"削除する言葉のUUID"},"name":"word_uuid","in":"path"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/import_user_dict":{"post":{"tags":["ユーザー辞書"],"summary":"Import User Dict Words","description":"他のユーザー辞書をインポートします。","operationId":"import_user_dict_words_import_user_dict_post","parameters":[{"description":"重複したエントリがあった場合、上書きするかどうか","required":true,"schema":{"type":"boolean","title":"Override","description":"重複したエントリがあった場合、上書きするかどうか"},"name":"override","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/UserDictWord"},"type":"object","title":"Import Dict Data","description":"インポートするユーザー辞書のデータ"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/supported_devices":{"get":{"tags":["その他"],"summary":"Supported Devices","operationId":"supported_devices_supported_devices_get","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportedDevicesInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine_manifest":{"get":{"tags":["その他"],"summary":"Engine Manifest","operationId":"engine_manifest_engine_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineManifest"}}}}}}},"/validate_kana":{"post":{"tags":["その他"],"summary":"テキストがAquesTalk 風記法に従っているか判定する","description":"テキストがAquesTalk 風記法に従っているかどうかを判定します。\n従っていない場合はエラーが返ります。","operationId":"validate_kana_validate_kana_post","parameters":[{"description":"判定する対象の文字列","required":true,"schema":{"type":"string","title":"Text","description":"判定する対象の文字列"},"name":"text","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Validate Kana Validate Kana Post"}}}},"400":{"description":"テキストが不正です","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseKanaBadRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/setting":{"get":{"tags":["設定"],"summary":"Setting Get","description":"設定ページを返します。","operationId":"setting_get_setting_get","responses":{"200":{"description":"Successful Response"}}},"post":{"tags":["設定"],"summary":"Setting Post","description":"設定を更新します。","operationId":"setting_post_setting_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_setting_post_setting_post"}}},"required":true},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccentPhrase":{"properties":{"moras":{"items":{"$ref":"#/components/schemas/Mora"},"type":"array","title":"モーラのリスト"},"accent":{"type":"integer","title":"アクセント箇所"},"pause_mora":{"allOf":[{"$ref":"#/components/schemas/Mora"}],"title":"後ろに無音を付けるかどうか"},"is_interrogative":{"type":"boolean","title":"疑問系かどうか","default":false}},"type":"object","required":["moras","accent"],"title":"AccentPhrase","description":"アクセント句ごとの情報"},"AudioQuery":{"properties":{"accent_phrases":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"アクセント句のリスト"},"speedScale":{"type":"number","title":"全体の話速"},"pitchScale":{"type":"number","title":"全体の音高"},"intonationScale":{"type":"number","title":"全体の抑揚"},"volumeScale":{"type":"number","title":"全体の音量"},"prePhonemeLength":{"type":"number","title":"音声の前の無音時間"},"postPhonemeLength":{"type":"number","title":"音声の後の無音時間"},"pauseLength":{"type":"number","title":"読点や括弧等の無音時間(絶対値)"},"pauseLengthScale":{"type":"number","title":"読点や括弧等の無音時間(倍率)"},"outputSamplingRate":{"type":"integer","title":"音声データの出力サンプリングレート"},"outputStereo":{"type":"boolean","title":"音声データをステレオ出力するか否か"},"kana":{"type":"string","title":"[読み取り専用]AquesTalk 風記法によるテキスト。音声合成用のクエリとしては無視される"}},"type":"object","required":["accent_phrases","speedScale","pitchScale","intonationScale","volumeScale","prePhonemeLength","postPhonemeLength","pauseLength","pauseLengthScale","outputSamplingRate","outputStereo"],"title":"AudioQuery","description":"音声合成用のクエリ"},"Body_setting_post_setting_post":{"properties":{"cors_policy_mode":{"$ref":"#/components/schemas/CorsPolicyMode"},"allow_origin":{"type":"string","title":"Allow Origin"}},"type":"object","required":["cors_policy_mode"],"title":"Body_setting_post_setting_post"},"CorsPolicyMode":{"type":"string","enum":["all","localapps"],"title":"CorsPolicyMode","description":"CORSの許可モード"},"DownloadableLibraryInfo":{"properties":{"name":{"type":"string","title":"音声ライブラリの名前"},"uuid":{"type":"string","title":"音声ライブラリのUUID"},"version":{"type":"string","title":"音声ライブラリのバージョン"},"download_url":{"type":"string","title":"音声ライブラリのダウンロードURL"},"bytes":{"type":"integer","title":"音声ライブラリのバイト数"},"speakers":{"items":{"$ref":"#/components/schemas/LibrarySpeaker"},"type":"array","title":"音声ライブラリに含まれる話者のリスト"}},"type":"object","required":["name","uuid","version","download_url","bytes","speakers"],"title":"DownloadableLibraryInfo","description":"ダウンロード可能な音声ライブラリの情報"},"EngineManifest":{"properties":{"manifest_version":{"type":"string","title":"マニフェストのバージョン"},"name":{"type":"string","title":"エンジン名"},"brand_name":{"type":"string","title":"ブランド名"},"uuid":{"type":"string","title":"エンジンのUUID"},"url":{"type":"string","title":"エンジンのURL"},"icon":{"type":"string","title":"エンジンのアイコンをBASE64エンコードしたもの"},"default_sampling_rate":{"type":"integer","title":"デフォルトのサンプリング周波数"},"frame_rate":{"type":"number","title":"エンジンのフレームレート"},"terms_of_service":{"type":"string","title":"エンジンの利用規約"},"update_infos":{"items":{"$ref":"#/components/schemas/UpdateInfo"},"type":"array","title":"エンジンのアップデート情報"},"dependency_licenses":{"items":{"$ref":"#/components/schemas/LicenseInfo"},"type":"array","title":"依存関係のライセンス情報"},"supported_vvlib_manifest_version":{"type":"string","title":"エンジンが対応するvvlibのバージョン"},"supported_features":{"allOf":[{"$ref":"#/components/schemas/SupportedFeatures"}],"title":"エンジンが持つ機能"}},"type":"object","required":["manifest_version","name","brand_name","uuid","url","icon","default_sampling_rate","frame_rate","terms_of_service","update_infos","dependency_licenses","supported_features"],"title":"EngineManifest","description":"エンジン自体に関する情報"},"FrameAudioQuery":{"properties":{"f0":{"items":{"type":"number"},"type":"array","title":"フレームごとの基本周波数"},"volume":{"items":{"type":"number"},"type":"array","title":"フレームごとの音量"},"phonemes":{"items":{"$ref":"#/components/schemas/FramePhoneme"},"type":"array","title":"音素のリスト"},"volumeScale":{"type":"number","title":"全体の音量"},"outputSamplingRate":{"type":"integer","title":"音声データの出力サンプリングレート"},"outputStereo":{"type":"boolean","title":"音声データをステレオ出力するか否か"}},"type":"object","required":["f0","volume","phonemes","volumeScale","outputSamplingRate","outputStereo"],"title":"FrameAudioQuery","description":"フレームごとの音声合成用のクエリ"},"FramePhoneme":{"properties":{"phoneme":{"type":"string","title":"音素"},"frame_length":{"type":"integer","title":"音素のフレーム長"}},"type":"object","required":["phoneme","frame_length"],"title":"FramePhoneme","description":"音素の情報"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InstalledLibraryInfo":{"properties":{"name":{"type":"string","title":"音声ライブラリの名前"},"uuid":{"type":"string","title":"音声ライブラリのUUID"},"version":{"type":"string","title":"音声ライブラリのバージョン"},"download_url":{"type":"string","title":"音声ライブラリのダウンロードURL"},"bytes":{"type":"integer","title":"音声ライブラリのバイト数"},"speakers":{"items":{"$ref":"#/components/schemas/LibrarySpeaker"},"type":"array","title":"音声ライブラリに含まれる話者のリスト"},"uninstallable":{"type":"boolean","title":"アンインストール可能かどうか"}},"type":"object","required":["name","uuid","version","download_url","bytes","speakers","uninstallable"],"title":"InstalledLibraryInfo","description":"インストール済み音声ライブラリの情報"},"LibrarySpeaker":{"properties":{"speaker":{"allOf":[{"$ref":"#/components/schemas/Speaker"}],"title":"話者情報"},"speaker_info":{"allOf":[{"$ref":"#/components/schemas/SpeakerInfo"}],"title":"話者の追加情報"}},"type":"object","required":["speaker","speaker_info"],"title":"LibrarySpeaker","description":"音声ライブラリに含まれる話者の情報"},"LicenseInfo":{"properties":{"name":{"type":"string","title":"依存ライブラリ名"},"version":{"type":"string","title":"依存ライブラリのバージョン"},"license":{"type":"string","title":"依存ライブラリのライセンス名"},"text":{"type":"string","title":"依存ライブラリのライセンス本文"}},"type":"object","required":["name","text"],"title":"LicenseInfo","description":"依存ライブラリのライセンス情報"},"Mora":{"properties":{"text":{"type":"string","title":"文字"},"consonant":{"type":"string","title":"子音の音素"},"consonant_length":{"type":"number","title":"子音の音長"},"vowel":{"type":"string","title":"母音の音素"},"vowel_length":{"type":"number","title":"母音の音長"},"pitch":{"type":"number","title":"音高"}},"type":"object","required":["text","vowel","vowel_length","pitch"],"title":"Mora","description":"モーラ(子音+母音)ごとの情報"},"MorphableTargetInfo":{"properties":{"is_morphable":{"type":"boolean","title":"指定した話者に対してモーフィングの可否"}},"type":"object","required":["is_morphable"],"title":"MorphableTargetInfo"},"Note":{"properties":{"key":{"type":"integer","title":"音階"},"frame_length":{"type":"integer","title":"音符のフレーム長"},"lyric":{"type":"string","title":"音符の歌詞"}},"type":"object","required":["frame_length","lyric"],"title":"Note","description":"音符ごとの情報"},"ParseKanaBadRequest":{"properties":{"text":{"type":"string","title":"エラーメッセージ"},"error_name":{"type":"string","title":"エラー名","description":"|name|description|\n|---|---|\n| UNKNOWN_TEXT | 判別できない読み仮名があります: {text} |\n| ACCENT_TOP | 句頭にアクセントは置けません: {text} |\n| ACCENT_TWICE | 1つのアクセント句に二つ以上のアクセントは置けません: {text} |\n| ACCENT_NOTFOUND | アクセントを指定していないアクセント句があります: {text} |\n| EMPTY_PHRASE | {position}番目のアクセント句が空白です |\n| INTERROGATION_MARK_NOT_AT_END | アクセント句末以外に「?」は置けません: {text} |\n| INFINITE_LOOP | 処理時に無限ループになってしまいました...バグ報告をお願いします。 |"},"error_args":{"additionalProperties":{"type":"string"},"type":"object","title":"エラーを起こした箇所"}},"type":"object","required":["text","error_name","error_args"],"title":"ParseKanaBadRequest"},"Preset":{"properties":{"id":{"type":"integer","title":"プリセットID"},"name":{"type":"string","title":"プリセット名"},"speaker_uuid":{"type":"string","title":"話者のUUID"},"style_id":{"type":"integer","title":"スタイルID"},"speedScale":{"type":"number","title":"全体の話速"},"pitchScale":{"type":"number","title":"全体の音高"},"intonationScale":{"type":"number","title":"全体の抑揚"},"volumeScale":{"type":"number","title":"全体の音量"},"prePhonemeLength":{"type":"number","title":"音声の前の無音時間"},"postPhonemeLength":{"type":"number","title":"音声の後の無音時間"},"pauseLength":{"type":"number","title":"読点や括弧等の無音時間(絶対値)"},"pauseLengthScale":{"type":"number","title":"読点や括弧等の無音時間(倍率)"}},"type":"object","required":["id","name","speaker_uuid","style_id","speedScale","pitchScale","intonationScale","volumeScale","prePhonemeLength","postPhonemeLength","pauseLength","pauseLengthScale"],"title":"Preset","description":"プリセット情報"},"Score":{"properties":{"notes":{"items":{"$ref":"#/components/schemas/Note"},"type":"array","title":"音符のリスト"}},"type":"object","required":["notes"],"title":"Score","description":"楽譜情報"},"Speaker":{"properties":{"supported_features":{"allOf":[{"$ref":"#/components/schemas/SpeakerSupportedFeatures"}],"title":"話者の対応機能"},"name":{"type":"string","title":"名前"},"speaker_uuid":{"type":"string","title":"話者のUUID"},"styles":{"items":{"$ref":"#/components/schemas/SpeakerStyle"},"type":"array","title":"スタイルの一覧"},"version":{"type":"string","title":"Version","default":"話者のバージョン"}},"type":"object","required":["name","speaker_uuid","styles"],"title":"Speaker","description":"話者情報"},"SpeakerInfo":{"properties":{"policy":{"type":"string","title":"policy.md"},"portrait":{"type":"string","title":"portrait.pngをbase64エンコードしたもの"},"style_infos":{"items":{"$ref":"#/components/schemas/StyleInfo"},"type":"array","title":"スタイルの追加情報"}},"type":"object","required":["policy","portrait","style_infos"],"title":"SpeakerInfo","description":"話者の追加情報"},"SpeakerStyle":{"properties":{"name":{"type":"string","title":"スタイル名"},"id":{"type":"integer","title":"スタイルID"},"type":{"type":"string","enum":["talk","singing_teacher","frame_decode","sing"],"title":"スタイルの種類。talk:音声合成クエリの作成と音声合成が可能。singing_teacher:歌唱音声合成用のクエリの作成が可能。frame_decode:歌唱音声合成が可能。sing:歌唱音声合成用のクエリの作成と歌唱音声合成が可能。","default":"talk"}},"type":"object","required":["name","id"],"title":"SpeakerStyle","description":"話者のスタイル情報"},"SpeakerSupportPermittedSynthesisMorphing":{"type":"string","enum":["ALL","SELF_ONLY","NOTHING"],"title":"SpeakerSupportPermittedSynthesisMorphing","description":"An enumeration."},"SpeakerSupportedFeatures":{"properties":{"permitted_synthesis_morphing":{"allOf":[{"$ref":"#/components/schemas/SpeakerSupportPermittedSynthesisMorphing"}],"title":"モーフィング機能への対応","default":"ALL"}},"type":"object","title":"SpeakerSupportedFeatures","description":"話者の対応機能の情報"},"StyleInfo":{"properties":{"id":{"type":"integer","title":"スタイルID"},"icon":{"type":"string","title":"当該スタイルのアイコンをbase64エンコードしたもの"},"portrait":{"type":"string","title":"当該スタイルのportrait.pngをbase64エンコードしたもの"},"voice_samples":{"items":{"type":"string"},"type":"array","title":"voice_sampleのwavファイルをbase64エンコードしたもの"}},"type":"object","required":["id","icon","voice_samples"],"title":"StyleInfo","description":"スタイルの追加情報"},"SupportedDevicesInfo":{"properties":{"cpu":{"type":"boolean","title":"CPUに対応しているか"},"cuda":{"type":"boolean","title":"CUDA(Nvidia GPU)に対応しているか"},"dml":{"type":"boolean","title":"DirectML(Nvidia GPU/Radeon GPU等)に対応しているか"}},"type":"object","required":["cpu","cuda","dml"],"title":"SupportedDevicesInfo","description":"対応しているデバイスの情報"},"SupportedFeatures":{"properties":{"adjust_mora_pitch":{"type":"boolean","title":"モーラごとの音高の調整"},"adjust_phoneme_length":{"type":"boolean","title":"音素ごとの長さの調整"},"adjust_speed_scale":{"type":"boolean","title":"全体の話速の調整"},"adjust_pitch_scale":{"type":"boolean","title":"全体の音高の調整"},"adjust_intonation_scale":{"type":"boolean","title":"全体の抑揚の調整"},"adjust_volume_scale":{"type":"boolean","title":"全体の音量の調整"},"interrogative_upspeak":{"type":"boolean","title":"疑問文の自動調整"},"synthesis_morphing":{"type":"boolean","title":"2種類のスタイルでモーフィングした音声を合成"},"sing":{"type":"boolean","title":"歌唱音声合成"},"manage_library":{"type":"boolean","title":"音声ライブラリのインストール・アンインストール"}},"type":"object","required":["adjust_mora_pitch","adjust_phoneme_length","adjust_speed_scale","adjust_pitch_scale","adjust_intonation_scale","adjust_volume_scale","interrogative_upspeak","synthesis_morphing"],"title":"SupportedFeatures","description":"エンジンが持つ機能の一覧"},"UpdateInfo":{"properties":{"version":{"type":"string","title":"エンジンのバージョン名"},"descriptions":{"items":{"type":"string"},"type":"array","title":"アップデートの詳細についての説明"},"contributors":{"items":{"type":"string"},"type":"array","title":"貢献者名"}},"type":"object","required":["version","descriptions"],"title":"UpdateInfo","description":"エンジンのアップデート情報"},"UserDictWord":{"properties":{"surface":{"type":"string","title":"表層形"},"priority":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"優先度"},"context_id":{"type":"integer","title":"文脈ID","default":1348},"part_of_speech":{"type":"string","title":"品詞"},"part_of_speech_detail_1":{"type":"string","title":"品詞細分類1"},"part_of_speech_detail_2":{"type":"string","title":"品詞細分類2"},"part_of_speech_detail_3":{"type":"string","title":"品詞細分類3"},"inflectional_type":{"type":"string","title":"活用型"},"inflectional_form":{"type":"string","title":"活用形"},"stem":{"type":"string","title":"原形"},"yomi":{"type":"string","title":"読み"},"pronunciation":{"type":"string","title":"発音"},"accent_type":{"type":"integer","title":"アクセント型"},"mora_count":{"type":"integer","title":"モーラ数"},"accent_associative_rule":{"type":"string","title":"アクセント結合規則"}},"type":"object","required":["surface","priority","part_of_speech","part_of_speech_detail_1","part_of_speech_detail_2","part_of_speech_detail_3","inflectional_type","inflectional_form","stem","yomi","pronunciation","accent_type","accent_associative_rule"],"title":"UserDictWord","description":"辞書のコンパイルに使われる情報"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WordTypes":{"type":"string","enum":["PROPER_NOUN","COMMON_NOUN","VERB","ADJECTIVE","SUFFIX"],"title":"WordTypes","description":"fastapiでword_type引数を検証する時に使用するクラス"},"VvlibManifest":{"title":"VvlibManifest","description":"vvlib(VOICEVOX Library)に関する情報","type":"object","properties":{"manifest_version":{"title":"マニフェストバージョン","type":"string"},"name":{"title":"音声ライブラリ名","type":"string"},"version":{"title":"音声ライブラリバージョン","type":"string"},"uuid":{"title":"音声ライブラリのUUID","type":"string"},"brand_name":{"title":"エンジンのブランド名","type":"string"},"engine_name":{"title":"エンジン名","type":"string"},"engine_uuid":{"title":"エンジンのUUID","type":"string"}},"required":["manifest_version","name","version","uuid","brand_name","engine_name","engine_uuid"]},"BaseLibraryInfo":{"title":"BaseLibraryInfo","description":"音声ライブラリの情報","type":"object","properties":{"name":{"title":"音声ライブラリの名前","type":"string"},"uuid":{"title":"音声ライブラリのUUID","type":"string"},"version":{"title":"音声ライブラリのバージョン","type":"string"},"download_url":{"title":"音声ライブラリのダウンロードURL","type":"string"},"bytes":{"title":"音声ライブラリのバイト数","type":"integer"},"speakers":{"title":"音声ライブラリに含まれる話者のリスト","type":"array","items":{"$ref":"#/components/schemas/LibrarySpeaker"}}},"required":["name","uuid","version","download_url","bytes","speakers"]}}}}
diff --git a/src/backend/electron/main.ts b/src/backend/electron/main.ts
index 9f7d5d27cd..1889dee3ec 100644
--- a/src/backend/electron/main.ts
+++ b/src/backend/electron/main.ts
@@ -403,7 +403,6 @@ async function createWindow() {
nodeIntegration: false,
contextIsolation: true,
sandbox: false, // TODO: 外しても問題ないか検証して外す
- devTools: true, // 検証ツール有効 デバッグ時のみ
},
icon: path.join(__static, "icon.png"),
});
@@ -586,7 +585,7 @@ if (isMac) {
Menu.setApplicationMenu(Menu.buildFromTemplate(menuTemplateForMac));
} else {
if (!isDevelopment) {
- //Menu.setApplicationMenu(null); // デバッグを有効にする場合、コメントアウト
+ Menu.setApplicationMenu(null);
}
}
diff --git a/src/components/Dialog/SettingDialog.vue b/src/components/Dialog/SettingDialog.vue
index e026885d3d..3af03bb315 100644
--- a/src/components/Dialog/SettingDialog.vue
+++ b/src/components/Dialog/SettingDialog.vue
@@ -1116,10 +1116,7 @@ const engineUseGpu = computed({
});
const engineIds = computed(() => store.state.engineIds);
const engineInfos = computed(() => store.state.engineInfos);
-// 新規
-// QBtnToggleはv-modelがの変更がsetに結びつく設計になってるみたい
-// Vuexの変更がgetで反映される
-// それらがcomputedによって自動反映
+
const switchPauseLengthMode = computed({
get: () => store.state.switchPauseLengthMode,
set: (switchPauseLengthMode: SwitchPauseLengthMode) => {
diff --git a/src/components/Talk/AccentPhrase.vue b/src/components/Talk/AccentPhrase.vue
index 6db3210c0d..dcc82d72c7 100644
--- a/src/components/Talk/AccentPhrase.vue
+++ b/src/components/Talk/AccentPhrase.vue
@@ -48,7 +48,7 @@
class="q-mb-sm pitch-cell"
:style="{ 'grid-column': `${moraIndex * 2 + 1} / span 1` }"
>
-
+
-
+
-
+
{
});
const handleChangePronounce = (newPronunciation: string) => {
- console.log("handleChangePronounce");
let popUntilPause = false;
newPronunciation = newPronunciation
.replace(/,/g, "、")
@@ -363,7 +362,6 @@ const lastPitches = computed(() =>
props.accentPhrase.moras.map((mora) => mora.pitch),
);
-// スライダー操作で発火
const maxPitch = 6.5;
const minPitch = 3;
const maxMoraLength = 0.3;
@@ -373,7 +371,6 @@ const changeMoraData = (
data: number,
type: MoraDataType,
) => {
- console.log("changeMoraData in AccentPhrase.vue");
const accentPhraseIndex = props.index;
if (!props.altKeyFlag) {
if (type == "pitch") {
diff --git a/src/components/Talk/AudioCell.vue b/src/components/Talk/AudioCell.vue
index 690542c947..a69fc56a6e 100644
--- a/src/components/Talk/AudioCell.vue
+++ b/src/components/Talk/AudioCell.vue
@@ -307,7 +307,6 @@ watch(
);
const pushAudioTextIfNeeded = async (event?: KeyboardEvent) => {
- console.log("pushAudioTextIfNeeded");
if (event && event.isComposing) return;
if (!willRemove.value && isChangeFlag.value && !willFocusOrBlur.value) {
isChangeFlag.value = false;
diff --git a/src/components/Talk/AudioDetail.vue b/src/components/Talk/AudioDetail.vue
index 7e5e514e52..c8e152318f 100644
--- a/src/components/Talk/AudioDetail.vue
+++ b/src/components/Talk/AudioDetail.vue
@@ -192,8 +192,6 @@ const query = computed(() => audioItem.value?.query);
// pauseLength&pauseLengthScaleにおいては、エンジン側で行う処理を例外的にここで行う
// storeへの反映はAccentPhrases.vueでやってくれる
const accentPhrases = computed(() => {
- console.log("accentPhrase in AudioDetail.vue");
- console.log(switchPauseLengthMode.value);
const newAccentPhrases = query.value?.accentPhrases;
if (switchPauseLengthMode.value === "ABSOLUTE" && newAccentPhrases) {
const pauseLength = query.value?.pauseLength;
@@ -204,17 +202,7 @@ const accentPhrases = computed(() => {
}
});
}
- }/* else if (switchPauseLengthMode.value === "SCALE" && newAccentPhrases) {
- const pauseLengthScale = query.value?.pauseLengthScale;
- console.log(pauseLengthScale);
- if (pauseLengthScale != null) {
- newAccentPhrases.forEach((accentPhrase) => {
- if (accentPhrase.pauseMora) {
- accentPhrase.pauseMora.vowelLength *= pauseLengthScale;
- }
- });
- }
- }*/
+ }
return newAccentPhrases;
});
@@ -273,7 +261,6 @@ watch(accentPhrases, async () => {
// audio play
const play = async () => {
- console.log("play in AudioDetail");
try {
await store.dispatch("PLAY_AUDIO", {
audioKey: props.activeAudioKey,
@@ -345,7 +332,6 @@ watch(nowPlaying, async (newState) => {
const accentPhraseOffsets = await store.dispatch("GET_AUDIO_PLAY_OFFSETS", {
audioKey: props.activeAudioKey,
});
- console.log(accentPhraseOffsets);
// 現在再生されているaudio elementの再生時刻を描画毎に取得(監視)し、
// それに合わせてフォーカスするアクセント句を変えていく
const focusAccentPhrase = () => {
diff --git a/src/components/Talk/AudioInfo.vue b/src/components/Talk/AudioInfo.vue
index 230b175e5c..150bd484cd 100644
--- a/src/components/Talk/AudioInfo.vue
+++ b/src/components/Talk/AudioInfo.vue
@@ -324,18 +324,15 @@ const props = defineProps<{
}>();
const store = useStore();
-
const { info } = createLogger("AudioInfo");
// accent phrase
const uiLocked = computed(() => store.getters.UI_LOCKED);
const audioItem = computed(() => store.state.audioItems[props.activeAudioKey]);
-
const query = computed(() => audioItem.value?.query);
// 文内無音の指定方式 "SCALE" || "ABSOLUTE"
-// 折り返さないとESLintにおこられる
const switchPauseLengthMode = computed(() => {
return store.state.switchPauseLengthMode;
});
@@ -571,7 +568,6 @@ const morphingTargetEngines = store.getters.MORPHING_SUPPORTED_ENGINES;
// モーフィング可能なターゲット一覧を取得
watchEffect(() => {
- // console.log("watchEffect");
if (audioItem.value != undefined) {
store.dispatch("LOAD_MORPHABLE_TARGETS", {
engineId: audioItem.value.voice.engineId,
diff --git a/src/components/Talk/TalkEditor.vue b/src/components/Talk/TalkEditor.vue
index 861351b23b..cb11bd6e5b 100644
--- a/src/components/Talk/TalkEditor.vue
+++ b/src/components/Talk/TalkEditor.vue
@@ -512,17 +512,15 @@ watch(userOrderedCharacterInfos, (userOrderedCharacterInfos) => {
// エンジン初期化後の処理
const isCompletedInitialStartup = ref(false);
-// TODO: Vueっぽくないので解体する チョットマッテ
+// TODO: Vueっぽくないので解体する
onetimeWatch(
() => props.isProjectFileLoaded,
async (isProjectFileLoaded) => {
- console.log("onetimeWatch");
if (isProjectFileLoaded == "waiting" || !props.isEnginesReady)
return "continue";
if (!isProjectFileLoaded) {
// 最初のAudioCellを作成
const audioItem = await store.dispatch("GENERATE_AUDIO_ITEM", {});
- console.log(audioItem);
const newAudioKey = await store.dispatch("REGISTER_AUDIO_ITEM", {
audioItem,
});
diff --git a/src/openapi/apis/DefaultApi.ts b/src/openapi/apis/DefaultApi.ts
index 91e68f190b..18e65d5ca2 100644
--- a/src/openapi/apis/DefaultApi.ts
+++ b/src/openapi/apis/DefaultApi.ts
@@ -953,7 +953,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* テキストからアクセント句を得る
*/
async accentPhrasesAccentPhrasesPostRaw(requestParameters: AccentPhrasesAccentPhrasesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("accentPhrasesAccentPhrasesPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling accentPhrasesAccentPhrasesPost.');
}
@@ -997,7 +996,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* テキストからアクセント句を得る
*/
async accentPhrasesAccentPhrasesPost(requestParameters: AccentPhrasesAccentPhrasesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("accentPhrasesAccentPhrasesPost");
const response = await this.accentPhrasesAccentPhrasesPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -1007,7 +1005,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Add Preset
*/
async addPresetAddPresetPostRaw(requestParameters: AddPresetAddPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("addPresetAddPresetPostRaw");
if (requestParameters.preset === null || requestParameters.preset === undefined) {
throw new runtime.RequiredError('preset','Required parameter requestParameters.preset was null or undefined when calling addPresetAddPresetPost.');
}
@@ -1047,7 +1044,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Add User Dict Word
*/
async addUserDictWordUserDictWordPostRaw(requestParameters: AddUserDictWordUserDictWordPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("addUserDictWordUserDictWordPostRaw");
if (requestParameters.surface === null || requestParameters.surface === undefined) {
throw new runtime.RequiredError('surface','Required parameter requestParameters.surface was null or undefined when calling addUserDictWordUserDictWordPost.');
}
@@ -1112,7 +1108,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成用のクエリを作成する
*/
async audioQueryAudioQueryPostRaw(requestParameters: AudioQueryAudioQueryPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("audioQueryAudioQueryPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling audioQueryAudioQueryPost.');
}
@@ -1136,7 +1131,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
}
const headerParameters: runtime.HTTPHeaders = {};
- console.log(queryParameters);
const response = await this.request({
path: `/audio_query`,
method: 'POST',
@@ -1151,7 +1145,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成用のクエリを作成する
*/
async audioQueryAudioQueryPost(requestParameters: AudioQueryAudioQueryPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
- console.log("audioQueryAudioQueryPost");
const response = await this.audioQueryAudioQueryPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -1161,7 +1154,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成用のクエリをプリセットを用いて作成する
*/
async audioQueryFromPresetAudioQueryFromPresetPostRaw(requestParameters: AudioQueryFromPresetAudioQueryFromPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("audioQueryFromPresetAudioQueryFromPresetPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling audioQueryFromPresetAudioQueryFromPresetPost.');
}
@@ -1209,7 +1201,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成する(キャンセル可能)
*/
async cancellableSynthesisCancellableSynthesisPostRaw(requestParameters: CancellableSynthesisCancellableSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("cancellableSynthesisCancellableSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling cancellableSynthesisCancellableSynthesisPost.');
}
@@ -1256,7 +1247,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* base64エンコードされた複数のwavデータを一つに結合する
*/
async connectWavesConnectWavesPostRaw(requestParameters: ConnectWavesConnectWavesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("connectWavesConnectWavesPostRaw");
if (requestParameters.requestBody === null || requestParameters.requestBody === undefined) {
throw new runtime.RequiredError('requestBody','Required parameter requestParameters.requestBody was null or undefined when calling connectWavesConnectWavesPost.');
}
@@ -1291,7 +1281,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Core Versions
*/
async coreVersionsCoreVersionsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("coreVersionsCoreVersionsGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1319,7 +1308,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Delete Preset
*/
async deletePresetDeletePresetPostRaw(requestParameters: DeletePresetDeletePresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("deletePresetDeletePresetPostRaw");
if (requestParameters.id === null || requestParameters.id === undefined) {
throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling deletePresetDeletePresetPost.');
}
@@ -1355,7 +1343,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Delete User Dict Word
*/
async deleteUserDictWordUserDictWordWordUuidDeleteRaw(requestParameters: DeleteUserDictWordUserDictWordWordUuidDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("deleteUserDictWordUserDictWordWordUuidDeleteRaw");
if (requestParameters.wordUuid === null || requestParameters.wordUuid === undefined) {
throw new runtime.RequiredError('wordUuid','Required parameter requestParameters.wordUuid was null or undefined when calling deleteUserDictWordUserDictWordWordUuidDelete.');
}
@@ -1387,7 +1374,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Downloadable Libraries
*/
async downloadableLibrariesDownloadableLibrariesGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("downloadableLibrariesDownloadableLibrariesGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1415,7 +1401,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Engine Manifest
*/
async engineManifestEngineManifestGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("engineManifestEngineManifestGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1443,7 +1428,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Frame Synthesis
*/
async frameSynthesisFrameSynthesisPostRaw(requestParameters: FrameSynthesisFrameSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("frameSynthesisFrameSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling frameSynthesisFrameSynthesisPost.');
}
@@ -1491,7 +1475,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Get Presets
*/
async getPresetsPresetsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("getPresetsPresetsGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1520,7 +1503,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Get User Dict Words
*/
async getUserDictWordsUserDictGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("getUserDictWordsUserDictGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1549,7 +1531,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Import User Dict Words
*/
async importUserDictWordsImportUserDictPostRaw(requestParameters: ImportUserDictWordsImportUserDictPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("importUserDictWordsImportUserDictPostRaw");
if (requestParameters.override === null || requestParameters.override === undefined) {
throw new runtime.RequiredError('override','Required parameter requestParameters.override was null or undefined when calling importUserDictWordsImportUserDictPost.');
}
@@ -1592,7 +1573,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Initialize Speaker
*/
async initializeSpeakerInitializeSpeakerPostRaw(requestParameters: InitializeSpeakerInitializeSpeakerPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("initializeSpeakerInitializeSpeakerPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling initializeSpeakerInitializeSpeakerPost.');
}
@@ -1636,7 +1616,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Install Library
*/
async installLibraryInstallLibraryLibraryUuidPostRaw(requestParameters: InstallLibraryInstallLibraryLibraryUuidPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("installLibraryInstallLibraryLibraryUuidPostRaw");
if (requestParameters.libraryUuid === null || requestParameters.libraryUuid === undefined) {
throw new runtime.RequiredError('libraryUuid','Required parameter requestParameters.libraryUuid was null or undefined when calling installLibraryInstallLibraryLibraryUuidPost.');
}
@@ -1668,7 +1647,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Installed Libraries
*/
async installedLibrariesInstalledLibrariesGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("installedLibrariesInstalledLibrariesGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -1697,7 +1675,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Is Initialized Speaker
*/
async isInitializedSpeakerIsInitializedSpeakerGetRaw(requestParameters: IsInitializedSpeakerIsInitializedSpeakerGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("isInitializedSpeakerIsInitializedSpeakerGetRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling isInitializedSpeakerIsInitializedSpeakerGet.');
}
@@ -1733,7 +1710,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Is Initialized Speaker
*/
async isInitializedSpeakerIsInitializedSpeakerGet(requestParameters: IsInitializedSpeakerIsInitializedSpeakerGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
- console.log("isInitializedSpeakerIsInitializedSpeakerGet");
const response = await this.isInitializedSpeakerIsInitializedSpeakerGetRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -1742,7 +1718,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* アクセント句から音高・音素長を得る
*/
async moraDataMoraDataPostRaw(requestParameters: MoraDataMoraDataPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("moraDataMoraDataPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling moraDataMoraDataPost.');
}
@@ -1788,7 +1763,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* アクセント句から音素長を得る
*/
async moraLengthMoraLengthPostRaw(requestParameters: MoraLengthMoraLengthPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("moraLengthMoraLengthPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling moraLengthMoraLengthPost.');
}
@@ -1834,7 +1808,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* アクセント句から音高を得る
*/
async moraPitchMoraPitchPostRaw(requestParameters: MoraPitchMoraPitchPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("moraPitchMoraPitchPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling moraPitchMoraPitchPost.');
}
@@ -1919,7 +1892,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 複数まとめて音声合成する
*/
async multiSynthesisMultiSynthesisPostRaw(requestParameters: MultiSynthesisMultiSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("multiSynthesisMultiSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling multiSynthesisMultiSynthesisPost.');
}
@@ -1966,7 +1938,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Rewrite User Dict Word
*/
async rewriteUserDictWordUserDictWordWordUuidPutRaw(requestParameters: RewriteUserDictWordUserDictWordWordUuidPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("rewriteUserDictWordUserDictWordWordUuidPutRaw");
if (requestParameters.wordUuid === null || requestParameters.wordUuid === undefined) {
throw new runtime.RequiredError('wordUuid','Required parameter requestParameters.wordUuid was null or undefined when calling rewriteUserDictWordUserDictWordWordUuidPut.');
}
@@ -2030,7 +2001,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Setting Get
*/
async settingGetSettingGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("settingGetSettingGetRaw");
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
@@ -2058,7 +2028,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Setting Post
*/
async settingPostSettingPostRaw(requestParameters: SettingPostSettingPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("settingPostSettingPostRaw");
if (requestParameters.corsPolicyMode === null || requestParameters.corsPolicyMode === undefined) {
throw new runtime.RequiredError('corsPolicyMode','Required parameter requestParameters.corsPolicyMode was null or undefined when calling settingPostSettingPost.');
}
@@ -2314,7 +2283,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Speakers
*/
async speakersSpeakersGetRaw(requestParameters: SpeakersSpeakersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
- console.log("speakersSpeakersGetRaw");
const queryParameters: any = {};
if (requestParameters.coreVersion !== undefined) {
@@ -2376,7 +2344,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 2種類のスタイルでモーフィングした音声を合成する
*/
async synthesisMorphingSynthesisMorphingPostRaw(requestParameters: SynthesisMorphingSynthesisMorphingPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("synthesisMorphingSynthesisMorphingPostRaw");
if (requestParameters.baseSpeaker === null || requestParameters.baseSpeaker === undefined) {
throw new runtime.RequiredError('baseSpeaker','Required parameter requestParameters.baseSpeaker was null or undefined when calling synthesisMorphingSynthesisMorphingPost.');
}
@@ -2439,7 +2406,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成する
*/
async synthesisSynthesisPostRaw(requestParameters: SynthesisSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("synthesisSynthesisPostRaw");
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling synthesisSynthesisPost.');
}
@@ -2481,7 +2447,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* 音声合成する
*/
async synthesisSynthesisPost(requestParameters: SynthesisSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
- console.log("synthesisSynthesisPost");
const response = await this.synthesisSynthesisPostRaw(requestParameters, initOverrides);
return await response.value();
}
@@ -2522,7 +2487,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* Update Preset
*/
async updatePresetUpdatePresetPostRaw(requestParameters: UpdatePresetUpdatePresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("updatePresetUpdatePresetPostRaw");
if (requestParameters.preset === null || requestParameters.preset === undefined) {
throw new runtime.RequiredError('preset','Required parameter requestParameters.preset was null or undefined when calling updatePresetUpdatePresetPost.');
}
@@ -2562,7 +2526,6 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
* テキストがAquesTalk 風記法に従っているか判定する
*/
async validateKanaValidateKanaPostRaw(requestParameters: ValidateKanaValidateKanaPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
- console.log("validateKanaValidateKanaPostRaw");
if (requestParameters.text === null || requestParameters.text === undefined) {
throw new runtime.RequiredError('text','Required parameter requestParameters.text was null or undefined when calling validateKanaValidateKanaPost.');
}
diff --git a/src/store/audio.ts b/src/store/audio.ts
index b14fca2b0b..674f3da499 100644
--- a/src/store/audio.ts
+++ b/src/store/audio.ts
@@ -545,7 +545,6 @@ export const audioStore = createPartialStore({
* AudioItemに設定される話者(スタイルID)に対してエンジン側の初期化を行い、即座に音声合成ができるようにする。
*/
async action({ commit, dispatch }, { engineId, audioKeys, styleId }) {
- console.log("SETUP_SPEAKER");
const isInitialized = await dispatch("IS_INITIALIZED_ENGINE_SPEAKER", {
engineId,
styleId,
@@ -641,7 +640,6 @@ export const audioStore = createPartialStore({
baseAudioItem?: AudioItem;
},
) {
- console.log("GENERATE_AUDIO_ITEM");
//引数にbaseAudioItemが与えられた場合、baseAudioItemから話速等のパラメータを引き継いだAudioItemを返す
//baseAudioItem.queryのうち、accentPhrasesとkanaは基本設定パラメータではないので引き継がない
//baseAudioItemのうち、textとstyleIdは別途与えられるので引き継がない
@@ -677,7 +675,7 @@ export const audioStore = createPartialStore({
engineId: voice.engineId,
styleId: voice.styleId,
};
- // ここでAudioItem > query > pauseLengthにundefinedが入ってると思う
+
const query = getters.IS_ENGINE_READY(voice.engineId)
? await dispatch("FETCH_AUDIO_QUERY", fetchQueryParams).catch(
() => undefined,
@@ -686,7 +684,6 @@ export const audioStore = createPartialStore({
if (query) {
query.pauseLength = 0.3;
}
- console.log(query);
const newAudioItem: AudioItem = { text, voice };
if (query != undefined) {
@@ -750,7 +747,6 @@ export const audioStore = createPartialStore({
prevAudioKey,
}: { audioItem: AudioItem; prevAudioKey?: AudioKey },
) {
- console.log("REGISTER_AUDIO_ITEM");
const audioKey = generateAudioKey();
commit("INSERT_AUDIO_ITEM", { audioItem, audioKey, prevAudioKey });
return audioKey;
@@ -770,7 +766,6 @@ export const audioStore = createPartialStore({
prevAudioKey: AudioKey | undefined;
},
) {
- console.log("INSERT_AUDIO_ITEM");
const index =
prevAudioKey != undefined
? state.audioKeys.indexOf(prevAudioKey) + 1
@@ -794,7 +789,6 @@ export const audioStore = createPartialStore({
prevAudioKey: AudioKey | undefined;
},
) {
- console.log("INSERT_AUDIO_ITEMS");
const index =
prevAudioKey != undefined
? state.audioKeys.indexOf(prevAudioKey) + 1
@@ -907,7 +901,6 @@ export const audioStore = createPartialStore({
postPhonemeLength,
}: { audioKey: AudioKey; postPhonemeLength: number },
) {
- console.log("SET_AUDIO_POST_PHONEME_LENGTH");
const query = state.audioItems[audioKey].query;
if (query == undefined) throw new Error("query == undefined");
query.postPhonemeLength = postPhonemeLength;
@@ -922,9 +915,7 @@ export const audioStore = createPartialStore({
pauseLength,
}: { audioKey: AudioKey; pauseLength: number | null },
) {
- console.log("SET_AUDIO_PAUSE_LENGTH");
const query = state.audioItems[audioKey].query;
- console.log(query);
if (query == undefined) throw new Error("query == undefined");
query.pauseLength = pauseLength;
},
@@ -941,9 +932,7 @@ export const audioStore = createPartialStore({
pauseLengthScale: number;
},
) {
- console.log("SET_AUDIO_PAUSE_LENGTH_SCALE");
const query = state.audioItems[audioKey].query;
- console.log(query);
if (query == undefined) throw new Error("query == undefined");
query.pauseLengthScale = pauseLengthScale;
},
@@ -981,7 +970,6 @@ export const audioStore = createPartialStore({
state,
{ audioKey, audioQuery }: { audioKey: AudioKey; audioQuery: AudioQuery },
) {
- console.log("SET_AUDIO_QUERY");
state.audioItems[audioKey].query = audioQuery;
},
action(
@@ -1001,7 +989,6 @@ export const audioStore = createPartialStore({
styleId,
}: { text: string; engineId: EngineId; styleId: StyleId },
) {
- console.log("FETCH_AUDIO_QUERY");
return dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId,
})
@@ -1035,7 +1022,6 @@ export const audioStore = createPartialStore({
accentPhrases,
}: { audioKey: AudioKey; accentPhrases: AccentPhrase[] },
) {
- console.log("SET_SINGLE_ACCENT_PHRASE");
const query = state.audioItems[audioKey].query;
if (query == undefined) throw new Error("query == undefined");
query.accentPhrases = accentPhrases;
@@ -1057,7 +1043,6 @@ export const audioStore = createPartialStore({
isKana?: boolean;
},
) {
- console.log("FETCH_ACCENT_PHRASES");
return dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId,
})
@@ -1156,7 +1141,6 @@ export const audioStore = createPartialStore({
APPLY_AUDIO_PRESET: {
mutation(state, { audioKey }: { audioKey: AudioKey }) {
- console.log("APPLY_AUDIO_PRESET");
const audioItem = state.audioItems[audioKey];
if (!audioItem.presetKey) return;
@@ -1283,9 +1267,7 @@ export const audioStore = createPartialStore({
GET_AUDIO_PLAY_OFFSETS: {
action({ state }, { audioKey }: { audioKey: AudioKey }) {
- console.log("GET_AUDIO_PLAY_OFFSETS");
const query = state.audioItems[audioKey].query;
- console.log(query);
const accentPhrases = query?.accentPhrases;
if (query == undefined || accentPhrases == undefined)
throw Error("query == undefined or accentPhrases == undefined");
@@ -1302,7 +1284,9 @@ export const audioStore = createPartialStore({
length += m.vowelLength;
});
if (state.switchPauseLengthMode === "SCALE") {
- length += phrase.pauseMora ? phrase.pauseMora.vowelLength * query.pauseLengthScale : 0;
+ length += phrase.pauseMora
+ ? phrase.pauseMora.vowelLength * query.pauseLengthScale
+ : 0;
} else {
length += phrase.pauseMora ? phrase.pauseMora.vowelLength : 0;
}
@@ -1322,7 +1306,6 @@ export const audioStore = createPartialStore({
{ dispatch, state },
{ audioKey, ...options }: { audioKey: AudioKey; cacheOnly?: boolean },
) {
- console.log("FETCH_AUDIO");
const audioItem: AudioItem = JSON.parse(
JSON.stringify(state.audioItems[audioKey]),
);
@@ -1330,8 +1313,6 @@ export const audioStore = createPartialStore({
if (audioItem.query) {
audioItem.query.pauseLength = null;
}
- await console.log("以下audioItem");
- await console.log(audioItem);
return dispatch("FETCH_AUDIO_FROM_AUDIO_ITEM", {
audioItem,
...options,
@@ -1345,7 +1326,6 @@ export const audioStore = createPartialStore({
{ dispatch, state },
options: { audioItem: AudioItem; cacheOnly?: boolean },
) => {
- console.log("FETCH_AUDIO_FROM_AUDIO_ITEM");
const instance = await dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId: options.audioItem.voice.engineId,
});
@@ -1391,7 +1371,6 @@ export const audioStore = createPartialStore({
filePath?: string;
},
): Promise => {
- console.log("GENERATE_AND_SAVE_AUDIO");
const defaultAudioFileName = getters.DEFAULT_AUDIO_FILE_NAME(audioKey);
if (state.savingSetting.fixedExportEnabled) {
filePath = path.join(
@@ -1536,7 +1515,6 @@ export const audioStore = createPartialStore({
callback?: (finishedCount: number, totalCount: number) => void;
},
): Promise => {
- console.log("GENERATE_AND_CONNECT_AND_SAVE_AUDIO");
const defaultFileName = `${getters.DEFAULT_PROJECT_FILE_BASE_NAME}.wav`;
if (state.savingSetting.fixedExportEnabled) {
@@ -1674,7 +1652,6 @@ export const audioStore = createPartialStore({
{ state, getters },
{ filePath }: { filePath?: string },
): Promise => {
- console.log("CONNECT_AND_EXPORT_TEXT");
const defaultFileName = `${getters.DEFAULT_PROJECT_FILE_BASE_NAME}.txt`;
if (state.savingSetting.fixedExportEnabled) {
filePath = path.join(
@@ -1754,7 +1731,6 @@ export const audioStore = createPartialStore({
PLAY_AUDIO: {
action: createUILockAction(
async ({ commit, dispatch }, { audioKey }: { audioKey: AudioKey }) => {
- console.log("PLAY_AUDIO");
await dispatch("STOP_AUDIO");
// 音声用意
@@ -1763,15 +1739,12 @@ export const audioStore = createPartialStore({
audioKey,
nowGenerating: true,
});
- console.log(`audioKey : ${audioKey}`);
try {
fetchAudioResult = await withProgress(
dispatch("FETCH_AUDIO", { audioKey }),
dispatch,
);
- console.log(fetchAudioResult);
} finally {
- // console.log(fetchAudioResult); // 来てない
commit("SET_AUDIO_NOW_GENERATING", {
audioKey,
nowGenerating: false,
@@ -1792,7 +1765,6 @@ export const audioStore = createPartialStore({
{ getters, commit, dispatch },
{ audioBlob, audioKey }: { audioBlob: Blob; audioKey?: AudioKey },
) => {
- console.log("PLAY_AUDIO_BLOB");
commit("SET_AUDIO_SOURCE", { audioBlob });
let offset: number | undefined;
// 途中再生用の処理
@@ -1823,7 +1795,6 @@ export const audioStore = createPartialStore({
presetKey,
}: { audioKey: AudioKey; presetKey: PresetKey | undefined },
) {
- console.log("SET_AUDIO_PRESET_KEY");
if (presetKey == undefined) {
delete state.audioItems[audioKey].presetKey;
} else {
@@ -1834,7 +1805,6 @@ export const audioStore = createPartialStore({
PLAY_CONTINUOUSLY_AUDIO: {
action: createUILockAction(async ({ state, getters, commit, dispatch }) => {
- console.log("PLAY_CONTINUOUSLY_AUDIO");
const currentAudioKey = state._activeAudioKey;
const currentAudioPlayStartPoint = getters.AUDIO_PLAY_START_POINT;
@@ -1981,7 +1951,6 @@ export const audioCommandStore = transformCommandStore(
{ state, commit, dispatch },
{ audioKey, text }: { audioKey: AudioKey; text: string },
) {
- console.log("COMMAND_CHANGE_AUDIO_TEXT");
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
const query = state.audioItems[audioKey].query;
@@ -1989,7 +1958,6 @@ export const audioCommandStore = transformCommandStore(
enableMemoNotation: state.enableMemoNotation,
enableRubyNotation: state.enableRubyNotation,
});
- console.log(`skippedText : ${skippedText}`);
try {
if (query != undefined) {
@@ -2001,8 +1969,6 @@ export const audioCommandStore = transformCommandStore(
styleId,
},
);
- await console.log(query);
- await console.log(accentPhrases);
// 読みの内容が変わっていなければテキストだけ変更
const isSameText = !isAccentPhrasesTextDifferent(
@@ -2075,7 +2041,6 @@ export const audioCommandStore = transformCommandStore(
>;
},
) {
- console.log("COMMAND_MULTI_CHANGE_VOICE");
for (const [audioKey_, change] of Object.entries(payload.changes)) {
// TypeScriptは`Object.entries`のKeyの型を`string`としてしまうので、`as`で型を指定する
const audioKey = audioKey_ as AudioKey;
@@ -2211,7 +2176,6 @@ export const audioCommandStore = transformCommandStore(
accent,
}: { audioKey: AudioKey; accentPhraseIndex: number; accent: number },
) {
- console.log("COMMAND_CHANGE_ACCENT");
const query = state.audioItems[audioKey].query;
if (query != undefined) {
const newAccentPhrases: AccentPhrase[] = JSON.parse(
@@ -2265,7 +2229,6 @@ export const audioCommandStore = transformCommandStore(
accentPhraseIndex: number;
} & ({ isPause: false; moraIndex: number } | { isPause: true }),
) {
- console.log("COMMAND_CHANGE_ACCENT_PHRASE_SPLIT");
const { audioKey, accentPhraseIndex } = payload;
const query = state.audioItems[audioKey].query;
@@ -2382,7 +2345,6 @@ export const audioCommandStore = transformCommandStore(
accentPhraseIndex: number;
},
) {
- console.log("COMMAND_DELETE_ACCENT_PHRASE");
const query = state.audioItems[audioKey].query;
if (query == undefined) throw new Error("query == undefined");
@@ -2425,7 +2387,6 @@ export const audioCommandStore = transformCommandStore(
popUntilPause: boolean;
},
) {
- console.log("COMMAND_CHANGE_SINGLE_ACCENT_PHRASE");
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
@@ -2447,7 +2408,6 @@ export const audioCommandStore = transformCommandStore(
// accent phraseの生成をリクエスト
// 判別できない読み仮名が混じっていた場合400エラーが帰るのでfallback
- console.log("COMMAND_CHANGE_SINGLE_ACCENT_PHRASE");
newAccentPhrasesSegment = await dispatch("FETCH_ACCENT_PHRASES", {
text: pureKatakanaWithAccent,
engineId,
@@ -2522,7 +2482,6 @@ export const audioCommandStore = transformCommandStore(
COMMAND_MULTI_RESET_MORA_PITCH_AND_LENGTH: {
async action({ state, dispatch, commit }, { audioKeys }) {
- console.log("COMMAND_MULTI_RESET_MORA_PITCH_AND_LENGTH");
for (const audioKey of audioKeys) {
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
@@ -2549,7 +2508,6 @@ export const audioCommandStore = transformCommandStore(
{ state, dispatch, commit },
{ audioKey, accentPhraseIndex },
) {
- console.log("COMMAND_RESET_SELECTED_MORA_PITCH_AND_LENGTH");
const engineId = state.audioItems[audioKey].voice.engineId;
const styleId = state.audioItems[audioKey].voice.styleId;
@@ -2608,7 +2566,6 @@ export const audioCommandStore = transformCommandStore(
type: MoraDataType;
},
) {
- console.log("COMMAND_SET_AUDIO_MORA_DATA_ACCENT_PHRASE");
const maxPitch = 6.5;
const minPitch = 3;
const maxMoraLength = 0.3;
@@ -2918,7 +2875,6 @@ export const audioCommandStore = transformCommandStore(
COMMAND_FULLY_APPLY_AUDIO_PRESET: {
mutation(draft, { presetKey }: { presetKey: PresetKey }) {
- console.log("COMMAND_FULLY_APPLY_AUDIO_PRESET");
const targetAudioKeys = draft.audioKeys.filter(
(audioKey) => draft.audioItems[audioKey].presetKey === presetKey,
);
@@ -2950,7 +2906,6 @@ export const audioCommandStore = transformCommandStore(
{ state, commit, dispatch, getters },
{ filePath }: { filePath?: string },
) => {
- console.log("COMMAND_IMPORT_FROM_FILE");
if (!filePath) {
filePath = await window.backend.showImportFileDialog({
title: "セリフ読み込み",
@@ -3029,7 +2984,6 @@ export const audioCommandStore = transformCommandStore(
voice: Voice;
},
) => {
- console.log("COMMAND_PUT_TEXTS");
const audioKeyItemPairs: {
audioKey: AudioKey;
audioItem: AudioItem;
diff --git a/src/store/audioGenerate.ts b/src/store/audioGenerate.ts
index 278e298dbd..879bdbe5f0 100644
--- a/src/store/audioGenerate.ts
+++ b/src/store/audioGenerate.ts
@@ -27,7 +27,6 @@ export async function fetchAudioFromAudioItem(
audioItem: AudioItem;
},
): Promise {
- console.log("fetchAudioFromAudioItem");
const engineId = audioItem.voice.engineId;
const [id, audioQuery] = await generateUniqueIdAndQuery(state, audioItem);
@@ -35,22 +34,15 @@ export async function fetchAudioFromAudioItem(
throw new Error("audioQuery is not defined for audioItem");
if (Object.prototype.hasOwnProperty.call(audioBlobCache, id)) {
- console.log("check"); // 来てない
const blob = audioBlobCache[id];
return { audioQuery, blob };
}
- // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // 反映確認
+
const speaker = audioItem.voice.styleId;
- // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // 反映確認
- // 何かしらの互換のための処理?
const engineAudioQuery = convertAudioQueryFromEditorToEngine(
audioQuery,
state.engineManifests[engineId].defaultSamplingRate,
);
- // audioQuery.accentPhrases[0].moras[0].vowelLength = 0.1; // 反映確認
- // マニュアル値の設定はどこでやってるんだろ audioQueryの前?
- // console.log(audioQuery);
- await console.log(engineAudioQuery);
let blob: Blob;
// FIXME: モーフィングが設定で無効化されていてもモーフィングが行われるので気づけるUIを作成する
@@ -78,7 +70,6 @@ export async function generateLabFromAudioQuery(
audioQuery: EditorAudioQuery,
offset?: number,
) {
- console.log("generateLabFromAudioQuery");
const speedScale = audioQuery.speedScale;
let labString = "";
diff --git a/src/store/engine.ts b/src/store/engine.ts
index 561575880a..3e8823b99b 100644
--- a/src/store/engine.ts
+++ b/src/store/engine.ts
@@ -202,7 +202,6 @@ export const engineStore = createPartialStore({
RESTART_ENGINES: {
async action({ dispatch, commit }, { engineIds }) {
- console.log("RESTART_ENGINES");
await Promise.all(
engineIds.map(async (engineId) => {
commit("SET_ENGINE_STATE", { engineId, engineState: "STARTING" });
@@ -231,7 +230,6 @@ export const engineStore = createPartialStore({
POST_ENGINE_START: {
async action({ state, dispatch }, { engineIds }) {
- console.log("POST_ENGINE_START");
await dispatch("GET_ALT_PORT_INFOS");
const result = await Promise.all(
engineIds.map(async (engineId) => {
@@ -313,7 +311,6 @@ export const engineStore = createPartialStore({
* 指定した話者(スタイルID)がエンジン側で初期化されているか
*/
async action({ dispatch }, { engineId, styleId }) {
- console.log("IS_INITIALIZED_ENGINE_SPEAKER");
const isInitialized = await dispatch("INSTANTIATE_ENGINE_CONNECTOR", {
engineId,
}).then((instance) =>
diff --git a/src/store/preset.ts b/src/store/preset.ts
index 94a16eb325..3d4ef200a2 100644
--- a/src/store/preset.ts
+++ b/src/store/preset.ts
@@ -167,7 +167,6 @@ export const presetStore = createPartialStore({
presetKeys,
}: { presetItems: Record; presetKeys: PresetKey[] },
) {
- console.log("SAVE_PRESET_CONFIG");
const result = await window.backend.setSetting("presets", {
items: JSON.parse(JSON.stringify(presetItems)),
keys: JSON.parse(JSON.stringify(presetKeys)),
@@ -201,8 +200,8 @@ export const presetStore = createPartialStore({
CREATE_ALL_DEFAULT_PRESET: {
async action({ state, dispatch, getters }) {
- console.log("CREATE_ALL_DEFAULT_PRESET");
const voices = getters.GET_ALL_VOICES("talk");
+
for (const voice of voices) {
const voiceId = VoiceId(voice);
const defaultPresetKey = state.defaultPresetKeys[voiceId];
@@ -212,7 +211,6 @@ export const presetStore = createPartialStore({
}
const characterName = getters.VOICE_NAME(voice);
- console.log(`characterName : ${characterName}`);
const presetData: Preset = {
name: `デフォルト:${characterName}`,
speedScale: 1.0,
@@ -241,7 +239,6 @@ export const presetStore = createPartialStore({
context,
{ presetKey, presetData }: { presetData: Preset; presetKey: PresetKey },
) {
- console.log("UPDATE_PRESET");
const newPresetItems = {
...context.state.presetItems,
[presetKey]: presetData,
diff --git a/src/store/project.ts b/src/store/project.ts
index 917e98f18c..71cb0b6ba4 100755
--- a/src/store/project.ts
+++ b/src/store/project.ts
@@ -187,7 +187,6 @@ export const projectStore = createPartialStore({
context,
{ filePath, confirm }: { filePath?: string; confirm?: boolean },
) => {
- console.log("LOAD_PROJECT_FILE");
if (!filePath) {
// Select and load a project File.
const ret = await window.backend.showProjectLoadDialog({
@@ -251,9 +250,7 @@ export const projectStore = createPartialStore({
}
}
for (const audioItemsKey in projectData.audioItems) {
- console.log(`audioItemsKey : ${audioItemsKey}`);
if (projectData.audioItems[audioItemsKey].query != null) {
- console.log("query代入");
projectData.audioItems[audioItemsKey].query.volumeScale = 1;
projectData.audioItems[audioItemsKey].query.prePhonemeLength =
0.1;
@@ -465,7 +462,6 @@ export const projectStore = createPartialStore({
// Validation check
// トークはvalidateTalkProjectで検証する
// ソングはSET_SCOREの中の`isValidScore`関数で検証される
- console.log("parsedProjectData");
const parsedProjectData = projectSchema.parse(projectData);
validateTalkProject(parsedProjectData.talk);
diff --git a/src/store/proxy.ts b/src/store/proxy.ts
index 784c82b3b0..799ef3e069 100644
--- a/src/store/proxy.ts
+++ b/src/store/proxy.ts
@@ -13,7 +13,6 @@ const proxyStoreCreator = (_engineFactory: IEngineConnectorFactory) => {
const proxyStore = createPartialStore({
INSTANTIATE_ENGINE_CONNECTOR: {
action({ state }, payload) {
- // console.log("INSTANTIATE_ENGINE_CONNECTOR");
const engineId = payload.engineId;
const engineInfo: EngineInfo | undefined = state.engineInfos[engineId];
if (engineInfo == undefined)
@@ -22,7 +21,6 @@ const proxyStoreCreator = (_engineFactory: IEngineConnectorFactory) => {
);
const instance = _engineFactory.instance(engineInfo.host);
- // console.log(instance);
return Promise.resolve({
invoke: (v) => (arg) =>
// FIXME: anyを使わないようにする
From e66efe67de00c73e9a6638bea50f3ecb7daa4b22 Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Sun, 2 Jun 2024 05:48:08 +0900
Subject: [PATCH 09/86] =?UTF-8?q?=E7=89=87=E4=BB=98=E3=81=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
env.production | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 env.production
diff --git a/env.production b/env.production
new file mode 100644
index 0000000000..5b0dcb0498
--- /dev/null
+++ b/env.production
@@ -0,0 +1,14 @@
+VITE_APP_NAME=voicevox
+VITE_DEFAULT_ENGINE_INFOS=`[
+ {
+ "uuid": "074fc39e-678b-4c13-8916-ffca8d505d1d",
+ "name": "VOICEVOX Engine",
+ "executionEnabled": true,
+ "executionFilePath": "vv-engine/run.exe",
+ "executionArgs": [],
+ "host": "http://127.0.0.1:50021"
+ }
+]`
+VITE_OFFICIAL_WEBSITE_URL=https://voicevox.hiroshiba.jp/
+VITE_LATEST_UPDATE_INFOS_URL=https://raw.githubusercontent.com/VOICEVOX/voicevox_blog/master/src/data/updateInfos.json
+VITE_GTM_CONTAINER_ID=GTM-DUMMY
From 3a56962a69c8fbd4ac9d2951b54463447d439cff Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Fri, 7 Jun 2024 15:17:33 +0900
Subject: [PATCH 10/86] =?UTF-8?q?=E3=83=97=E3=83=AA=E3=82=BB=E3=83=83?=
=?UTF-8?q?=E3=83=88=E5=90=8D=E5=A4=89=E6=9B=B4=20=E4=BB=96=E6=95=B4?=
=?UTF-8?q?=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Talk/AudioInfo.vue | 11 +++++------
src/openapi/apis/DefaultApi.ts | 6 ++++--
src/store/audio.ts | 1 +
src/store/audioGenerate.ts | 1 +
src/store/preset.ts | 1 +
src/store/utility.ts | 4 ++--
src/type/preload.ts | 2 +-
7 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/src/components/Talk/AudioInfo.vue b/src/components/Talk/AudioInfo.vue
index 150bd484cd..b974b71c6c 100644
--- a/src/components/Talk/AudioInfo.vue
+++ b/src/components/Talk/AudioInfo.vue
@@ -332,7 +332,7 @@ const uiLocked = computed(() => store.getters.UI_LOCKED);
const audioItem = computed(() => store.state.audioItems[props.activeAudioKey]);
const query = computed(() => audioItem.value?.query);
-// 文内無音の指定方式 "SCALE" || "ABSOLUTE"
+// 句読点などの無音時間の指定方式 "SCALE" || "ABSOLUTE"
const switchPauseLengthMode = computed(() => {
return store.state.switchPauseLengthMode;
});
@@ -359,11 +359,10 @@ const selectedAudioKeys = computed(() =>
: [props.activeAudioKey],
);
-// 文内無音はひとまず倍率verを表示 のち必要に応じ絶対値に切替
-// 泥臭くなっちゃったかも
+// 句読点などの無音時間はひとまず倍率verを表示 のち必要に応じ絶対値に切替
const parameters = computed(() => {
const plParam: Parameter = {
- label: "文内無音(秒)",
+ label: "句読点などの無音時間(秒)",
slider: previewSliderHelper({
modelValue: () => query.value?.pauseLength ?? null,
disable: () => uiLocked.value,
@@ -383,7 +382,7 @@ const parameters = computed(() => {
};
const plsParam: Parameter = {
- label: "文内無音(倍)",
+ label: "句読点などの無音時間(倍)",
slider: previewSliderHelper({
modelValue: () => query.value?.pauseLengthScale ?? null,
disable: () => uiLocked.value,
@@ -523,7 +522,7 @@ const parameters = computed(() => {
},
switchPauseLengthMode.value === "SCALE" ? plsParam : plParam,
];
- // こっからswitchPauseLengthModeの変更に伴って更新
+ // switchPauseLengthModeの変更に伴って更新
const newParam = switchPauseLengthMode.value === "SCALE" ? plsParam : plParam;
const index = baseParam.findIndex((param) => param.label === newParam.label);
if (index !== -1) {
diff --git a/src/openapi/apis/DefaultApi.ts b/src/openapi/apis/DefaultApi.ts
index 18e65d5ca2..98ab6ad468 100644
--- a/src/openapi/apis/DefaultApi.ts
+++ b/src/openapi/apis/DefaultApi.ts
@@ -5,7 +5,7 @@
* VOICEVOXの音声合成エンジンです。
*
* The version of the OpenAPI document: latest
- *
+ *
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@@ -1113,7 +1113,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
}
if (requestParameters.speaker === null || requestParameters.speaker === undefined) {
- throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling QueryPost.');
+ throw new runtime.RequiredError('speaker','Required parameter requestParameters.speaker was null or undefined when calling audioQueryAudioQueryPost.');
}
const queryParameters: any = {};
@@ -1131,12 +1131,14 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
}
const headerParameters: runtime.HTTPHeaders = {};
+
const response = await this.request({
path: `/audio_query`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
}, initOverrides);
+
return new runtime.JSONApiResponse(response, (jsonValue) => AudioQueryFromJSON(jsonValue));
}
diff --git a/src/store/audio.ts b/src/store/audio.ts
index 674f3da499..e2c300bda8 100644
--- a/src/store/audio.ts
+++ b/src/store/audio.ts
@@ -1750,6 +1750,7 @@ export const audioStore = createPartialStore({
nowGenerating: false,
});
}
+
const { blob } = fetchAudioResult;
return dispatch("PLAY_AUDIO_BLOB", {
audioBlob: blob,
diff --git a/src/store/audioGenerate.ts b/src/store/audioGenerate.ts
index 879bdbe5f0..9d69bf1e03 100644
--- a/src/store/audioGenerate.ts
+++ b/src/store/audioGenerate.ts
@@ -39,6 +39,7 @@ export async function fetchAudioFromAudioItem(
}
const speaker = audioItem.voice.styleId;
+
const engineAudioQuery = convertAudioQueryFromEditorToEngine(
audioQuery,
state.engineManifests[engineId].defaultSamplingRate,
diff --git a/src/store/preset.ts b/src/store/preset.ts
index 3d4ef200a2..8bf55b9bda 100644
--- a/src/store/preset.ts
+++ b/src/store/preset.ts
@@ -211,6 +211,7 @@ export const presetStore = createPartialStore({
}
const characterName = getters.VOICE_NAME(voice);
+
const presetData: Preset = {
name: `デフォルト:${characterName}`,
speedScale: 1.0,
diff --git a/src/store/utility.ts b/src/store/utility.ts
index b04c631ea9..49f5cff8a9 100644
--- a/src/store/utility.ts
+++ b/src/store/utility.ts
@@ -103,7 +103,7 @@ export const SLIDER_PARAMETERS = {
scrollMinStep: () => 0.01,
},
/**
- * 文内無音(絶対値)パラメータの定義
+ * 句読点などの無音時間(絶対値)パラメータの定義
*/
PAUSE_LENGTH: {
max: () => 1,
@@ -113,7 +113,7 @@ export const SLIDER_PARAMETERS = {
scrollMinStep: () => 0.01,
},
/**
- * 文内無音(倍率)パラメータの定義
+ * 句読点などの無音時間(倍率)パラメータの定義
*/
PAUSE_LENGTH_SCALE: {
max: () => 2,
diff --git a/src/type/preload.ts b/src/type/preload.ts
index c13095c269..903fb86c2d 100644
--- a/src/type/preload.ts
+++ b/src/type/preload.ts
@@ -652,7 +652,7 @@ export const configSchema = z
volumeScale: z.number(),
prePhonemeLength: z.number(),
postPhonemeLength: z.number(),
- pauseLength: z.number(),
+ pauseLength: z.number().nullable(),
pauseLengthScale: z.number(),
morphingInfo: z
.object({
From bb35b1758ba17405f2cda1f0318286afefe8695a Mon Sep 17 00:00:00 2001
From: X-20A <155217226+X-20A@users.noreply.github.com>
Date: Fri, 7 Jun 2024 15:33:54 +0900
Subject: [PATCH 11/86] =?UTF-8?q?=E3=83=97=E3=83=AA=E3=82=BB=E3=83=83?=
=?UTF-8?q?=E3=83=88=E5=90=8D=E5=A4=89=E6=9B=B4=20=E4=BB=96=E6=95=B4?=
=?UTF-8?q?=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/openapi/apis/DefaultApi.ts | 2554 +++++++++++++++---------------
src/openapi/models/AudioQuery.ts | 24 +-
src/openapi/models/Preset.ts | 26 +-
3 files changed, 1302 insertions(+), 1302 deletions(-)
diff --git a/src/openapi/apis/DefaultApi.ts b/src/openapi/apis/DefaultApi.ts
index 98ab6ad468..6c404c7aa2 100644
--- a/src/openapi/apis/DefaultApi.ts
+++ b/src/openapi/apis/DefaultApi.ts
@@ -15,62 +15,62 @@
import * as runtime from '../runtime';
import type {
- AccentPhrase,
- AudioQuery,
- BodySingFrameVolumeSingFrameVolumePost,
- CorsPolicyMode,
- DownloadableLibraryInfo,
- EngineManifest,
- FrameAudioQuery,
- HTTPValidationError,
- InstalledLibraryInfo,
- MorphableTargetInfo,
- ParseKanaBadRequest,
- Preset,
- Score,
- Speaker,
- SpeakerInfo,
- SupportedDevicesInfo,
- UserDictWord,
- WordTypes,
+AccentPhrase,
+AudioQuery,
+BodySingFrameVolumeSingFrameVolumePost,
+CorsPolicyMode,
+DownloadableLibraryInfo,
+EngineManifest,
+FrameAudioQuery,
+HTTPValidationError,
+InstalledLibraryInfo,
+MorphableTargetInfo,
+ParseKanaBadRequest,
+Preset,
+Score,
+Speaker,
+SpeakerInfo,
+SupportedDevicesInfo,
+UserDictWord,
+WordTypes,
} from '../models/index';
import {
- AccentPhraseFromJSON,
- AccentPhraseToJSON,
- AudioQueryFromJSON,
- AudioQueryToJSON,
- BodySingFrameVolumeSingFrameVolumePostFromJSON,
- BodySingFrameVolumeSingFrameVolumePostToJSON,
- CorsPolicyModeFromJSON,
- CorsPolicyModeToJSON,
- DownloadableLibraryInfoFromJSON,
- DownloadableLibraryInfoToJSON,
- EngineManifestFromJSON,
- EngineManifestToJSON,
- FrameAudioQueryFromJSON,
- FrameAudioQueryToJSON,
- HTTPValidationErrorFromJSON,
- HTTPValidationErrorToJSON,
- InstalledLibraryInfoFromJSON,
- InstalledLibraryInfoToJSON,
- MorphableTargetInfoFromJSON,
- MorphableTargetInfoToJSON,
- ParseKanaBadRequestFromJSON,
- ParseKanaBadRequestToJSON,
- PresetFromJSON,
- PresetToJSON,
- ScoreFromJSON,
- ScoreToJSON,
- SpeakerFromJSON,
- SpeakerToJSON,
- SpeakerInfoFromJSON,
- SpeakerInfoToJSON,
- SupportedDevicesInfoFromJSON,
- SupportedDevicesInfoToJSON,
- UserDictWordFromJSON,
- UserDictWordToJSON,
- WordTypesFromJSON,
- WordTypesToJSON,
+AccentPhraseFromJSON,
+AccentPhraseToJSON,
+AudioQueryFromJSON,
+AudioQueryToJSON,
+BodySingFrameVolumeSingFrameVolumePostFromJSON,
+BodySingFrameVolumeSingFrameVolumePostToJSON,
+CorsPolicyModeFromJSON,
+CorsPolicyModeToJSON,
+DownloadableLibraryInfoFromJSON,
+DownloadableLibraryInfoToJSON,
+EngineManifestFromJSON,
+EngineManifestToJSON,
+FrameAudioQueryFromJSON,
+FrameAudioQueryToJSON,
+HTTPValidationErrorFromJSON,
+HTTPValidationErrorToJSON,
+InstalledLibraryInfoFromJSON,
+InstalledLibraryInfoToJSON,
+MorphableTargetInfoFromJSON,
+MorphableTargetInfoToJSON,
+ParseKanaBadRequestFromJSON,
+ParseKanaBadRequestToJSON,
+PresetFromJSON,
+PresetToJSON,
+ScoreFromJSON,
+ScoreToJSON,
+SpeakerFromJSON,
+SpeakerToJSON,
+SpeakerInfoFromJSON,
+SpeakerInfoToJSON,
+SupportedDevicesInfoFromJSON,
+SupportedDevicesInfoToJSON,
+UserDictWordFromJSON,
+UserDictWordToJSON,
+WordTypesFromJSON,
+WordTypesToJSON,
} from '../models/index';
export interface AccentPhrasesAccentPhrasesPostRequest {
@@ -130,7 +130,7 @@ export interface FrameSynthesisFrameSynthesisPostRequest {
export interface ImportUserDictWordsImportUserDictPostRequest {
override: boolean;
- requestBody: { [key: string]: UserDictWord; } | null;
+requestBody: { [key: string]: UserDictWord; } | null;
}
export interface InitializeSpeakerInitializeSpeakerPostRequest {
@@ -254,47 +254,47 @@ export interface ValidateKanaValidateKanaPostRequest {
/**
* DefaultApi - interface
- *
+ *
* @export
* @interface DefaultApiInterface
*/
export interface DefaultApiInterface {
- /**
+/**
* テキストからアクセント句を得ます。 is_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。 * 全てのカナはカタカナで記述される * アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。 * カナの手前に`_`を入れるとそのカナは無声化される * アクセント位置を`\'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。 * アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。
* @summary テキストからアクセント句を得る
- * @param {string} text
- * @param {number} speaker
- * @param {boolean} [isKana]
- * @param {string} [coreVersion]
+ * @param {string} text
+ * @param {number} speaker
+ * @param {boolean} [isKana]
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
*/
accentPhrasesAccentPhrasesPostRaw(requestParameters: AccentPhrasesAccentPhrasesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>;
- /**
+/**
* テキストからアクセント句を得ます。 is_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。 * 全てのカナはカタカナで記述される * アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。 * カナの手前に`_`を入れるとそのカナは無声化される * アクセント位置を`\'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。 * アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。
* テキストからアクセント句を得る
*/
accentPhrasesAccentPhrasesPost(requestParameters: AccentPhrasesAccentPhrasesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* 新しいプリセットを追加します
* @summary Add Preset
- * @param {Preset} preset
+ * @param {Preset} preset
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
*/
addPresetAddPresetPostRaw(requestParameters: AddPresetAddPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* 新しいプリセットを追加します
* Add Preset
*/
addPresetAddPresetPost(requestParameters: AddPresetAddPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
+/**
* ユーザー辞書に言葉を追加します。
* @summary Add User Dict Word
* @param {string} surface 言葉の表層形
@@ -308,83 +308,83 @@ export interface DefaultApiInterface {
*/
addUserDictWordUserDictWordPostRaw(requestParameters: AddUserDictWordUserDictWordPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* ユーザー辞書に言葉を追加します。
* Add User Dict Word
*/
addUserDictWordUserDictWordPost(requestParameters: AddUserDictWordUserDictWordPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
+/**
* 音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
* @summary 音声合成用のクエリを作成する
- * @param {string} text
- * @param {number} speaker
- * @param {string} [coreVersion]
+ * @param {string} text
+ * @param {number} speaker
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
*/
audioQueryAudioQueryPostRaw(requestParameters: AudioQueryAudioQueryPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* 音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
* 音声合成用のクエリを作成する
*/
audioQueryAudioQueryPost(requestParameters: AudioQueryAudioQueryPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
+/**
* 音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
* @summary 音声合成用のクエリをプリセットを用いて作成する
- * @param {string} text
- * @param {number} presetId
- * @param {string} [coreVersion]
+ * @param {string} text
+ * @param {number} presetId
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
*/
audioQueryFromPresetAudioQueryFromPresetPostRaw(requestParameters: AudioQueryFromPresetAudioQueryFromPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* 音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
* 音声合成用のクエリをプリセットを用いて作成する
*/
audioQueryFromPresetAudioQueryFromPresetPost(requestParameters: AudioQueryFromPresetAudioQueryFromPresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
- *
+/**
+ *
* @summary 音声合成する(キャンセル可能)
- * @param {number} speaker
- * @param {AudioQuery} audioQuery
- * @param {string} [coreVersion]
+ * @param {number} speaker
+ * @param {AudioQuery} audioQuery
+ * @param {string} [coreVersion]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
*/
cancellableSynthesisCancellableSynthesisPostRaw(requestParameters: CancellableSynthesisCancellableSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* 音声合成する(キャンセル可能)
*/
cancellableSynthesisCancellableSynthesisPost(requestParameters: CancellableSynthesisCancellableSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
+/**
* base64エンコードされたwavデータを一纏めにし、wavファイルで返します。
* @summary base64エンコードされた複数のwavデータを一つに結合する
- * @param {Array} requestBody
+ * @param {Array} requestBody
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
*/
connectWavesConnectWavesPostRaw(requestParameters: ConnectWavesConnectWavesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* base64エンコードされたwavデータを一纏めにし、wavファイルで返します。
* base64エンコードされた複数のwavデータを一つに結合する
*/
connectWavesConnectWavesPost(requestParameters: ConnectWavesConnectWavesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
- *
+/**
+ *
* @summary Core Versions
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -392,12 +392,12 @@ export interface DefaultApiInterface {
*/
coreVersionsCoreVersionsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>;
- /**
+/**
* Core Versions
*/
coreVersionsCoreVersionsGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* 既存のプリセットを削除します
* @summary Delete Preset
* @param {number} id 削除するプリセットのプリセットID
@@ -407,13 +407,13 @@ export interface DefaultApiInterface {
*/
deletePresetDeletePresetPostRaw(requestParameters: DeletePresetDeletePresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* 既存のプリセットを削除します
* Delete Preset
*/
deletePresetDeletePresetPost(requestParameters: DeletePresetDeletePresetPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
+/**
* ユーザー辞書に登録されている言葉を削除します。
* @summary Delete User Dict Word
* @param {string} wordUuid 削除する言葉のUUID
@@ -423,13 +423,13 @@ export interface DefaultApiInterface {
*/
deleteUserDictWordUserDictWordWordUuidDeleteRaw(requestParameters: DeleteUserDictWordUserDictWordWordUuidDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
- /**
+/**
* ユーザー辞書に登録されている言葉を削除します。
* Delete User Dict Word
*/
deleteUserDictWordUserDictWordWordUuidDelete(requestParameters: DeleteUserDictWordUserDictWordWordUuidDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
- /**
+/**
* ダウンロード可能な音声ライブラリの情報を返します。
* @summary Downloadable Libraries
* @param {*} [options] Override http request option.
@@ -438,14 +438,14 @@ export interface DefaultApiInterface {
*/
downloadableLibrariesDownloadableLibrariesGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>;
- /**
+/**
* ダウンロード可能な音声ライブラリの情報を返します。
* Downloadable Libraries
*/
downloadableLibrariesDownloadableLibrariesGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise