ダイアログは外部 API とみなし、Vuex の Store の Action 内から呼ぶことを許容しています。
これは、ダイアログの結果によってダイアログ前後の挙動を 1 つの Action に書けるという利便性を取ったためです。
ダイアログの種類によっては View に直接作用してダイアログ UI を表示するものもありますが、これも許容することにしています。
EngineId はエンジンが持つ ID で、世界で唯一かつ不変です。 SpeakerId は話者が持つ ID で、世界で唯一かつ不変。エンジン間でも同じ ID を持ちます。 StyleId はスタイルごとの ID で、エンジンごとに唯一であれば良いです。
声を一意に決めるには、(EngineId, SpeakerId, StyleId)の3組が揃っている必要がある、という仕様を目指しています。 現状は、音声合成 API に SpeakerId 引数が無いため、(EngineId, StyleId)の2組で一意に声が決まっています。 現状は StyleId はエンジンごとに唯一である必要がありますが、話者ごとに唯一であれば良いという仕様を目指しています。
VOICEVOX は歴史的経緯により、 SpeakerId と StyleId が混同していることがあります。 特に型が整数値になっている SpeakerId は StyleId と混同している場合があります。 (エンジン API の SpeakerId 引数に StyleId を渡したりなど。)
StyleId は現在整数値型になっていますが、将来的には Uuid にしたいと考えています。
<template>
、<script>
、<style>
の順序で記述してください。
Zod のスキーマ(z.object
)の変数名は、[camelCaseでの名前]Schema
、型定義(z.infer
)の名前は、[PascalCaseでの名前]Type
としてください。
export const hogeFugaSchema = z.object({
hoge: z.string(),
fuga: z.number(),
});
export type HogeFugaType = z.infer<typeof hogeFugaSchema>;