@kajidog/voicevox-client 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accent-utils.d.ts +93 -0
- package/dist/accent-utils.d.ts.map +1 -0
- package/dist/accent-utils.js +211 -0
- package/dist/accent-utils.js.map +1 -0
- package/dist/api.d.ts +4 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +14 -0
- package/dist/api.js.map +1 -1
- package/dist/cache-policy.d.ts +21 -0
- package/dist/cache-policy.d.ts.map +1 -0
- package/dist/cache-policy.js +31 -0
- package/dist/cache-policy.js.map +1 -0
- package/dist/client.d.ts +27 -118
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +42 -417
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/playback/node-playback-strategy.d.ts.map +1 -1
- package/dist/playback/node-playback-strategy.js +2 -6
- package/dist/playback/node-playback-strategy.js.map +1 -1
- package/dist/queue/file-manager.js.map +1 -1
- package/dist/queue/queue-service.d.ts.map +1 -1
- package/dist/queue/queue-service.js +4 -2
- package/dist/queue/queue-service.js.map +1 -1
- package/dist/queue/types.d.ts +3 -1
- package/dist/queue/types.d.ts.map +1 -1
- package/dist/queue/types.js.map +1 -1
- package/dist/services/dictionary-service.d.ts +35 -0
- package/dist/services/dictionary-service.d.ts.map +1 -0
- package/dist/services/dictionary-service.js +188 -0
- package/dist/services/dictionary-service.js.map +1 -0
- package/dist/services/speech-service.d.ts +43 -0
- package/dist/services/speech-service.d.ts.map +1 -0
- package/dist/services/speech-service.js +236 -0
- package/dist/services/speech-service.js.map +1 -0
- package/dist/state/queue-state-machine.d.ts.map +1 -1
- package/dist/state/queue-state-machine.js +13 -0
- package/dist/state/queue-state-machine.js.map +1 -1
- package/dist/state/types.d.ts +2 -0
- package/dist/state/types.d.ts.map +1 -1
- package/dist/utils.d.ts +16 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +36 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { AccentPhrase, Mora } from './types.js';
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// phrase-utils: AccentPhrase 操作
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/**
|
|
6
|
+
* AccentPhrase[] から AI 向けの簡略フレーズ配列を生成。
|
|
7
|
+
* 各 AccentPhrase の mora.text を連結してフレーズテキストを作り、
|
|
8
|
+
* accent 位置はそのまま返す。
|
|
9
|
+
*/
|
|
10
|
+
export declare function accentPhrasesToSimplifiedPhrases(accentPhrases: AccentPhrase[]): Array<{
|
|
11
|
+
text: string;
|
|
12
|
+
accent: number;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* accent 数値配列を既存の AccentPhrase[] にマージする。
|
|
16
|
+
* インデックスで照合し、accent 値のみ更新する。
|
|
17
|
+
* accents が既存より少ない場合は残りはそのまま、多い場合は無視する。
|
|
18
|
+
*/
|
|
19
|
+
export declare function applyAccentsToAccentPhrases(existing: AccentPhrase[], accents: number[]): AccentPhrase[];
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// インライン表記方式
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
export interface ParsedPhrase {
|
|
24
|
+
cleanText: string;
|
|
25
|
+
bracketCharIndex: number | null;
|
|
26
|
+
bracketLength: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* AccentPhrase[] → インライン表記文字列に変換。
|
|
30
|
+
* 例: "コン[ニ]チワ,セ[カ]イ"
|
|
31
|
+
* accent === 0 (平板型) → [] なし
|
|
32
|
+
*/
|
|
33
|
+
export declare function accentPhrasesToNotation(accentPhrases: AccentPhrase[]): string;
|
|
34
|
+
/**
|
|
35
|
+
* インライン表記文字列 → ParsedPhrase[] にパース。
|
|
36
|
+
* 例: "コン[ニ]チワ,セカイ" → [{cleanText:"コンニチワ", bracketCharIndex:2, bracketLength:1}, ...]
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseNotation(notation: string): ParsedPhrase[];
|
|
39
|
+
/**
|
|
40
|
+
* VOICEVOXのモーラ配列内で bracketCharIndex に該当するモーラの accent 値(1-based)を返す。
|
|
41
|
+
* bracketLength がモーラの text.length と一致することを検証する。
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveAccentFromMoras(moras: Mora[], bracketCharIndex: number, bracketLength: number): number;
|
|
44
|
+
/**
|
|
45
|
+
* ParsedPhrase[] のアクセント指定を AccentPhrase[] に適用する。
|
|
46
|
+
* 左から1:1で対応。数が合わない場合、余分は無視/デフォルト維持。
|
|
47
|
+
*
|
|
48
|
+
* bracketCharIndex === null([] 省略)のフレーズ:
|
|
49
|
+
* - defaultAccentPhrases が渡された場合 → そのアクセント値(VOICEVOX自動判定)を使用
|
|
50
|
+
* - defaultAccentPhrases が未指定の場合 → accentPhrases のアクセント値をそのまま維持
|
|
51
|
+
*/
|
|
52
|
+
export declare function applyNotationAccents(parsedPhrases: ParsedPhrase[], accentPhrases: AccentPhrase[], defaultAccentPhrases?: AccentPhrase[]): AccentPhrase[];
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// dictionary-utils: 辞書ユーティリティ
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
export declare function isKatakana(input: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* カタカナ文字列をモーラ単位に分割する。
|
|
59
|
+
* 拗音(ャュョ等)や小書き文字は前の文字と結合して1モーラとする。
|
|
60
|
+
* 長音符「ー」は独立した1モーラとして扱う。
|
|
61
|
+
*/
|
|
62
|
+
export declare function splitToMoras(katakana: string): string[];
|
|
63
|
+
export declare function estimateAccentType(pronunciation: string): number;
|
|
64
|
+
/**
|
|
65
|
+
* pronunciation と accentType からインライン表記を生成する。
|
|
66
|
+
* 例: insertAccentBrackets("ボイスボックス", 4) → "ボイスボッ[ク]ス"
|
|
67
|
+
* accentType === 0 (平板型) → [] なし
|
|
68
|
+
*/
|
|
69
|
+
export declare function insertAccentBrackets(pronunciation: string, accentType: number): string;
|
|
70
|
+
/**
|
|
71
|
+
* インライン表記 (例: "ボイス[ボッ]クス") をパースして
|
|
72
|
+
* pronunciation (純カタカナ) と accentType (1-based) を返す。
|
|
73
|
+
* `[]` 省略時は estimateAccentType で推定する。
|
|
74
|
+
*/
|
|
75
|
+
export declare function parseAccentNotation(notation: string): {
|
|
76
|
+
pronunciation: string;
|
|
77
|
+
accentType: number;
|
|
78
|
+
};
|
|
79
|
+
export interface NormalizedDictionaryWord {
|
|
80
|
+
wordUuid: string;
|
|
81
|
+
surface: string;
|
|
82
|
+
pronunciation: string;
|
|
83
|
+
accentType: number;
|
|
84
|
+
notation: string;
|
|
85
|
+
priority: number;
|
|
86
|
+
}
|
|
87
|
+
export declare function normalizeUserDictionaryWords(dictionary: Record<string, {
|
|
88
|
+
surface: string;
|
|
89
|
+
pronunciation: string;
|
|
90
|
+
accent_type: number;
|
|
91
|
+
priority: number;
|
|
92
|
+
}>): NormalizedDictionaryWord[];
|
|
93
|
+
//# sourceMappingURL=accent-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accent-utils.d.ts","sourceRoot":"","sources":["../src/accent-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEpD,8EAA8E;AAC9E,oCAAgC;AAChC,8EAA8E;AAE9E;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,YAAY,EAAE,GAC5B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAKzC;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAOvG;AAED,8EAA8E;AAC9E,8BAAY;AACZ,8EAA8E;AAE9E,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM,CAe7E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA8C9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAiB7G;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,YAAY,EAAE,EAC7B,aAAa,EAAE,YAAY,EAAE,EAC7B,oBAAoB,CAAC,EAAE,YAAY,EAAE,GACpC,YAAY,EAAE,CAahB;AAED,8EAA8E;AAC9E,gDAA8B;AAC9B,8EAA8E;AAE9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAWvD;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKtF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAwBnG;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5G,wBAAwB,EAAE,CAS5B"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// phrase-utils: AccentPhrase 操作
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
/**
|
|
5
|
+
* AccentPhrase[] から AI 向けの簡略フレーズ配列を生成。
|
|
6
|
+
* 各 AccentPhrase の mora.text を連結してフレーズテキストを作り、
|
|
7
|
+
* accent 位置はそのまま返す。
|
|
8
|
+
*/
|
|
9
|
+
export function accentPhrasesToSimplifiedPhrases(accentPhrases) {
|
|
10
|
+
return accentPhrases.map((phrase) => ({
|
|
11
|
+
text: phrase.moras.map((m) => m.text).join(''),
|
|
12
|
+
accent: phrase.accent,
|
|
13
|
+
}));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* accent 数値配列を既存の AccentPhrase[] にマージする。
|
|
17
|
+
* インデックスで照合し、accent 値のみ更新する。
|
|
18
|
+
* accents が既存より少ない場合は残りはそのまま、多い場合は無視する。
|
|
19
|
+
*/
|
|
20
|
+
export function applyAccentsToAccentPhrases(existing, accents) {
|
|
21
|
+
return existing.map((phrase, i) => {
|
|
22
|
+
if (i < accents.length) {
|
|
23
|
+
return { ...phrase, accent: accents[i] };
|
|
24
|
+
}
|
|
25
|
+
return phrase;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* AccentPhrase[] → インライン表記文字列に変換。
|
|
30
|
+
* 例: "コン[ニ]チワ,セ[カ]イ"
|
|
31
|
+
* accent === 0 (平板型) → [] なし
|
|
32
|
+
*/
|
|
33
|
+
export function accentPhrasesToNotation(accentPhrases) {
|
|
34
|
+
return accentPhrases
|
|
35
|
+
.map((phrase) => {
|
|
36
|
+
const moraTexts = phrase.moras.map((m) => m.text);
|
|
37
|
+
if (phrase.accent === 0) {
|
|
38
|
+
return moraTexts.join('');
|
|
39
|
+
}
|
|
40
|
+
return moraTexts
|
|
41
|
+
.map((t, i) => {
|
|
42
|
+
const moraIndex = i + 1; // 1-based
|
|
43
|
+
return moraIndex === phrase.accent ? `[${t}]` : t;
|
|
44
|
+
})
|
|
45
|
+
.join('');
|
|
46
|
+
})
|
|
47
|
+
.join(',');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* インライン表記文字列 → ParsedPhrase[] にパース。
|
|
51
|
+
* 例: "コン[ニ]チワ,セカイ" → [{cleanText:"コンニチワ", bracketCharIndex:2, bracketLength:1}, ...]
|
|
52
|
+
*/
|
|
53
|
+
export function parseNotation(notation) {
|
|
54
|
+
if (!notation.trim())
|
|
55
|
+
return [];
|
|
56
|
+
const rawPhrases = notation.split(',');
|
|
57
|
+
const result = [];
|
|
58
|
+
for (const raw of rawPhrases) {
|
|
59
|
+
const trimmed = raw.trim();
|
|
60
|
+
if (!trimmed)
|
|
61
|
+
continue;
|
|
62
|
+
// バリデーション: 予約文字チェック(ネスト、不正な括弧)
|
|
63
|
+
const openCount = (trimmed.match(/\[/g) || []).length;
|
|
64
|
+
const closeCount = (trimmed.match(/\]/g) || []).length;
|
|
65
|
+
if (openCount > 1) {
|
|
66
|
+
throw new Error(`Invalid notation: multiple '[' in phrase "${trimmed}"`);
|
|
67
|
+
}
|
|
68
|
+
if (openCount !== closeCount) {
|
|
69
|
+
throw new Error(`Invalid notation: mismatched brackets in phrase "${trimmed}"`);
|
|
70
|
+
}
|
|
71
|
+
if (openCount === 0) {
|
|
72
|
+
result.push({ cleanText: trimmed, bracketCharIndex: null, bracketLength: 0 });
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
// [ ] の位置を検出
|
|
76
|
+
const openIdx = trimmed.indexOf('[');
|
|
77
|
+
const closeIdx = trimmed.indexOf(']');
|
|
78
|
+
if (closeIdx < openIdx) {
|
|
79
|
+
throw new Error(`Invalid notation: ']' before '[' in phrase "${trimmed}"`);
|
|
80
|
+
}
|
|
81
|
+
const bracketContent = trimmed.substring(openIdx + 1, closeIdx);
|
|
82
|
+
if (bracketContent.length === 0) {
|
|
83
|
+
throw new Error(`Invalid notation: empty brackets in phrase "${trimmed}"`);
|
|
84
|
+
}
|
|
85
|
+
const cleanText = trimmed.substring(0, openIdx) + bracketContent + trimmed.substring(closeIdx + 1);
|
|
86
|
+
const bracketCharIndex = openIdx;
|
|
87
|
+
result.push({ cleanText, bracketCharIndex, bracketLength: bracketContent.length });
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* VOICEVOXのモーラ配列内で bracketCharIndex に該当するモーラの accent 値(1-based)を返す。
|
|
93
|
+
* bracketLength がモーラの text.length と一致することを検証する。
|
|
94
|
+
*/
|
|
95
|
+
export function resolveAccentFromMoras(moras, bracketCharIndex, bracketLength) {
|
|
96
|
+
let charPos = 0;
|
|
97
|
+
for (let i = 0; i < moras.length; i++) {
|
|
98
|
+
const mora = moras[i];
|
|
99
|
+
if (charPos === bracketCharIndex) {
|
|
100
|
+
if (mora.text.length !== bracketLength) {
|
|
101
|
+
throw new Error(`Bracket content length (${bracketLength}) does not match mora text length (${mora.text.length}) at mora "${mora.text}". Brackets must enclose exactly one mora.`);
|
|
102
|
+
}
|
|
103
|
+
return i + 1; // 1-based
|
|
104
|
+
}
|
|
105
|
+
charPos += mora.text.length;
|
|
106
|
+
}
|
|
107
|
+
throw new Error(`Bracket position ${bracketCharIndex} does not align with any mora boundary. Check that brackets enclose exactly one mora.`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* ParsedPhrase[] のアクセント指定を AccentPhrase[] に適用する。
|
|
111
|
+
* 左から1:1で対応。数が合わない場合、余分は無視/デフォルト維持。
|
|
112
|
+
*
|
|
113
|
+
* bracketCharIndex === null([] 省略)のフレーズ:
|
|
114
|
+
* - defaultAccentPhrases が渡された場合 → そのアクセント値(VOICEVOX自動判定)を使用
|
|
115
|
+
* - defaultAccentPhrases が未指定の場合 → accentPhrases のアクセント値をそのまま維持
|
|
116
|
+
*/
|
|
117
|
+
export function applyNotationAccents(parsedPhrases, accentPhrases, defaultAccentPhrases) {
|
|
118
|
+
return accentPhrases.map((phrase, i) => {
|
|
119
|
+
if (i >= parsedPhrases.length)
|
|
120
|
+
return phrase;
|
|
121
|
+
const parsed = parsedPhrases[i];
|
|
122
|
+
if (parsed.bracketCharIndex === null) {
|
|
123
|
+
if (defaultAccentPhrases && i < defaultAccentPhrases.length) {
|
|
124
|
+
return { ...phrase, accent: defaultAccentPhrases[i].accent };
|
|
125
|
+
}
|
|
126
|
+
return phrase;
|
|
127
|
+
}
|
|
128
|
+
const newAccent = resolveAccentFromMoras(phrase.moras, parsed.bracketCharIndex, parsed.bracketLength);
|
|
129
|
+
return { ...phrase, accent: newAccent };
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// ---------------------------------------------------------------------------
|
|
133
|
+
// dictionary-utils: 辞書ユーティリティ
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
export function isKatakana(input) {
|
|
136
|
+
return /^[ァ-ヶー]+$/.test(input);
|
|
137
|
+
}
|
|
138
|
+
const SMALL_KANA = new Set(['ャ', 'ュ', 'ョ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ヮ']);
|
|
139
|
+
/**
|
|
140
|
+
* カタカナ文字列をモーラ単位に分割する。
|
|
141
|
+
* 拗音(ャュョ等)や小書き文字は前の文字と結合して1モーラとする。
|
|
142
|
+
* 長音符「ー」は独立した1モーラとして扱う。
|
|
143
|
+
*/
|
|
144
|
+
export function splitToMoras(katakana) {
|
|
145
|
+
const moras = [];
|
|
146
|
+
for (let i = 0; i < katakana.length; i++) {
|
|
147
|
+
const char = katakana[i];
|
|
148
|
+
if (SMALL_KANA.has(char) && moras.length > 0) {
|
|
149
|
+
moras[moras.length - 1] += char;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
moras.push(char);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return moras;
|
|
156
|
+
}
|
|
157
|
+
export function estimateAccentType(pronunciation) {
|
|
158
|
+
return Math.max(1, splitToMoras(pronunciation).length);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* pronunciation と accentType からインライン表記を生成する。
|
|
162
|
+
* 例: insertAccentBrackets("ボイスボックス", 4) → "ボイスボッ[ク]ス"
|
|
163
|
+
* accentType === 0 (平板型) → [] なし
|
|
164
|
+
*/
|
|
165
|
+
export function insertAccentBrackets(pronunciation, accentType) {
|
|
166
|
+
if (accentType === 0)
|
|
167
|
+
return pronunciation;
|
|
168
|
+
const moras = splitToMoras(pronunciation);
|
|
169
|
+
if (accentType < 1 || accentType > moras.length)
|
|
170
|
+
return pronunciation;
|
|
171
|
+
return moras.map((m, i) => (i + 1 === accentType ? `[${m}]` : m)).join('');
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* インライン表記 (例: "ボイス[ボッ]クス") をパースして
|
|
175
|
+
* pronunciation (純カタカナ) と accentType (1-based) を返す。
|
|
176
|
+
* `[]` 省略時は estimateAccentType で推定する。
|
|
177
|
+
*/
|
|
178
|
+
export function parseAccentNotation(notation) {
|
|
179
|
+
const parsed = parseNotation(notation);
|
|
180
|
+
if (parsed.length !== 1) {
|
|
181
|
+
throw new Error(`Expected single phrase, got ${parsed.length}. Do not use commas in pronunciation.`);
|
|
182
|
+
}
|
|
183
|
+
const { cleanText, bracketCharIndex, bracketLength } = parsed[0];
|
|
184
|
+
if (bracketCharIndex === null) {
|
|
185
|
+
return { pronunciation: cleanText, accentType: estimateAccentType(cleanText) };
|
|
186
|
+
}
|
|
187
|
+
// bracketCharIndex は文字位置 → モーラ位置に変換
|
|
188
|
+
const moras = splitToMoras(cleanText);
|
|
189
|
+
let charPos = 0;
|
|
190
|
+
for (let i = 0; i < moras.length; i++) {
|
|
191
|
+
if (charPos === bracketCharIndex) {
|
|
192
|
+
if (moras[i].length !== bracketLength) {
|
|
193
|
+
throw new Error(`Bracket content length (${bracketLength}) does not match mora "${moras[i]}" length (${moras[i].length}). Brackets must enclose exactly one mora.`);
|
|
194
|
+
}
|
|
195
|
+
return { pronunciation: cleanText, accentType: i + 1 };
|
|
196
|
+
}
|
|
197
|
+
charPos += moras[i].length;
|
|
198
|
+
}
|
|
199
|
+
throw new Error('Bracket position does not align with any mora boundary.');
|
|
200
|
+
}
|
|
201
|
+
export function normalizeUserDictionaryWords(dictionary) {
|
|
202
|
+
return Object.entries(dictionary).map(([wordUuid, word]) => ({
|
|
203
|
+
wordUuid,
|
|
204
|
+
surface: word.surface,
|
|
205
|
+
pronunciation: word.pronunciation,
|
|
206
|
+
accentType: word.accent_type,
|
|
207
|
+
notation: insertAccentBrackets(word.pronunciation, word.accent_type),
|
|
208
|
+
priority: word.priority,
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=accent-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accent-utils.js","sourceRoot":"","sources":["../src/accent-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
CHANGED
|
@@ -31,6 +31,10 @@ export declare class VoicevoxApi {
|
|
|
31
31
|
version?: string;
|
|
32
32
|
url: string;
|
|
33
33
|
}>;
|
|
34
|
+
/**
|
|
35
|
+
* テキストからアクセント句を取得(audio_queryより軽量)
|
|
36
|
+
*/
|
|
37
|
+
getAccentPhrases(text: string, speaker?: number): Promise<AccentPhrase[]>;
|
|
34
38
|
/**
|
|
35
39
|
* アクセント句のモーラデータ(音素長・ピッチ)を再計算
|
|
36
40
|
* UIでアクセント位置(accent整数)を変更した後、mora.pitch値を更新するために使用
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpG,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEhC,YAAY,OAAO,EAAE,MAAM,EAE1B;IAED;;OAEG;IACU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAWzE;IAED;;OAEG;IACU,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAe5E;IAED;;OAEG;IACU,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkB9G;IAED;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAW7C;IAED;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAW9D;IAED;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAezF;IAED;;;OAGG;IACU,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAWnG;IAED;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAM5E;IAED;;OAEG;IACU,qBAAqB,CAAC,KAAK,EAAE;QACxC,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;IAED;;OAEG;IACU,wBAAwB,CAAC,KAAK,EAAE;QAC3C,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhB;IAED;;OAEG;IACU,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;YAMa,WAAW;IAiDzB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAGrB"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpG,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEhC,YAAY,OAAO,EAAE,MAAM,EAE1B;IAED;;OAEG;IACU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAWzE;IAED;;OAEG;IACU,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAe5E;IAED;;OAEG;IACU,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkB9G;IAED;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAW7C;IAED;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAW9D;IAED;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAezF;IAED;;OAEG;IACU,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAShF;IAED;;;OAGG;IACU,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAWnG;IAED;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAM5E;IAED;;OAEG;IACU,qBAAqB,CAAC,KAAK,EAAE;QACxC,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;IAED;;OAEG;IACU,wBAAwB,CAAC,KAAK,EAAE;QAC3C,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhB;IAED;;OAEG;IACU,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;YAMa,WAAW;IAiDzB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAGrB"}
|
package/dist/api.js
CHANGED
|
@@ -102,6 +102,20 @@ export class VoicevoxApi {
|
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* テキストからアクセント句を取得(audio_queryより軽量)
|
|
107
|
+
*/
|
|
108
|
+
async getAccentPhrases(text, speaker = 1) {
|
|
109
|
+
try {
|
|
110
|
+
const endpoint = `/accent_phrases?text=${encodeURIComponent(text)}&speaker=${encodeURIComponent(speaker.toString())}`;
|
|
111
|
+
return await this.makeRequest('post', endpoint, null, {
|
|
112
|
+
'Content-Type': 'application/json',
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
throw handleError('アクセント句取得中にエラーが発生しました', error);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
105
119
|
/**
|
|
106
120
|
* アクセント句のモーラデータ(音素長・ピッチ)を再計算
|
|
107
121
|
* UIでアクセント位置(accent整数)を変更した後、mora.pitch値を更新するために使用
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface AudioCachePolicy {
|
|
2
|
+
isDiskCacheEnabled: boolean;
|
|
3
|
+
ttlMs: number | null;
|
|
4
|
+
maxBytes: number | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveAudioCachePolicy(input: {
|
|
7
|
+
enabledFlag: boolean;
|
|
8
|
+
ttlDays: number;
|
|
9
|
+
maxMb: number;
|
|
10
|
+
}): AudioCachePolicy;
|
|
11
|
+
export declare function planAudioCacheCleanup(input: {
|
|
12
|
+
entries: Array<{
|
|
13
|
+
path: string;
|
|
14
|
+
size: number;
|
|
15
|
+
mtimeMs: number;
|
|
16
|
+
}>;
|
|
17
|
+
now: number;
|
|
18
|
+
ttlMs: number | null;
|
|
19
|
+
maxBytes: number | null;
|
|
20
|
+
}): Set<string>;
|
|
21
|
+
//# sourceMappingURL=cache-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-policy.d.ts","sourceRoot":"","sources":["../src/cache-policy.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,gBAAgB,CAKnB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/D,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,GAAG,GAAG,CAAC,MAAM,CAAC,CAyBd"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function resolveAudioCachePolicy(input) {
|
|
2
|
+
const isDiskCacheEnabled = input.enabledFlag && input.ttlDays !== 0 && input.maxMb !== 0;
|
|
3
|
+
const ttlMs = input.ttlDays < 0 ? null : input.ttlDays * 24 * 60 * 60 * 1000;
|
|
4
|
+
const maxBytes = input.maxMb < 0 ? null : input.maxMb * 1024 * 1024;
|
|
5
|
+
return { isDiskCacheEnabled, ttlMs, maxBytes };
|
|
6
|
+
}
|
|
7
|
+
export function planAudioCacheCleanup(input) {
|
|
8
|
+
const toDelete = new Set();
|
|
9
|
+
if (input.ttlMs !== null) {
|
|
10
|
+
for (const entry of input.entries) {
|
|
11
|
+
if (input.now - entry.mtimeMs > input.ttlMs) {
|
|
12
|
+
toDelete.add(entry.path);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (input.maxBytes !== null) {
|
|
17
|
+
const kept = input.entries.filter((entry) => !toDelete.has(entry.path));
|
|
18
|
+
let totalBytes = kept.reduce((sum, entry) => sum + entry.size, 0);
|
|
19
|
+
if (totalBytes > input.maxBytes) {
|
|
20
|
+
const byOldestFirst = [...kept].sort((a, b) => a.mtimeMs - b.mtimeMs);
|
|
21
|
+
for (const entry of byOldestFirst) {
|
|
22
|
+
if (totalBytes <= input.maxBytes)
|
|
23
|
+
break;
|
|
24
|
+
toDelete.add(entry.path);
|
|
25
|
+
totalBytes -= entry.size;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return toDelete;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=cache-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-policy.js","sourceRoot":"","sources":["../src/cache-policy.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,uBAAuB,CAAC,KAIvC,EAAoB;IACnB,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAA;IACxF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAA;IACnE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AAAA,CAC/C;AAED,MAAM,UAAU,qBAAqB,CAAC,KAKrC,EAAe;IACd,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAElC,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QACvE,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACjE,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;YACrE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ;oBAAE,MAAK;gBACvC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACxB,UAAU,IAAI,KAAK,CAAC,IAAI,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AAAA,CAChB"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,150 +1,59 @@
|
|
|
1
|
+
import type { NormalizedDictionaryWord } from './accent-utils.js';
|
|
1
2
|
import { QueueService } from './queue/queue-service.js';
|
|
2
|
-
import type {
|
|
3
|
+
import type { DictionaryWordInput as DictionaryWordInputBase, DictionaryWordUpdateInput as DictionaryWordUpdateInputBase } from './services/dictionary-service.js';
|
|
4
|
+
import type { SpeechServiceSpeakOptions } from './services/speech-service.js';
|
|
5
|
+
import type { AccentPhrase, AudioQuery, SpeakResult, SpeechSegment, VoicevoxConfig } from './types.js';
|
|
3
6
|
/**
|
|
4
7
|
* 話者オプション(統一API用)
|
|
5
8
|
*/
|
|
6
|
-
export interface SpeakOptions extends
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
/** 音声の前の無音時間(秒) */
|
|
18
|
-
prePhonemeLength?: number;
|
|
19
|
-
/** 音声の後の無音時間(秒) */
|
|
20
|
-
postPhonemeLength?: number;
|
|
9
|
+
export interface SpeakOptions extends SpeechServiceSpeakOptions {
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 辞書単語追加入力
|
|
13
|
+
*/
|
|
14
|
+
export interface DictionaryWordInput extends DictionaryWordInputBase {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 辞書単語更新入力
|
|
18
|
+
*/
|
|
19
|
+
export interface DictionaryWordUpdateInput extends DictionaryWordUpdateInputBase {
|
|
21
20
|
}
|
|
22
21
|
export declare class VoicevoxClient {
|
|
23
22
|
private readonly queueService;
|
|
24
23
|
private readonly api;
|
|
25
|
-
private readonly defaultSpeaker;
|
|
26
|
-
private readonly defaultSpeedScale;
|
|
27
|
-
private readonly defaultVolumeScale?;
|
|
28
|
-
private readonly defaultPitchScale?;
|
|
29
|
-
private readonly defaultPrePhonemeLength?;
|
|
30
|
-
private readonly defaultPostPhonemeLength?;
|
|
31
24
|
private readonly defaultPlaybackOptions;
|
|
32
|
-
private readonly
|
|
25
|
+
private readonly dictionaryService;
|
|
26
|
+
private readonly speechService;
|
|
33
27
|
constructor(config: VoicevoxConfig);
|
|
34
|
-
/**
|
|
35
|
-
* テキストを音声に変換して再生します(統一API)
|
|
36
|
-
* @param input テキスト、テキスト配列、またはセグメント配列
|
|
37
|
-
* @param options 再生オプション(speaker, speedScale, immediate, waitForStart, waitForEnd)
|
|
38
|
-
* @returns 処理結果
|
|
39
|
-
*/
|
|
40
28
|
speak(input: string | string[] | SpeechSegment[], options?: SpeakOptions): Promise<SpeakResult>;
|
|
41
|
-
/**
|
|
42
|
-
* 入力を統一フォーマット(SpeechSegment[])に変換
|
|
43
|
-
* @private
|
|
44
|
-
*/
|
|
45
|
-
private normalizeInput;
|
|
46
|
-
/**
|
|
47
|
-
* テキストから音声合成用クエリを生成します
|
|
48
|
-
* @param text 変換するテキスト
|
|
49
|
-
* @param speaker 話者ID(オプション)
|
|
50
|
-
* @param speedScale 再生速度(オプション)
|
|
51
|
-
* @returns 音声合成用クエリ
|
|
52
|
-
*/
|
|
53
29
|
generateQuery(text: string, speaker?: number, speedScale?: number): Promise<AudioQuery>;
|
|
54
|
-
/**
|
|
55
|
-
* テキストから直接音声ファイルを生成します
|
|
56
|
-
* @param textOrQuery テキストまたは音声合成用クエリ
|
|
57
|
-
* @param outputPath 出力ファイルパス(オプション、省略時は一時ファイル)
|
|
58
|
-
* @param speaker 話者ID(オプション)
|
|
59
|
-
* @param speedScale 再生速度(オプション)
|
|
60
|
-
* @returns 生成した音声ファイルのパス
|
|
61
|
-
*/
|
|
62
30
|
generateAudioFile(textOrQuery: string | AudioQuery, outputPath?: string, speaker?: number, speedScale?: number): Promise<string>;
|
|
63
|
-
/**
|
|
64
|
-
* テキストを音声ファイル生成キューに追加します(統一API)
|
|
65
|
-
* @param input テキスト、テキスト配列、セグメント配列、またはAudioQuery
|
|
66
|
-
* @param options 再生オプション
|
|
67
|
-
* @returns 処理結果
|
|
68
|
-
*/
|
|
69
31
|
enqueueAudioGeneration(input: string | string[] | SpeechSegment[] | AudioQuery, options?: SpeakOptions): Promise<SpeakResult>;
|
|
70
|
-
/**
|
|
71
|
-
* 話者IDを取得(指定がない場合はデフォルト値を使用)
|
|
72
|
-
* @private
|
|
73
|
-
*/
|
|
74
|
-
private getSpeakerId;
|
|
75
|
-
/**
|
|
76
|
-
* 再生速度を取得(指定がない場合はデフォルト値を使用)
|
|
77
|
-
* @private
|
|
78
|
-
*/
|
|
79
|
-
private getSpeedScale;
|
|
80
|
-
/**
|
|
81
|
-
* AudioQueryにSpeakOptionsの音声パラメータを適用
|
|
82
|
-
* @private
|
|
83
|
-
*/
|
|
84
|
-
private applyAudioOptions;
|
|
85
|
-
/**
|
|
86
|
-
* SpeakResultを生成
|
|
87
|
-
* @private
|
|
88
|
-
*/
|
|
89
|
-
private createSpeakResult;
|
|
90
|
-
/**
|
|
91
|
-
* テキストプレビューを生成
|
|
92
|
-
* @private
|
|
93
|
-
*/
|
|
94
|
-
private createTextPreview;
|
|
95
32
|
private validateConfig;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
33
|
+
getDictionary(): Promise<NormalizedDictionaryWord[]>;
|
|
34
|
+
addDictionaryWord(input: DictionaryWordInput): Promise<NormalizedDictionaryWord[]>;
|
|
35
|
+
addDictionaryWords(inputs: DictionaryWordInput[]): Promise<NormalizedDictionaryWord[]>;
|
|
36
|
+
updateDictionaryWord(input: DictionaryWordUpdateInput): Promise<NormalizedDictionaryWord[]>;
|
|
37
|
+
updateDictionaryWords(inputs: DictionaryWordUpdateInput[]): Promise<NormalizedDictionaryWord[]>;
|
|
38
|
+
deleteDictionaryWord(wordUuid: string): Promise<NormalizedDictionaryWord[]>;
|
|
39
|
+
getAccentNotation(text: string, speaker?: number): Promise<{
|
|
40
|
+
notation: string;
|
|
41
|
+
accentPhrases: AccentPhrase[];
|
|
42
|
+
}>;
|
|
99
43
|
clearQueue(): Promise<void>;
|
|
100
|
-
/**
|
|
101
|
-
* スピーカー一覧を取得します
|
|
102
|
-
* @returns スピーカー情報の配列
|
|
103
|
-
*/
|
|
104
44
|
getSpeakers(): Promise<import("./types.js").Speaker[]>;
|
|
105
|
-
/**
|
|
106
|
-
* スピーカーの情報を取得
|
|
107
|
-
* @param uuid スピーカーUUID
|
|
108
|
-
* @returns スピーカー情報
|
|
109
|
-
*/
|
|
110
45
|
getSpeakerInfo(uuid: string): Promise<import("./types.js").SpeakerInfo>;
|
|
111
|
-
/**
|
|
112
|
-
* VOICEVOX Engine の接続状態をチェック
|
|
113
|
-
* @returns 接続情報(connected, version, url)
|
|
114
|
-
*/
|
|
115
46
|
checkHealth(): Promise<{
|
|
116
47
|
connected: boolean;
|
|
117
48
|
version?: string;
|
|
118
49
|
url: string;
|
|
119
50
|
}>;
|
|
120
|
-
/**
|
|
121
|
-
* QueueServiceインスタンスを取得
|
|
122
|
-
* 高度な操作のため公開
|
|
123
|
-
*/
|
|
124
51
|
getQueueService(): QueueService;
|
|
125
|
-
/**
|
|
126
|
-
* 再生を開始
|
|
127
|
-
*/
|
|
128
52
|
startPlayback(): void;
|
|
129
|
-
/**
|
|
130
|
-
* 再生を一時停止
|
|
131
|
-
*/
|
|
132
53
|
pausePlayback(): void;
|
|
133
|
-
/**
|
|
134
|
-
* 再生を再開
|
|
135
|
-
*/
|
|
136
54
|
resumePlayback(): void;
|
|
137
|
-
/**
|
|
138
|
-
* キュー内のアイテム数を取得
|
|
139
|
-
*/
|
|
140
55
|
getQueueLength(): number;
|
|
141
|
-
/**
|
|
142
|
-
* キューが空かどうかを確認
|
|
143
|
-
*/
|
|
144
56
|
isQueueEmpty(): boolean;
|
|
145
|
-
/**
|
|
146
|
-
* キューが再生中かどうかを確認
|
|
147
|
-
*/
|
|
148
57
|
isPlaying(): boolean;
|
|
149
58
|
}
|
|
150
59
|
//# sourceMappingURL=client.d.ts.map
|