@kajidog/voicevox-client 0.4.1 → 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/LICENSE +14 -14
- 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 +40 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +90 -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 +28 -119
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +48 -417
- package/dist/client.js.map +1 -1
- package/dist/effect/config.d.ts +43 -0
- package/dist/effect/config.d.ts.map +1 -0
- package/dist/effect/config.js +45 -0
- package/dist/effect/config.js.map +1 -0
- package/dist/effect/context.d.ts +33 -0
- package/dist/effect/context.d.ts.map +1 -0
- package/dist/effect/context.js +10 -0
- package/dist/effect/context.js.map +1 -0
- package/dist/effect/errors.d.ts +130 -0
- package/dist/effect/errors.d.ts.map +1 -0
- package/dist/effect/errors.js +121 -0
- package/dist/effect/errors.js.map +1 -0
- package/dist/effect/index.d.ts +34 -0
- package/dist/effect/index.d.ts.map +1 -0
- package/dist/effect/index.js +67 -0
- package/dist/effect/index.js.map +1 -0
- package/dist/effect/queue-manager.d.ts +34 -0
- package/dist/effect/queue-manager.d.ts.map +1 -0
- package/dist/effect/queue-manager.js +59 -0
- package/dist/effect/queue-manager.js.map +1 -0
- package/dist/effect/services/api-service.d.ts +58 -0
- package/dist/effect/services/api-service.d.ts.map +1 -0
- package/dist/effect/services/api-service.js +90 -0
- package/dist/effect/services/api-service.js.map +1 -0
- package/dist/effect/services/audio-generator-service.d.ts +78 -0
- package/dist/effect/services/audio-generator-service.d.ts.map +1 -0
- package/dist/effect/services/audio-generator-service.js +187 -0
- package/dist/effect/services/audio-generator-service.js.map +1 -0
- package/dist/effect/services/audio-player-service.d.ts +101 -0
- package/dist/effect/services/audio-player-service.d.ts.map +1 -0
- package/dist/effect/services/audio-player-service.js +297 -0
- package/dist/effect/services/audio-player-service.js.map +1 -0
- package/dist/effect/services/event-manager-service.d.ts +96 -0
- package/dist/effect/services/event-manager-service.d.ts.map +1 -0
- package/dist/effect/services/event-manager-service.js +208 -0
- package/dist/effect/services/event-manager-service.js.map +1 -0
- package/dist/effect/services/file-manager-service.d.ts +91 -0
- package/dist/effect/services/file-manager-service.d.ts.map +1 -0
- package/dist/effect/services/file-manager-service.js +215 -0
- package/dist/effect/services/file-manager-service.js.map +1 -0
- package/dist/effect/utils.d.ts +118 -0
- package/dist/effect/utils.d.ts.map +1 -0
- package/dist/effect/utils.js +186 -0
- package/dist/effect/utils.js.map +1 -0
- package/dist/error.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/player.d.ts +110 -0
- package/dist/player.d.ts.map +1 -0
- package/dist/player.js +183 -0
- package/dist/player.js.map +1 -0
- package/dist/queue/audio-player.d.ts +44 -0
- package/dist/queue/audio-player.d.ts.map +1 -0
- package/dist/queue/audio-player.js +344 -0
- package/dist/queue/audio-player.js.map +1 -0
- package/dist/queue/file-manager.js +9 -9
- package/dist/queue/file-manager.js.map +1 -1
- package/dist/queue/manager.d.ts +134 -0
- package/dist/queue/manager.d.ts.map +1 -0
- package/dist/queue/manager.js +564 -0
- package/dist/queue/manager.js.map +1 -0
- package/dist/queue/queue-service.d.ts.map +1 -1
- package/dist/queue/queue-service.js +20 -6
- 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/shared-queue-manager.d.ts +119 -0
- package/dist/shared-queue-manager.d.ts.map +1 -0
- package/dist/shared-queue-manager.js +487 -0
- package/dist/shared-queue-manager.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/state/types.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/dist/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
package/dist/client.js
CHANGED
|
@@ -2,12 +2,12 @@ import { VoicevoxApi } from './api.js';
|
|
|
2
2
|
import { handleError } from './error.js';
|
|
3
3
|
import { QueueService } from './queue/queue-service.js';
|
|
4
4
|
import { QueueEventType, QueueItemStatus } from './queue/types.js';
|
|
5
|
-
import {
|
|
5
|
+
import { DictionaryService } from './services/dictionary-service.js';
|
|
6
|
+
import { SpeechService } from './services/speech-service.js';
|
|
6
7
|
/**
|
|
7
8
|
* 環境変数から再生オプションを読み取る関数
|
|
8
9
|
*/
|
|
9
10
|
function getPlaybackOptionsFromEnv() {
|
|
10
|
-
// ブラウザ環境ではprocess.envが存在しないので空のオブジェクトを返す
|
|
11
11
|
if (typeof process === 'undefined' || !process.env) {
|
|
12
12
|
return {};
|
|
13
13
|
}
|
|
@@ -25,34 +25,22 @@ function getPlaybackOptionsFromEnv() {
|
|
|
25
25
|
export class VoicevoxClient {
|
|
26
26
|
queueService;
|
|
27
27
|
api;
|
|
28
|
-
defaultSpeaker;
|
|
29
|
-
defaultSpeedScale;
|
|
30
|
-
defaultVolumeScale;
|
|
31
|
-
defaultPitchScale;
|
|
32
|
-
defaultPrePhonemeLength;
|
|
33
|
-
defaultPostPhonemeLength;
|
|
34
28
|
defaultPlaybackOptions;
|
|
35
|
-
|
|
29
|
+
dictionaryService;
|
|
30
|
+
speechService;
|
|
36
31
|
constructor(config) {
|
|
37
32
|
this.validateConfig(config);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
this.defaultVolumeScale = config.defaultVolumeScale;
|
|
41
|
-
this.defaultPitchScale = config.defaultPitchScale;
|
|
42
|
-
this.defaultPrePhonemeLength = config.defaultPrePhonemeLength;
|
|
43
|
-
this.defaultPostPhonemeLength = config.defaultPostPhonemeLength;
|
|
44
|
-
// 設定から再生オプションを取得し、環境変数でオーバーライド
|
|
33
|
+
const defaultSpeaker = config.defaultSpeaker ?? 1;
|
|
34
|
+
const defaultSpeedScale = config.defaultSpeedScale ?? 1.0;
|
|
45
35
|
const envOptions = getPlaybackOptionsFromEnv();
|
|
46
36
|
this.defaultPlaybackOptions = {
|
|
47
37
|
immediate: true,
|
|
48
38
|
waitForStart: false,
|
|
49
39
|
waitForEnd: false,
|
|
50
40
|
};
|
|
51
|
-
// 設定オブジェクトの値で上書き
|
|
52
41
|
if (config.defaultPlaybackOptions) {
|
|
53
42
|
Object.assign(this.defaultPlaybackOptions, config.defaultPlaybackOptions);
|
|
54
43
|
}
|
|
55
|
-
// 環境変数の値でオーバーライド
|
|
56
44
|
if (envOptions.immediate !== undefined) {
|
|
57
45
|
this.defaultPlaybackOptions.immediate = envOptions.immediate;
|
|
58
46
|
}
|
|
@@ -62,385 +50,40 @@ export class VoicevoxClient {
|
|
|
62
50
|
if (envOptions.waitForEnd !== undefined) {
|
|
63
51
|
this.defaultPlaybackOptions.waitForEnd = envOptions.waitForEnd;
|
|
64
52
|
}
|
|
65
|
-
this.maxSegmentLength = config.maxSegmentLength ?? 150;
|
|
66
53
|
this.api = new VoicevoxApi(config.url);
|
|
67
54
|
this.queueService = new QueueService(this.api, {
|
|
68
55
|
useStreaming: config.useStreaming,
|
|
56
|
+
prefetchSize: config.prefetchSize,
|
|
57
|
+
});
|
|
58
|
+
this.dictionaryService = new DictionaryService(this.api, defaultSpeaker);
|
|
59
|
+
this.speechService = new SpeechService(this.api, this.queueService, {
|
|
60
|
+
defaultSpeaker,
|
|
61
|
+
defaultSpeedScale,
|
|
62
|
+
defaultVolumeScale: config.defaultVolumeScale,
|
|
63
|
+
defaultPitchScale: config.defaultPitchScale,
|
|
64
|
+
defaultPrePhonemeLength: config.defaultPrePhonemeLength,
|
|
65
|
+
defaultPostPhonemeLength: config.defaultPostPhonemeLength,
|
|
66
|
+
defaultPlaybackOptions: this.defaultPlaybackOptions,
|
|
67
|
+
maxSegmentLength: config.maxSegmentLength ?? 150,
|
|
69
68
|
});
|
|
70
|
-
// デフォルトで再生を開始
|
|
71
69
|
this.queueService.startPlayback();
|
|
72
|
-
// エラーイベントのログ記録
|
|
73
70
|
this.queueService.addEventListener(QueueEventType.ERROR, (_, item) => {
|
|
74
71
|
if (item) {
|
|
75
72
|
console.error(`音声合成エラー: ${item.text} (${item.error?.message || '不明なエラー'})`);
|
|
76
73
|
}
|
|
77
74
|
});
|
|
78
75
|
}
|
|
79
|
-
/**
|
|
80
|
-
* テキストを音声に変換して再生します(統一API)
|
|
81
|
-
* @param input テキスト、テキスト配列、またはセグメント配列
|
|
82
|
-
* @param options 再生オプション(speaker, speedScale, immediate, waitForStart, waitForEnd)
|
|
83
|
-
* @returns 処理結果
|
|
84
|
-
*/
|
|
85
76
|
async speak(input, options = {}) {
|
|
86
|
-
|
|
87
|
-
const speaker = options.speaker ?? this.defaultSpeaker;
|
|
88
|
-
const speed = options.speedScale ?? this.defaultSpeedScale;
|
|
89
|
-
// 入力を統一フォーマットに変換
|
|
90
|
-
const segments = this.normalizeInput(input, speaker);
|
|
91
|
-
if (segments.length === 0) {
|
|
92
|
-
return this.createSpeakResult('error', segments, 'Text is empty');
|
|
93
|
-
}
|
|
94
|
-
// 再生オプションをマージ(undefined の場合はデフォルト値を使用)
|
|
95
|
-
const playbackOptions = {
|
|
96
|
-
immediate: options.immediate ?? this.defaultPlaybackOptions.immediate,
|
|
97
|
-
waitForStart: options.waitForStart ?? this.defaultPlaybackOptions.waitForStart,
|
|
98
|
-
waitForEnd: options.waitForEnd ?? this.defaultPlaybackOptions.waitForEnd,
|
|
99
|
-
};
|
|
100
|
-
// immediate: true の場合、既存のキューをクリア
|
|
101
|
-
if (playbackOptions.immediate === true) {
|
|
102
|
-
await this.queueService.clearQueue();
|
|
103
|
-
}
|
|
104
|
-
// 待機用のPromise
|
|
105
|
-
let firstStartPromise;
|
|
106
|
-
let lastEndPromise;
|
|
107
|
-
// 最初のセグメントを優先的に処理して再生を早く開始
|
|
108
|
-
if (segments.length > 0) {
|
|
109
|
-
const firstSegment = segments[0];
|
|
110
|
-
const speakerId = this.getSpeakerId(firstSegment.speaker);
|
|
111
|
-
const firstQuery = await this.generateQuery(firstSegment.text, speakerId);
|
|
112
|
-
this.applyAudioOptions(firstQuery, options, speed);
|
|
113
|
-
const { promises: firstPromises } = await this.queueService.enqueueQuery(firstQuery, speakerId, {
|
|
114
|
-
...playbackOptions,
|
|
115
|
-
immediate: false, // キューは既にクリア済みなので、通常のキュー処理を行う
|
|
116
|
-
waitForStart: playbackOptions.waitForStart,
|
|
117
|
-
waitForEnd: playbackOptions.waitForEnd,
|
|
118
|
-
}, firstSegment.text // テキストを渡す
|
|
119
|
-
);
|
|
120
|
-
// waitForStart: 最初のセグメントの開始を待つ
|
|
121
|
-
if (firstPromises.start) {
|
|
122
|
-
firstStartPromise = firstPromises.start;
|
|
123
|
-
}
|
|
124
|
-
// セグメントが1つだけの場合は最後のendもこれ
|
|
125
|
-
if (firstPromises.end) {
|
|
126
|
-
lastEndPromise = firstPromises.end;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// 残りのセグメントを順番に処理
|
|
130
|
-
for (let i = 1; i < segments.length; i++) {
|
|
131
|
-
const segment = segments[i];
|
|
132
|
-
const speakerId = this.getSpeakerId(segment.speaker);
|
|
133
|
-
const query = await this.generateQuery(segment.text, speakerId);
|
|
134
|
-
this.applyAudioOptions(query, options, speed);
|
|
135
|
-
const isLastSegment = i === segments.length - 1;
|
|
136
|
-
const { promises: segmentPromises } = await this.queueService.enqueueQuery(query, speakerId, {
|
|
137
|
-
...playbackOptions,
|
|
138
|
-
immediate: false,
|
|
139
|
-
waitForStart: false, // 残りのセグメントの開始は待たない
|
|
140
|
-
waitForEnd: isLastSegment ? playbackOptions.waitForEnd : false, // 最後のセグメントのみ終了を待つ
|
|
141
|
-
}, segment.text // テキストを渡す
|
|
142
|
-
);
|
|
143
|
-
// waitForEnd: 最後のセグメントの終了を待つ
|
|
144
|
-
if (isLastSegment && segmentPromises.end) {
|
|
145
|
-
lastEndPromise = segmentPromises.end;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// 待機オプションに応じて処理
|
|
149
|
-
const waitPromises = [];
|
|
150
|
-
// waitForStart: 最初のセグメントの再生開始を待つ
|
|
151
|
-
if (playbackOptions.waitForStart && firstStartPromise) {
|
|
152
|
-
waitPromises.push(firstStartPromise);
|
|
153
|
-
}
|
|
154
|
-
// waitForEnd: 最後のセグメントの再生終了を待つ
|
|
155
|
-
if (playbackOptions.waitForEnd && lastEndPromise) {
|
|
156
|
-
waitPromises.push(lastEndPromise);
|
|
157
|
-
}
|
|
158
|
-
if (waitPromises.length > 0) {
|
|
159
|
-
await Promise.all(waitPromises);
|
|
160
|
-
}
|
|
161
|
-
const status = playbackOptions.waitForEnd ? 'played' : 'queued';
|
|
162
|
-
return this.createSpeakResult(status, segments);
|
|
163
|
-
}
|
|
164
|
-
catch (error) {
|
|
165
|
-
return this.createSpeakResult('error', [], error instanceof Error ? error.message : String(error));
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* 入力を統一フォーマット(SpeechSegment[])に変換
|
|
170
|
-
* @private
|
|
171
|
-
*/
|
|
172
|
-
normalizeInput(input, defaultSpeaker) {
|
|
173
|
-
if (typeof input === 'string') {
|
|
174
|
-
// 文字列の場合は分割してセグメント化
|
|
175
|
-
const segments = splitText(input, this.maxSegmentLength);
|
|
176
|
-
return segments.map((text) => ({
|
|
177
|
-
text,
|
|
178
|
-
speaker: defaultSpeaker,
|
|
179
|
-
}));
|
|
180
|
-
}
|
|
181
|
-
if (Array.isArray(input)) {
|
|
182
|
-
// 配列の場合
|
|
183
|
-
if (input.length === 0)
|
|
184
|
-
return [];
|
|
185
|
-
// SpeechSegment配列かどうかチェック
|
|
186
|
-
if (typeof input[0] === 'object' && 'text' in input[0]) {
|
|
187
|
-
// SpeechSegment配列の場合
|
|
188
|
-
return input.map((segment) => ({
|
|
189
|
-
text: segment.text,
|
|
190
|
-
speaker: segment.speaker || defaultSpeaker,
|
|
191
|
-
}));
|
|
192
|
-
}
|
|
193
|
-
// 文字列配列の場合
|
|
194
|
-
return input.map((text) => ({
|
|
195
|
-
text,
|
|
196
|
-
speaker: defaultSpeaker,
|
|
197
|
-
}));
|
|
198
|
-
}
|
|
199
|
-
return [];
|
|
77
|
+
return this.speechService.speak(input, options);
|
|
200
78
|
}
|
|
201
|
-
/**
|
|
202
|
-
* テキストから音声合成用クエリを生成します
|
|
203
|
-
* @param text 変換するテキスト
|
|
204
|
-
* @param speaker 話者ID(オプション)
|
|
205
|
-
* @param speedScale 再生速度(オプション)
|
|
206
|
-
* @returns 音声合成用クエリ
|
|
207
|
-
*/
|
|
208
79
|
async generateQuery(text, speaker, speedScale) {
|
|
209
|
-
|
|
210
|
-
const speakerId = this.getSpeakerId(speaker);
|
|
211
|
-
// 直接APIを使用してクエリを生成
|
|
212
|
-
const query = await this.api.generateQuery(text, speakerId);
|
|
213
|
-
query.speedScale = this.getSpeedScale(speedScale);
|
|
214
|
-
// デフォルト値を適用
|
|
215
|
-
if (this.defaultVolumeScale !== undefined) {
|
|
216
|
-
query.volumeScale = this.defaultVolumeScale;
|
|
217
|
-
}
|
|
218
|
-
if (this.defaultPitchScale !== undefined) {
|
|
219
|
-
query.pitchScale = this.defaultPitchScale;
|
|
220
|
-
}
|
|
221
|
-
if (this.defaultPrePhonemeLength !== undefined) {
|
|
222
|
-
query.prePhonemeLength = this.defaultPrePhonemeLength;
|
|
223
|
-
}
|
|
224
|
-
if (this.defaultPostPhonemeLength !== undefined) {
|
|
225
|
-
query.postPhonemeLength = this.defaultPostPhonemeLength;
|
|
226
|
-
}
|
|
227
|
-
return query;
|
|
228
|
-
}
|
|
229
|
-
catch (error) {
|
|
230
|
-
throw handleError('クエリ生成中にエラーが発生しました', error);
|
|
231
|
-
}
|
|
80
|
+
return this.speechService.generateQuery(text, speaker, speedScale);
|
|
232
81
|
}
|
|
233
|
-
/**
|
|
234
|
-
* テキストから直接音声ファイルを生成します
|
|
235
|
-
* @param textOrQuery テキストまたは音声合成用クエリ
|
|
236
|
-
* @param outputPath 出力ファイルパス(オプション、省略時は一時ファイル)
|
|
237
|
-
* @param speaker 話者ID(オプション)
|
|
238
|
-
* @param speedScale 再生速度(オプション)
|
|
239
|
-
* @returns 生成した音声ファイルのパス
|
|
240
|
-
*/
|
|
241
82
|
async generateAudioFile(textOrQuery, outputPath, speaker, speedScale) {
|
|
242
|
-
|
|
243
|
-
const speakerId = this.getSpeakerId(speaker);
|
|
244
|
-
const speed = this.getSpeedScale(speedScale);
|
|
245
|
-
const fileManager = this.queueService.getFileManager();
|
|
246
|
-
// ブラウザ環境の場合
|
|
247
|
-
if (isBrowser()) {
|
|
248
|
-
const filename = outputPath ||
|
|
249
|
-
(typeof textOrQuery === 'string'
|
|
250
|
-
? `voice-${textOrQuery.substring(0, 10).replace(/[^a-zA-Z0-9]/g, '_')}-${Date.now()}.wav`
|
|
251
|
-
: `voice-${Date.now()}.wav`);
|
|
252
|
-
const query = typeof textOrQuery === 'string' ? await this.generateQuery(textOrQuery, speakerId) : { ...textOrQuery };
|
|
253
|
-
query.speedScale = speed;
|
|
254
|
-
const audioData = await this.api.synthesize(query, speakerId);
|
|
255
|
-
return await downloadBlob(audioData, filename);
|
|
256
|
-
}
|
|
257
|
-
// Node.js環境の場合
|
|
258
|
-
if (typeof textOrQuery === 'string') {
|
|
259
|
-
const query = await this.generateQuery(textOrQuery, speakerId);
|
|
260
|
-
query.speedScale = speed;
|
|
261
|
-
const audioData = await this.api.synthesize(query, speakerId);
|
|
262
|
-
if (!outputPath) {
|
|
263
|
-
return await fileManager.saveTempAudioFile(audioData);
|
|
264
|
-
}
|
|
265
|
-
return await fileManager.saveAudioFile(audioData, outputPath);
|
|
266
|
-
}
|
|
267
|
-
// クエリを使って音声合成
|
|
268
|
-
const query = { ...textOrQuery, speedScale: speed };
|
|
269
|
-
const audioData = await this.api.synthesize(query, speakerId);
|
|
270
|
-
if (!outputPath) {
|
|
271
|
-
return await fileManager.saveTempAudioFile(audioData);
|
|
272
|
-
}
|
|
273
|
-
return await fileManager.saveAudioFile(audioData, outputPath);
|
|
274
|
-
}
|
|
275
|
-
catch (error) {
|
|
276
|
-
throw handleError('音声ファイル生成中にエラーが発生しました', error);
|
|
277
|
-
}
|
|
83
|
+
return this.speechService.generateAudioFile(textOrQuery, outputPath, speaker, speedScale);
|
|
278
84
|
}
|
|
279
|
-
/**
|
|
280
|
-
* テキストを音声ファイル生成キューに追加します(統一API)
|
|
281
|
-
* @param input テキスト、テキスト配列、セグメント配列、またはAudioQuery
|
|
282
|
-
* @param options 再生オプション
|
|
283
|
-
* @returns 処理結果
|
|
284
|
-
*/
|
|
285
85
|
async enqueueAudioGeneration(input, options = {}) {
|
|
286
|
-
|
|
287
|
-
const speed = options.speedScale ?? this.defaultSpeedScale;
|
|
288
|
-
// 再生オプションをマージ(undefined の場合はデフォルト値を使用)
|
|
289
|
-
const playbackOptions = {
|
|
290
|
-
immediate: options.immediate ?? this.defaultPlaybackOptions.immediate,
|
|
291
|
-
waitForStart: options.waitForStart ?? this.defaultPlaybackOptions.waitForStart,
|
|
292
|
-
waitForEnd: options.waitForEnd ?? this.defaultPlaybackOptions.waitForEnd,
|
|
293
|
-
};
|
|
294
|
-
// immediate: true の場合、既存のキューをクリア
|
|
295
|
-
if (playbackOptions.immediate === true) {
|
|
296
|
-
await this.queueService.clearQueue();
|
|
297
|
-
}
|
|
298
|
-
// AudioQueryの場合(単一アイテム)
|
|
299
|
-
if (typeof input === 'object' && !Array.isArray(input) && 'accent_phrases' in input) {
|
|
300
|
-
const speakerId = this.getSpeakerId(options.speaker);
|
|
301
|
-
const query = { ...input };
|
|
302
|
-
this.applyAudioOptions(query, options, speed);
|
|
303
|
-
const { promises } = await this.queueService.enqueueQuery(query, speakerId, {
|
|
304
|
-
...playbackOptions,
|
|
305
|
-
immediate: false, // キューは既にクリア済み
|
|
306
|
-
}, '(クエリ再生)' // クエリの場合はテキストがないのでプレースホルダー
|
|
307
|
-
);
|
|
308
|
-
const waitPromises = [];
|
|
309
|
-
if (playbackOptions.waitForStart && promises.start)
|
|
310
|
-
waitPromises.push(promises.start);
|
|
311
|
-
if (playbackOptions.waitForEnd && promises.end)
|
|
312
|
-
waitPromises.push(promises.end);
|
|
313
|
-
if (waitPromises.length > 0) {
|
|
314
|
-
await Promise.all(waitPromises);
|
|
315
|
-
}
|
|
316
|
-
const status = playbackOptions.waitForEnd ? 'played' : 'queued';
|
|
317
|
-
return this.createSpeakResult(status, [{ text: '(from query)', speaker: speakerId }]);
|
|
318
|
-
}
|
|
319
|
-
// テキスト系の場合
|
|
320
|
-
const segments = this.normalizeInput(input, options.speaker);
|
|
321
|
-
if (segments.length === 0) {
|
|
322
|
-
return this.createSpeakResult('error', segments, 'Text is empty');
|
|
323
|
-
}
|
|
324
|
-
// 待機用のPromise
|
|
325
|
-
let firstStartPromise;
|
|
326
|
-
let lastEndPromise;
|
|
327
|
-
// 最初のセグメントを優先処理
|
|
328
|
-
if (segments.length > 0) {
|
|
329
|
-
const firstSegment = segments[0];
|
|
330
|
-
const speakerId = this.getSpeakerId(firstSegment.speaker);
|
|
331
|
-
const firstQuery = await this.generateQuery(firstSegment.text, speakerId);
|
|
332
|
-
this.applyAudioOptions(firstQuery, options, speed);
|
|
333
|
-
const { promises: firstPromises } = await this.queueService.enqueueQuery(firstQuery, speakerId, {
|
|
334
|
-
...playbackOptions,
|
|
335
|
-
immediate: false, // キューは既にクリア済み
|
|
336
|
-
waitForStart: playbackOptions.waitForStart,
|
|
337
|
-
waitForEnd: playbackOptions.waitForEnd,
|
|
338
|
-
}, firstSegment.text // テキストを渡す
|
|
339
|
-
);
|
|
340
|
-
// waitForStart: 最初のセグメントの開始を待つ
|
|
341
|
-
if (firstPromises.start) {
|
|
342
|
-
firstStartPromise = firstPromises.start;
|
|
343
|
-
}
|
|
344
|
-
// セグメントが1つだけの場合は最後のendもこれ
|
|
345
|
-
if (firstPromises.end) {
|
|
346
|
-
lastEndPromise = firstPromises.end;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
// 残りのセグメントを順番に処理
|
|
350
|
-
for (let i = 1; i < segments.length; i++) {
|
|
351
|
-
const segment = segments[i];
|
|
352
|
-
const speakerId = this.getSpeakerId(segment.speaker);
|
|
353
|
-
const query = await this.generateQuery(segment.text, speakerId);
|
|
354
|
-
this.applyAudioOptions(query, options, speed);
|
|
355
|
-
const isLastSegment = i === segments.length - 1;
|
|
356
|
-
const { promises: segmentPromises } = await this.queueService.enqueueQuery(query, speakerId, {
|
|
357
|
-
...playbackOptions,
|
|
358
|
-
immediate: false,
|
|
359
|
-
waitForStart: false, // 残りのセグメントの開始は待たない
|
|
360
|
-
waitForEnd: isLastSegment ? playbackOptions.waitForEnd : false, // 最後のセグメントのみ終了を待つ
|
|
361
|
-
}, segment.text // テキストを渡す
|
|
362
|
-
);
|
|
363
|
-
// waitForEnd: 最後のセグメントの終了を待つ
|
|
364
|
-
if (isLastSegment && segmentPromises.end) {
|
|
365
|
-
lastEndPromise = segmentPromises.end;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
// 待機オプションに応じて処理
|
|
369
|
-
const waitPromises = [];
|
|
370
|
-
// waitForStart: 最初のセグメントの再生開始を待つ
|
|
371
|
-
if (playbackOptions.waitForStart && firstStartPromise) {
|
|
372
|
-
waitPromises.push(firstStartPromise);
|
|
373
|
-
}
|
|
374
|
-
// waitForEnd: 最後のセグメントの再生終了を待つ
|
|
375
|
-
if (playbackOptions.waitForEnd && lastEndPromise) {
|
|
376
|
-
waitPromises.push(lastEndPromise);
|
|
377
|
-
}
|
|
378
|
-
if (waitPromises.length > 0) {
|
|
379
|
-
await Promise.all(waitPromises);
|
|
380
|
-
}
|
|
381
|
-
const status = playbackOptions.waitForEnd ? 'played' : 'queued';
|
|
382
|
-
return this.createSpeakResult(status, segments);
|
|
383
|
-
}
|
|
384
|
-
catch (error) {
|
|
385
|
-
return this.createSpeakResult('error', [], error instanceof Error ? error.message : String(error));
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* 話者IDを取得(指定がない場合はデフォルト値を使用)
|
|
390
|
-
* @private
|
|
391
|
-
*/
|
|
392
|
-
getSpeakerId(speaker) {
|
|
393
|
-
return speaker ?? this.defaultSpeaker;
|
|
394
|
-
}
|
|
395
|
-
/**
|
|
396
|
-
* 再生速度を取得(指定がない場合はデフォルト値を使用)
|
|
397
|
-
* @private
|
|
398
|
-
*/
|
|
399
|
-
getSpeedScale(speedScale) {
|
|
400
|
-
return speedScale ?? this.defaultSpeedScale;
|
|
401
|
-
}
|
|
402
|
-
/**
|
|
403
|
-
* AudioQueryにSpeakOptionsの音声パラメータを適用
|
|
404
|
-
* @private
|
|
405
|
-
*/
|
|
406
|
-
applyAudioOptions(query, options, speed) {
|
|
407
|
-
query.speedScale = speed;
|
|
408
|
-
if (options.pitchScale !== undefined)
|
|
409
|
-
query.pitchScale = options.pitchScale;
|
|
410
|
-
if (options.intonationScale !== undefined)
|
|
411
|
-
query.intonationScale = options.intonationScale;
|
|
412
|
-
if (options.volumeScale !== undefined)
|
|
413
|
-
query.volumeScale = options.volumeScale;
|
|
414
|
-
if (options.prePhonemeLength !== undefined)
|
|
415
|
-
query.prePhonemeLength = options.prePhonemeLength;
|
|
416
|
-
if (options.postPhonemeLength !== undefined)
|
|
417
|
-
query.postPhonemeLength = options.postPhonemeLength;
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* SpeakResultを生成
|
|
421
|
-
* @private
|
|
422
|
-
*/
|
|
423
|
-
createSpeakResult(status, segments, errorMessage) {
|
|
424
|
-
const isStreaming = this.queueService.isStreamingEnabled();
|
|
425
|
-
const textPreview = this.createTextPreview(segments, 30);
|
|
426
|
-
return {
|
|
427
|
-
status,
|
|
428
|
-
mode: isStreaming ? 'streaming' : 'file',
|
|
429
|
-
textPreview,
|
|
430
|
-
segmentCount: segments.length,
|
|
431
|
-
errorMessage,
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
/**
|
|
435
|
-
* テキストプレビューを生成
|
|
436
|
-
* @private
|
|
437
|
-
*/
|
|
438
|
-
createTextPreview(segments, maxLength) {
|
|
439
|
-
const fullText = segments.map((s) => s.text).join(' ');
|
|
440
|
-
if (fullText.length <= maxLength) {
|
|
441
|
-
return fullText;
|
|
442
|
-
}
|
|
443
|
-
return `${fullText.substring(0, maxLength - 3)}...`;
|
|
86
|
+
return this.speechService.enqueueAudioGeneration(input, options);
|
|
444
87
|
}
|
|
445
88
|
validateConfig(config) {
|
|
446
89
|
if (!config.url) {
|
|
@@ -452,17 +95,36 @@ export class VoicevoxClient {
|
|
|
452
95
|
catch {
|
|
453
96
|
throw new Error('無効なVOICEVOXのURLです');
|
|
454
97
|
}
|
|
98
|
+
if (config.prefetchSize !== undefined) {
|
|
99
|
+
if (!Number.isInteger(config.prefetchSize) || config.prefetchSize <= 0) {
|
|
100
|
+
throw new Error('prefetchSize は 1 以上の整数で指定してください');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async getDictionary() {
|
|
105
|
+
return this.dictionaryService.getDictionary();
|
|
106
|
+
}
|
|
107
|
+
async addDictionaryWord(input) {
|
|
108
|
+
return this.dictionaryService.addDictionaryWord(input);
|
|
109
|
+
}
|
|
110
|
+
async addDictionaryWords(inputs) {
|
|
111
|
+
return this.dictionaryService.addDictionaryWords(inputs);
|
|
112
|
+
}
|
|
113
|
+
async updateDictionaryWord(input) {
|
|
114
|
+
return this.dictionaryService.updateDictionaryWord(input);
|
|
115
|
+
}
|
|
116
|
+
async updateDictionaryWords(inputs) {
|
|
117
|
+
return this.dictionaryService.updateDictionaryWords(inputs);
|
|
118
|
+
}
|
|
119
|
+
async deleteDictionaryWord(wordUuid) {
|
|
120
|
+
return this.dictionaryService.deleteDictionaryWord(wordUuid);
|
|
121
|
+
}
|
|
122
|
+
async getAccentNotation(text, speaker) {
|
|
123
|
+
return this.dictionaryService.getAccentNotation(text, speaker);
|
|
455
124
|
}
|
|
456
|
-
/**
|
|
457
|
-
* キューをクリア
|
|
458
|
-
*/
|
|
459
125
|
async clearQueue() {
|
|
460
126
|
return this.queueService.clearQueue();
|
|
461
127
|
}
|
|
462
|
-
/**
|
|
463
|
-
* スピーカー一覧を取得します
|
|
464
|
-
* @returns スピーカー情報の配列
|
|
465
|
-
*/
|
|
466
128
|
async getSpeakers() {
|
|
467
129
|
try {
|
|
468
130
|
return await this.api.getSpeakers();
|
|
@@ -471,11 +133,6 @@ export class VoicevoxClient {
|
|
|
471
133
|
throw handleError('スピーカー一覧取得中にエラーが発生しました', error);
|
|
472
134
|
}
|
|
473
135
|
}
|
|
474
|
-
/**
|
|
475
|
-
* スピーカーの情報を取得
|
|
476
|
-
* @param uuid スピーカーUUID
|
|
477
|
-
* @returns スピーカー情報
|
|
478
|
-
*/
|
|
479
136
|
async getSpeakerInfo(uuid) {
|
|
480
137
|
try {
|
|
481
138
|
return await this.api.getSpeakerInfo(uuid);
|
|
@@ -484,53 +141,27 @@ export class VoicevoxClient {
|
|
|
484
141
|
throw handleError('スピーカー情報取得中にエラーが発生しました', error);
|
|
485
142
|
}
|
|
486
143
|
}
|
|
487
|
-
/**
|
|
488
|
-
* VOICEVOX Engine の接続状態をチェック
|
|
489
|
-
* @returns 接続情報(connected, version, url)
|
|
490
|
-
*/
|
|
491
144
|
async checkHealth() {
|
|
492
145
|
return this.api.checkHealth();
|
|
493
146
|
}
|
|
494
|
-
/**
|
|
495
|
-
* QueueServiceインスタンスを取得
|
|
496
|
-
* 高度な操作のため公開
|
|
497
|
-
*/
|
|
498
147
|
getQueueService() {
|
|
499
148
|
return this.queueService;
|
|
500
149
|
}
|
|
501
|
-
/**
|
|
502
|
-
* 再生を開始
|
|
503
|
-
*/
|
|
504
150
|
startPlayback() {
|
|
505
151
|
this.queueService.startPlayback();
|
|
506
152
|
}
|
|
507
|
-
/**
|
|
508
|
-
* 再生を一時停止
|
|
509
|
-
*/
|
|
510
153
|
pausePlayback() {
|
|
511
154
|
this.queueService.pausePlayback();
|
|
512
155
|
}
|
|
513
|
-
/**
|
|
514
|
-
* 再生を再開
|
|
515
|
-
*/
|
|
516
156
|
resumePlayback() {
|
|
517
157
|
this.queueService.resumePlayback();
|
|
518
158
|
}
|
|
519
|
-
/**
|
|
520
|
-
* キュー内のアイテム数を取得
|
|
521
|
-
*/
|
|
522
159
|
getQueueLength() {
|
|
523
160
|
return this.queueService.getQueue().length;
|
|
524
161
|
}
|
|
525
|
-
/**
|
|
526
|
-
* キューが空かどうかを確認
|
|
527
|
-
*/
|
|
528
162
|
isQueueEmpty() {
|
|
529
163
|
return this.queueService.getQueue().length === 0;
|
|
530
164
|
}
|
|
531
|
-
/**
|
|
532
|
-
* キューが再生中かどうかを確認
|
|
533
|
-
*/
|
|
534
165
|
isPlaying() {
|
|
535
166
|
return this.queueService.getQueue().some((item) => item.status === QueueItemStatus.PLAYING);
|
|
536
167
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect.ts configuration and infrastructure
|
|
3
|
+
* Provides centralized setup for Effect-based components
|
|
4
|
+
*/
|
|
5
|
+
import { Context, Layer, LogLevel } from 'effect';
|
|
6
|
+
/**
|
|
7
|
+
* Application configuration interface
|
|
8
|
+
*/
|
|
9
|
+
export interface AppConfig {
|
|
10
|
+
readonly voicevoxUrl: string;
|
|
11
|
+
readonly defaultSpeaker: number;
|
|
12
|
+
readonly defaultSpeedScale: number;
|
|
13
|
+
readonly defaultImmediate: boolean;
|
|
14
|
+
readonly defaultWaitForStart: boolean;
|
|
15
|
+
readonly defaultWaitForEnd: boolean;
|
|
16
|
+
readonly prefetchSize: number;
|
|
17
|
+
readonly logLevel: LogLevel.LogLevel;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Default application configuration
|
|
21
|
+
*/
|
|
22
|
+
export declare const defaultConfig: AppConfig;
|
|
23
|
+
/**
|
|
24
|
+
* Application configuration context
|
|
25
|
+
*/
|
|
26
|
+
export declare const AppConfigContext: Context.Tag<AppConfig, AppConfig>;
|
|
27
|
+
/**
|
|
28
|
+
* Layer providing the application configuration
|
|
29
|
+
*/
|
|
30
|
+
export declare const AppConfigLive: Layer.Layer<AppConfig, never, never>;
|
|
31
|
+
/**
|
|
32
|
+
* Layer providing configuration from environment variables
|
|
33
|
+
*/
|
|
34
|
+
export declare const AppConfigFromEnv: Layer.Layer<AppConfig, never, never>;
|
|
35
|
+
/**
|
|
36
|
+
* Logger configuration layer
|
|
37
|
+
*/
|
|
38
|
+
export declare const LoggerLive: Layer.Layer<never, never, never>;
|
|
39
|
+
/**
|
|
40
|
+
* Main application layer combining all infrastructure
|
|
41
|
+
*/
|
|
42
|
+
export declare const AppLayer: Layer.Layer<AppConfig, never, never>;
|
|
43
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/effect/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkB,OAAO,EAAU,KAAK,EAAE,QAAQ,EAAU,MAAM,QAAQ,CAAA;AAEjF;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAA;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAS3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,mCAAuD,CAAA;AAEpF;;GAEG;AACH,eAAO,MAAM,aAAa,sCAAiD,CAAA;AAE3E;;GAEG;AACH,eAAO,MAAM,gBAAgB,sCAG5B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,kCAMtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,sCAA4C,CAAA"}
|