@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.
Files changed (114) hide show
  1. package/LICENSE +14 -14
  2. package/dist/accent-utils.d.ts +93 -0
  3. package/dist/accent-utils.d.ts.map +1 -0
  4. package/dist/accent-utils.js +211 -0
  5. package/dist/accent-utils.js.map +1 -0
  6. package/dist/api.d.ts +40 -2
  7. package/dist/api.d.ts.map +1 -1
  8. package/dist/api.js +90 -0
  9. package/dist/api.js.map +1 -1
  10. package/dist/cache-policy.d.ts +21 -0
  11. package/dist/cache-policy.d.ts.map +1 -0
  12. package/dist/cache-policy.js +31 -0
  13. package/dist/cache-policy.js.map +1 -0
  14. package/dist/client.d.ts +28 -119
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +48 -417
  17. package/dist/client.js.map +1 -1
  18. package/dist/effect/config.d.ts +43 -0
  19. package/dist/effect/config.d.ts.map +1 -0
  20. package/dist/effect/config.js +45 -0
  21. package/dist/effect/config.js.map +1 -0
  22. package/dist/effect/context.d.ts +33 -0
  23. package/dist/effect/context.d.ts.map +1 -0
  24. package/dist/effect/context.js +10 -0
  25. package/dist/effect/context.js.map +1 -0
  26. package/dist/effect/errors.d.ts +130 -0
  27. package/dist/effect/errors.d.ts.map +1 -0
  28. package/dist/effect/errors.js +121 -0
  29. package/dist/effect/errors.js.map +1 -0
  30. package/dist/effect/index.d.ts +34 -0
  31. package/dist/effect/index.d.ts.map +1 -0
  32. package/dist/effect/index.js +67 -0
  33. package/dist/effect/index.js.map +1 -0
  34. package/dist/effect/queue-manager.d.ts +34 -0
  35. package/dist/effect/queue-manager.d.ts.map +1 -0
  36. package/dist/effect/queue-manager.js +59 -0
  37. package/dist/effect/queue-manager.js.map +1 -0
  38. package/dist/effect/services/api-service.d.ts +58 -0
  39. package/dist/effect/services/api-service.d.ts.map +1 -0
  40. package/dist/effect/services/api-service.js +90 -0
  41. package/dist/effect/services/api-service.js.map +1 -0
  42. package/dist/effect/services/audio-generator-service.d.ts +78 -0
  43. package/dist/effect/services/audio-generator-service.d.ts.map +1 -0
  44. package/dist/effect/services/audio-generator-service.js +187 -0
  45. package/dist/effect/services/audio-generator-service.js.map +1 -0
  46. package/dist/effect/services/audio-player-service.d.ts +101 -0
  47. package/dist/effect/services/audio-player-service.d.ts.map +1 -0
  48. package/dist/effect/services/audio-player-service.js +297 -0
  49. package/dist/effect/services/audio-player-service.js.map +1 -0
  50. package/dist/effect/services/event-manager-service.d.ts +96 -0
  51. package/dist/effect/services/event-manager-service.d.ts.map +1 -0
  52. package/dist/effect/services/event-manager-service.js +208 -0
  53. package/dist/effect/services/event-manager-service.js.map +1 -0
  54. package/dist/effect/services/file-manager-service.d.ts +91 -0
  55. package/dist/effect/services/file-manager-service.d.ts.map +1 -0
  56. package/dist/effect/services/file-manager-service.js +215 -0
  57. package/dist/effect/services/file-manager-service.js.map +1 -0
  58. package/dist/effect/utils.d.ts +118 -0
  59. package/dist/effect/utils.d.ts.map +1 -0
  60. package/dist/effect/utils.js +186 -0
  61. package/dist/effect/utils.js.map +1 -0
  62. package/dist/error.js.map +1 -1
  63. package/dist/index.d.ts +3 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +3 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/playback/node-playback-strategy.d.ts.map +1 -1
  68. package/dist/playback/node-playback-strategy.js +2 -6
  69. package/dist/playback/node-playback-strategy.js.map +1 -1
  70. package/dist/player.d.ts +110 -0
  71. package/dist/player.d.ts.map +1 -0
  72. package/dist/player.js +183 -0
  73. package/dist/player.js.map +1 -0
  74. package/dist/queue/audio-player.d.ts +44 -0
  75. package/dist/queue/audio-player.d.ts.map +1 -0
  76. package/dist/queue/audio-player.js +344 -0
  77. package/dist/queue/audio-player.js.map +1 -0
  78. package/dist/queue/file-manager.js +9 -9
  79. package/dist/queue/file-manager.js.map +1 -1
  80. package/dist/queue/manager.d.ts +134 -0
  81. package/dist/queue/manager.d.ts.map +1 -0
  82. package/dist/queue/manager.js +564 -0
  83. package/dist/queue/manager.js.map +1 -0
  84. package/dist/queue/queue-service.d.ts.map +1 -1
  85. package/dist/queue/queue-service.js +20 -6
  86. package/dist/queue/queue-service.js.map +1 -1
  87. package/dist/queue/types.d.ts +3 -1
  88. package/dist/queue/types.d.ts.map +1 -1
  89. package/dist/queue/types.js.map +1 -1
  90. package/dist/services/dictionary-service.d.ts +35 -0
  91. package/dist/services/dictionary-service.d.ts.map +1 -0
  92. package/dist/services/dictionary-service.js +188 -0
  93. package/dist/services/dictionary-service.js.map +1 -0
  94. package/dist/services/speech-service.d.ts +43 -0
  95. package/dist/services/speech-service.d.ts.map +1 -0
  96. package/dist/services/speech-service.js +236 -0
  97. package/dist/services/speech-service.js.map +1 -0
  98. package/dist/shared-queue-manager.d.ts +119 -0
  99. package/dist/shared-queue-manager.d.ts.map +1 -0
  100. package/dist/shared-queue-manager.js +487 -0
  101. package/dist/shared-queue-manager.js.map +1 -0
  102. package/dist/state/queue-state-machine.d.ts.map +1 -1
  103. package/dist/state/queue-state-machine.js +13 -0
  104. package/dist/state/queue-state-machine.js.map +1 -1
  105. package/dist/state/types.d.ts +2 -0
  106. package/dist/state/types.d.ts.map +1 -1
  107. package/dist/state/types.js.map +1 -1
  108. package/dist/types.d.ts +28 -0
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/utils.d.ts +16 -0
  111. package/dist/utils.d.ts.map +1 -1
  112. package/dist/utils.js +36 -0
  113. package/dist/utils.js.map +1 -1
  114. 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 { downloadBlob, isBrowser, splitText } from './utils.js';
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
- maxSegmentLength;
29
+ dictionaryService;
30
+ speechService;
36
31
  constructor(config) {
37
32
  this.validateConfig(config);
38
- this.defaultSpeaker = config.defaultSpeaker ?? 1;
39
- this.defaultSpeedScale = config.defaultSpeedScale ?? 1.0;
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
- try {
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
- try {
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
- try {
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
- try {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAe,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAsB/D;;GAEG;AACH,SAAS,yBAAyB,GAAoB;IACpD,+FAAyC;IACzC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACnD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAA;IACxD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAA;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAA;IAE5D,OAAO;QACL,SAAS,EACP,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS;QAC/G,YAAY,EACV,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,OAAO,CAAC;YACjF,CAAC,CAAC,YAAY,KAAK,MAAM;YACzB,CAAC,CAAC,SAAS;QACf,UAAU,EACR,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS;KACpH,CAAA;AAAA,CACF;AAED,MAAM,OAAO,cAAc;IACR,YAAY,CAAc;IAC1B,GAAG,CAAa;IAChB,cAAc,CAAQ;IACtB,iBAAiB,CAAQ;IACzB,kBAAkB,CAAS;IAC3B,iBAAiB,CAAS;IAC1B,uBAAuB,CAAS;IAChC,wBAAwB,CAAS;IACjC,sBAAsB,CAAiB;IACvC,gBAAgB,CAAQ;IAEzC,YAAY,MAAsB,EAAE;QAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC3B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAA;QACxD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAA;QACnD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAA;QACjD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAA;QAC7D,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAA;QAE/D,uFAA+B;QAC/B,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAA;QAC9C,IAAI,CAAC,sBAAsB,GAAG;YAC5B,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;SAClB,CAAA;QAED,6CAAiB;QACjB,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC3E,CAAC;QAED,6CAAiB;QACjB,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;QAC9D,CAAC;QACD,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,sBAAsB,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAA;QACpE,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,sBAAsB,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;QAChE,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,GAAG,CAAA;QACtD,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE;YAC7C,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAA;QAEF,oCAAc;QACd,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAA;QAEjC,uCAAe;QACf,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YACpE,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,0BAAY,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,oBAAQ,GAAG,CAAC,CAAA;YAC7E,CAAC;QAAA,CACF,CAAC,CAAA;IAAA,CACH;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,KAA0C,EAAE,OAAO,GAAiB,EAAE,EAAwB;QAC/G,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAA;YACtD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAA;YAE1D,6CAAiB;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAEpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;YACnE,CAAC;YAED,2FAAuC;YACvC,MAAM,eAAe,GAAoB;gBACvC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS;gBACrE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY;gBAC9E,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,sBAAsB,CAAC,UAAU;aACzE,CAAA;YAED,6DAAiC;YACjC,IAAI,eAAe,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;YACtC,CAAC;YAED,sBAAc;YACd,IAAI,iBAA4C,CAAA;YAChD,IAAI,cAAyC,CAAA;YAE7C,2EAA2B;YAC3B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAChC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;gBACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBACzE,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAElD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACtE,UAAU,EACV,SAAS,EACT;oBACE,GAAG,eAAe;oBAClB,SAAS,EAAE,KAAK,EAAE,iFAA6B;oBAC/C,YAAY,EAAE,eAAe,CAAC,YAAY;oBAC1C,UAAU,EAAE,eAAe,CAAC,UAAU;iBACvC,EACD,YAAY,CAAC,IAAI,CAAC,wBAAU;iBAC7B,CAAA;gBAED,2DAA+B;gBAC/B,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;oBACxB,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAA;gBACzC,CAAC;gBACD,gEAA0B;gBAC1B,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;oBACtB,cAAc,GAAG,aAAa,CAAC,GAAG,CAAA;gBACpC,CAAC;YACH,CAAC;YAED,6CAAiB;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAC/D,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAE7C,MAAM,aAAa,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;gBAE/C,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACxE,KAAK,EACL,SAAS,EACT;oBACE,GAAG,eAAe;oBAClB,SAAS,EAAE,KAAK;oBAChB,YAAY,EAAE,KAAK,EAAE,mDAAmB;oBACxC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,gDAAkB;iBACnF,EACD,OAAO,CAAC,IAAI,CAAC,wBAAU;iBACxB,CAAA;gBAED,yDAA6B;gBAC7B,IAAI,aAAa,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;oBACzC,cAAc,GAAG,eAAe,CAAC,GAAG,CAAA;gBACtC,CAAC;YACH,CAAC;YAED,0CAAgB;YAChB,MAAM,YAAY,GAAyB,EAAE,CAAA;YAE7C,iEAAiC;YACjC,IAAI,eAAe,CAAC,YAAY,IAAI,iBAAiB,EAAE,CAAC;gBACtD,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACtC,CAAC;YAED,+DAA+B;YAC/B,IAAI,eAAe,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;gBACjD,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YACnC,CAAC;YAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;YAC/D,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACpG,CAAC;IAAA,CACF;IAED;;;OAGG;IACK,cAAc,CAAC,KAA0C,EAAE,cAAuB,EAAmB;QAC3G,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,sDAAoB;YACpB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACxD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI;gBACJ,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC,CAAA;QACL,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,kBAAQ;YACR,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAEjC,8CAA0B;YAC1B,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,+BAAqB;gBACrB,OAAQ,KAAyB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAClD,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,cAAc;iBAC3C,CAAC,CAAC,CAAA;YACL,CAAC;YACD,2BAAW;YACX,OAAQ,KAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI;gBACJ,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC,CAAA;QACL,CAAC;QAED,OAAO,EAAE,CAAA;IAAA,CACV;IAED;;;;;;OAMG;IACI,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAgB,EAAE,UAAmB,EAAuB;QACnG,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAC5C,6CAAmB;YACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC3D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;YAEjD,8BAAY;YACZ,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC1C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAA;YAC7C,CAAC;YACD,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBACzC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAA;YAC3C,CAAC;YACD,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;gBAC/C,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAA;YACvD,CAAC;YACD,IAAI,IAAI,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;gBAChD,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAA;YACzD,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,qDAAmB,EAAE,KAAK,CAAC,CAAA;QAC/C,CAAC;IAAA,CACF;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,iBAAiB,CAC5B,WAAgC,EAChC,UAAmB,EACnB,OAAgB,EAChB,UAAmB,EACF;QACjB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAA;YAEtD,8BAAY;YACZ,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,MAAM,QAAQ,GACZ,UAAU;oBACV,CAAC,OAAO,WAAW,KAAK,QAAQ;wBAC9B,CAAC,CAAC,SAAS,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM;wBACzF,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;gBAEhC,MAAM,KAAK,GACT,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAA;gBACzG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;gBAExB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAC7D,OAAO,MAAM,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAChD,CAAC;YAED,yBAAe;YACf,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;gBAC9D,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;gBACxB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,MAAM,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;gBACvD,CAAC;gBACD,OAAO,MAAM,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YAC/D,CAAC;YAED,oCAAc;YACd,MAAM,KAAK,GAAG,EAAE,GAAG,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;YACnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,MAAM,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;YACvD,CAAC;YACD,OAAO,MAAM,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,8DAAsB,EAAE,KAAK,CAAC,CAAA;QAClD,CAAC;IAAA,CACF;IAED;;;;;OAKG;IACI,KAAK,CAAC,sBAAsB,CACjC,KAAuD,EACvD,OAAO,GAAiB,EAAE,EACJ;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAA;YAE1D,2FAAuC;YACvC,MAAM,eAAe,GAAoB;gBACvC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS;gBACrE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY;gBAC9E,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,sBAAsB,CAAC,UAAU;aACzE,CAAA;YAED,6DAAiC;YACjC,IAAI,eAAe,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;YACtC,CAAC;YAED,8CAAwB;YACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;gBACpF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACpD,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACvD,KAAK,EACL,SAAS,EACT;oBACE,GAAG,eAAe;oBAClB,SAAS,EAAE,KAAK,EAAE,oCAAc;iBACjC,EACD,mBAAS,CAAC,2EAA2B;iBACtC,CAAA;gBAED,MAAM,YAAY,GAAyB,EAAE,CAAA;gBAC7C,IAAI,eAAe,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK;oBAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACrF,IAAI,eAAe,CAAC,UAAU,IAAI,QAAQ,CAAC,GAAG;oBAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;gBAC/E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;gBACjC,CAAC;gBAED,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;gBAC/D,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YACvF,CAAC;YAED,2BAAW;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAA4C,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YAEnG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;YACnE,CAAC;YAED,sBAAc;YACd,IAAI,iBAA4C,CAAA;YAChD,IAAI,cAAyC,CAAA;YAE7C,0CAAgB;YAChB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAChC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;gBACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBACzE,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAElD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACtE,UAAU,EACV,SAAS,EACT;oBACE,GAAG,eAAe;oBAClB,SAAS,EAAE,KAAK,EAAE,oCAAc;oBAChC,YAAY,EAAE,eAAe,CAAC,YAAY;oBAC1C,UAAU,EAAE,eAAe,CAAC,UAAU;iBACvC,EACD,YAAY,CAAC,IAAI,CAAC,wBAAU;iBAC7B,CAAA;gBAED,2DAA+B;gBAC/B,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;oBACxB,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAA;gBACzC,CAAC;gBACD,gEAA0B;gBAC1B,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;oBACtB,cAAc,GAAG,aAAa,CAAC,GAAG,CAAA;gBACpC,CAAC;YACH,CAAC;YAED,6CAAiB;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAC/D,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAE7C,MAAM,aAAa,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;gBAE/C,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACxE,KAAK,EACL,SAAS,EACT;oBACE,GAAG,eAAe;oBAClB,SAAS,EAAE,KAAK;oBAChB,YAAY,EAAE,KAAK,EAAE,mDAAmB;oBACxC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,gDAAkB;iBACnF,EACD,OAAO,CAAC,IAAI,CAAC,wBAAU;iBACxB,CAAA;gBAED,yDAA6B;gBAC7B,IAAI,aAAa,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;oBACzC,cAAc,GAAG,eAAe,CAAC,GAAG,CAAA;gBACtC,CAAC;YACH,CAAC;YAED,0CAAgB;YAChB,MAAM,YAAY,GAAyB,EAAE,CAAA;YAE7C,iEAAiC;YACjC,IAAI,eAAe,CAAC,YAAY,IAAI,iBAAiB,EAAE,CAAC;gBACtD,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACtC,CAAC;YAED,+DAA+B;YAC/B,IAAI,eAAe,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;gBACjD,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YACnC,CAAC;YAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;YAC/D,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACpG,CAAC;IAAA,CACF;IAED;;;OAGG;IACK,YAAY,CAAC,OAAgB,EAAU;QAC7C,OAAO,OAAO,IAAI,IAAI,CAAC,cAAc,CAAA;IAAA,CACtC;IAED;;;OAGG;IACK,aAAa,CAAC,UAAmB,EAAU;QACjD,OAAO,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAA;IAAA,CAC5C;IAED;;;OAGG;IACK,iBAAiB,CAAC,KAAiB,EAAE,OAAqB,EAAE,KAAa,EAAQ;QACvF,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;QACxB,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QAC3E,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;QAC1F,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QAC9E,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;YAAE,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAC7F,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS;YAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;IAAA,CACjG;IAED;;;OAGG;IACK,iBAAiB,CACvB,MAA6B,EAC7B,QAAyB,EACzB,YAAqB,EACR;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAA;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACxD,OAAO;YACL,MAAM;YACN,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;YACxC,WAAW;YACX,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,YAAY;SACb,CAAA;IAAA,CACF;IAED;;;OAGG;IACK,iBAAiB,CAAC,QAAyB,EAAE,SAAiB,EAAU;QAC9E,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtD,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAA;IAAA,CACpD;IAEO,cAAc,CAAC,MAAsB,EAAQ;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8CAAwB,CAAC,CAAA;QAC3C,CAAC;QACD,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,+BAAmB,CAAC,CAAA;QACtC,CAAC;IAAA,CACF;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,GAAkB;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;IAAA,CACtC;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW,GAAG;QACzB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,iEAAuB,EAAE,KAAK,CAAC,CAAA;QACnD,CAAC;IAAA,CACF;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE;QACxC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,iEAAuB,EAAE,KAAK,CAAC,CAAA;QACnD,CAAC;IAAA,CACF;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW,GAAmE;QACzF,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;IAAA,CAC9B;IAED;;;OAGG;IACI,eAAe,GAAiB;QACrC,OAAO,IAAI,CAAC,YAAY,CAAA;IAAA,CACzB;IAED;;OAEG;IACI,aAAa,GAAS;QAC3B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAA;IAAA,CAClC;IAED;;OAEG;IACI,aAAa,GAAS;QAC3B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAA;IAAA,CAClC;IAED;;OAEG;IACI,cAAc,GAAS;QAC5B,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAA;IAAA,CACnC;IAED;;OAEG;IACI,cAAc,GAAW;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA;IAAA,CAC3C;IAED;;OAEG;IACI,YAAY,GAAY;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,CAAA;IAAA,CACjD;IAED;;OAEG;IACI,SAAS,GAAY;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,OAAO,CAAC,CAAA;IAAA,CAC5F;CACF"}
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"}