@kajidog/voicevox-client 0.4.1 → 0.5.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 (78) hide show
  1. package/LICENSE +14 -14
  2. package/dist/api.d.ts +36 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +76 -0
  5. package/dist/api.js.map +1 -1
  6. package/dist/client.d.ts +1 -1
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +6 -0
  9. package/dist/client.js.map +1 -1
  10. package/dist/effect/config.d.ts +43 -0
  11. package/dist/effect/config.d.ts.map +1 -0
  12. package/dist/effect/config.js +45 -0
  13. package/dist/effect/config.js.map +1 -0
  14. package/dist/effect/context.d.ts +33 -0
  15. package/dist/effect/context.d.ts.map +1 -0
  16. package/dist/effect/context.js +10 -0
  17. package/dist/effect/context.js.map +1 -0
  18. package/dist/effect/errors.d.ts +130 -0
  19. package/dist/effect/errors.d.ts.map +1 -0
  20. package/dist/effect/errors.js +121 -0
  21. package/dist/effect/errors.js.map +1 -0
  22. package/dist/effect/index.d.ts +34 -0
  23. package/dist/effect/index.d.ts.map +1 -0
  24. package/dist/effect/index.js +67 -0
  25. package/dist/effect/index.js.map +1 -0
  26. package/dist/effect/queue-manager.d.ts +34 -0
  27. package/dist/effect/queue-manager.d.ts.map +1 -0
  28. package/dist/effect/queue-manager.js +59 -0
  29. package/dist/effect/queue-manager.js.map +1 -0
  30. package/dist/effect/services/api-service.d.ts +58 -0
  31. package/dist/effect/services/api-service.d.ts.map +1 -0
  32. package/dist/effect/services/api-service.js +90 -0
  33. package/dist/effect/services/api-service.js.map +1 -0
  34. package/dist/effect/services/audio-generator-service.d.ts +78 -0
  35. package/dist/effect/services/audio-generator-service.d.ts.map +1 -0
  36. package/dist/effect/services/audio-generator-service.js +187 -0
  37. package/dist/effect/services/audio-generator-service.js.map +1 -0
  38. package/dist/effect/services/audio-player-service.d.ts +101 -0
  39. package/dist/effect/services/audio-player-service.d.ts.map +1 -0
  40. package/dist/effect/services/audio-player-service.js +297 -0
  41. package/dist/effect/services/audio-player-service.js.map +1 -0
  42. package/dist/effect/services/event-manager-service.d.ts +96 -0
  43. package/dist/effect/services/event-manager-service.d.ts.map +1 -0
  44. package/dist/effect/services/event-manager-service.js +208 -0
  45. package/dist/effect/services/event-manager-service.js.map +1 -0
  46. package/dist/effect/services/file-manager-service.d.ts +91 -0
  47. package/dist/effect/services/file-manager-service.d.ts.map +1 -0
  48. package/dist/effect/services/file-manager-service.js +215 -0
  49. package/dist/effect/services/file-manager-service.js.map +1 -0
  50. package/dist/effect/utils.d.ts +118 -0
  51. package/dist/effect/utils.d.ts.map +1 -0
  52. package/dist/effect/utils.js +186 -0
  53. package/dist/effect/utils.js.map +1 -0
  54. package/dist/error.js.map +1 -1
  55. package/dist/player.d.ts +110 -0
  56. package/dist/player.d.ts.map +1 -0
  57. package/dist/player.js +183 -0
  58. package/dist/player.js.map +1 -0
  59. package/dist/queue/audio-player.d.ts +44 -0
  60. package/dist/queue/audio-player.d.ts.map +1 -0
  61. package/dist/queue/audio-player.js +344 -0
  62. package/dist/queue/audio-player.js.map +1 -0
  63. package/dist/queue/file-manager.js +9 -9
  64. package/dist/queue/manager.d.ts +134 -0
  65. package/dist/queue/manager.d.ts.map +1 -0
  66. package/dist/queue/manager.js +564 -0
  67. package/dist/queue/manager.js.map +1 -0
  68. package/dist/queue/queue-service.d.ts.map +1 -1
  69. package/dist/queue/queue-service.js +16 -4
  70. package/dist/queue/queue-service.js.map +1 -1
  71. package/dist/shared-queue-manager.d.ts +119 -0
  72. package/dist/shared-queue-manager.d.ts.map +1 -0
  73. package/dist/shared-queue-manager.js +487 -0
  74. package/dist/shared-queue-manager.js.map +1 -0
  75. package/dist/state/types.js.map +1 -1
  76. package/dist/types.d.ts +28 -0
  77. package/dist/types.d.ts.map +1 -1
  78. package/package.json +1 -1
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Effect utility functions and common patterns
3
+ * Provides reusable Effect combinators for the VOICEVOX system
4
+ */
5
+ import { Deferred, Duration, Effect, Option } from 'effect';
6
+ /**
7
+ * Resource management utilities
8
+ */
9
+ /**
10
+ * Safely execute an operation with automatic cleanup
11
+ */
12
+ export declare const withResource: <R, E, A, B>(acquire: Effect.Effect<A, E, R>, release: (resource: A) => Effect.Effect<void, never, R>, use: (resource: A) => Effect.Effect<B, E, R>) => Effect.Effect<B, E, R>;
13
+ /**
14
+ * Manage a temporary file with automatic cleanup
15
+ */
16
+ export declare const withTempFile: <R, E, A>(createFile: () => Effect.Effect<string, E, R>, deleteFile: (path: string) => Effect.Effect<void, never, R>, use: (filePath: string) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
17
+ /**
18
+ * Async coordination utilities
19
+ */
20
+ /**
21
+ * Create a deferred promise that can be resolved later
22
+ */
23
+ export declare const createDeferred: <A>() => Effect.Effect<Deferred.Deferred<A, never>, never>;
24
+ /**
25
+ * Wait for a condition to be true with timeout
26
+ */
27
+ export declare const waitForCondition: <R, E>(condition: Effect.Effect<boolean, E, R>, timeout: Duration.Duration, checkInterval?: Duration.Duration) => Effect.Effect<void, E | Error, R>;
28
+ /**
29
+ * Execute effects in parallel with concurrency limit
30
+ */
31
+ export declare const parallelWithLimit: <R, E, A>(effects: readonly Effect.Effect<A, E, R>[], concurrency: number) => Effect.Effect<readonly A[], E, R>;
32
+ /**
33
+ * Queue utilities
34
+ */
35
+ /**
36
+ * Process items from a queue with a given processor function
37
+ */
38
+ export declare const processQueueItems: <A, R, E>(getItems: Effect.Effect<readonly A[], E, R>, processItem: (item: A) => Effect.Effect<void, E, R>, maxConcurrency?: number) => Effect.Effect<void, E, R>;
39
+ /**
40
+ * State management utilities
41
+ */
42
+ /**
43
+ * Create a thread-safe counter
44
+ */
45
+ export declare const createCounter: (initialValue?: number) => Effect.Effect<{
46
+ readonly increment: Effect.Effect<number, never>;
47
+ readonly decrement: Effect.Effect<number, never>;
48
+ readonly get: Effect.Effect<number, never>;
49
+ readonly set: (value: number) => Effect.Effect<void, never>;
50
+ }, never>;
51
+ /**
52
+ * Create a thread-safe boolean flag
53
+ */
54
+ export declare const createFlag: (initialValue?: boolean) => Effect.Effect<{
55
+ readonly set: Effect.Effect<void, never>;
56
+ readonly unset: Effect.Effect<void, never>;
57
+ readonly get: Effect.Effect<boolean, never>;
58
+ readonly toggle: Effect.Effect<boolean, never>;
59
+ }, never>;
60
+ /**
61
+ * Scheduling utilities
62
+ */
63
+ /**
64
+ * Execute with timeout
65
+ */
66
+ export declare const withTimeout: <R, E, A>(effect: Effect.Effect<A, E, R>, timeout: Duration.Duration) => Effect.Effect<A, E | Error, R>;
67
+ /**
68
+ * Logging utilities
69
+ */
70
+ /**
71
+ * Log an effect's execution with timing
72
+ */
73
+ export declare const logTimed: <R, E, A>(label: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
74
+ /**
75
+ * Collection utilities
76
+ */
77
+ /**
78
+ * Find the first item in a collection that matches a predicate
79
+ */
80
+ export declare const findFirst: <A>(items: readonly A[], predicate: (item: A) => boolean) => Option.Option<A>;
81
+ /**
82
+ * Remove an item from an array by ID
83
+ */
84
+ export declare const removeById: <A extends {
85
+ id: string;
86
+ }>(items: readonly A[], id: string) => readonly A[];
87
+ /**
88
+ * Update an item in an array by ID
89
+ */
90
+ export declare const updateById: <A extends {
91
+ id: string;
92
+ }>(items: readonly A[], id: string, updater: (item: A) => A) => readonly A[];
93
+ /**
94
+ * Error handling utilities
95
+ */
96
+ /**
97
+ * Catch and transform errors
98
+ */
99
+ export declare const catchAndMap: <R, E1, E2, A>(effect: Effect.Effect<A, E1, R>, mapper: (error: E1) => E2) => Effect.Effect<A, E2, R>;
100
+ /**
101
+ * Provide a fallback value in case of error
102
+ */
103
+ export declare const orElse: <R, E, A>(effect: Effect.Effect<A, E, R>, fallback: A) => Effect.Effect<A, never, R>;
104
+ /**
105
+ * Convert common patterns to Effect-friendly operations
106
+ */
107
+ /**
108
+ * Convert a callback-based operation to Effect
109
+ */
110
+ export declare const fromCallback: <A, E = Error>(fn: (callback: (error: E | null, result?: A) => void) => void) => Effect.Effect<A, E>;
111
+ /**
112
+ * Convert an event-based operation to Effect with timeout
113
+ */
114
+ export declare const fromEvent: <A>(target: {
115
+ addEventListener: (eventName: string, handler: (event: A) => void) => void;
116
+ removeEventListener: (eventName: string, handler: (event: A) => void) => void;
117
+ }, eventName: string, timeout?: Duration.Duration) => Effect.Effect<A, Error>;
118
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/effect/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ /**
3
+ * Effect utility functions and common patterns
4
+ * Provides reusable Effect combinators for the VOICEVOX system
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.fromEvent = exports.fromCallback = exports.orElse = exports.catchAndMap = exports.updateById = exports.removeById = exports.findFirst = exports.logTimed = exports.withTimeout = exports.createFlag = exports.createCounter = exports.processQueueItems = exports.parallelWithLimit = exports.waitForCondition = exports.createDeferred = exports.withTempFile = exports.withResource = void 0;
8
+ const effect_1 = require("effect");
9
+ /**
10
+ * Resource management utilities
11
+ */
12
+ /**
13
+ * Safely execute an operation with automatic cleanup
14
+ */
15
+ const withResource = (acquire, release, use) => effect_1.Effect.acquireUseRelease(acquire, use, release);
16
+ exports.withResource = withResource;
17
+ /**
18
+ * Manage a temporary file with automatic cleanup
19
+ */
20
+ const withTempFile = (createFile, deleteFile, use) => (0, exports.withResource)(createFile(), deleteFile, use);
21
+ exports.withTempFile = withTempFile;
22
+ /**
23
+ * Async coordination utilities
24
+ */
25
+ /**
26
+ * Create a deferred promise that can be resolved later
27
+ */
28
+ const createDeferred = () => effect_1.Deferred.make();
29
+ exports.createDeferred = createDeferred;
30
+ /**
31
+ * Wait for a condition to be true with timeout
32
+ */
33
+ const waitForCondition = (condition, timeout, checkInterval = effect_1.Duration.millis(50)) => effect_1.Effect.gen(function* () {
34
+ const deadline = yield* effect_1.Effect.sync(() => Date.now() + effect_1.Duration.toMillis(timeout));
35
+ while (true) {
36
+ const isReady = yield* condition;
37
+ if (isReady)
38
+ return;
39
+ if (Date.now() > deadline) {
40
+ throw new Error('Condition timeout');
41
+ }
42
+ yield* effect_1.Effect.sleep(checkInterval);
43
+ }
44
+ });
45
+ exports.waitForCondition = waitForCondition;
46
+ /**
47
+ * Execute effects in parallel with concurrency limit
48
+ */
49
+ const parallelWithLimit = (effects, concurrency) => effect_1.Effect.all(effects, { concurrency });
50
+ exports.parallelWithLimit = parallelWithLimit;
51
+ /**
52
+ * Queue utilities
53
+ */
54
+ /**
55
+ * Process items from a queue with a given processor function
56
+ */
57
+ const processQueueItems = (getItems, processItem, maxConcurrency = 1) => effect_1.Effect.gen(function* () {
58
+ const items = yield* getItems;
59
+ if (items.length === 0)
60
+ return;
61
+ yield* (0, exports.parallelWithLimit)(items.map(processItem), maxConcurrency);
62
+ });
63
+ exports.processQueueItems = processQueueItems;
64
+ /**
65
+ * State management utilities
66
+ */
67
+ /**
68
+ * Create a thread-safe counter
69
+ */
70
+ const createCounter = (initialValue = 0) => effect_1.Effect.gen(function* () {
71
+ const ref = yield* effect_1.Ref.make(initialValue);
72
+ return {
73
+ increment: effect_1.Ref.updateAndGet(ref, (n) => n + 1),
74
+ decrement: effect_1.Ref.updateAndGet(ref, (n) => n - 1),
75
+ get: effect_1.Ref.get(ref),
76
+ set: (value) => effect_1.Ref.set(ref, value),
77
+ };
78
+ });
79
+ exports.createCounter = createCounter;
80
+ /**
81
+ * Create a thread-safe boolean flag
82
+ */
83
+ const createFlag = (initialValue = false) => effect_1.Effect.gen(function* () {
84
+ const ref = yield* effect_1.Ref.make(initialValue);
85
+ return {
86
+ set: effect_1.Ref.set(ref, true),
87
+ unset: effect_1.Ref.set(ref, false),
88
+ get: effect_1.Ref.get(ref),
89
+ toggle: effect_1.Ref.updateAndGet(ref, (b) => !b),
90
+ };
91
+ });
92
+ exports.createFlag = createFlag;
93
+ /**
94
+ * Scheduling utilities
95
+ */
96
+ /**
97
+ * Execute with timeout
98
+ */
99
+ const withTimeout = (effect, timeout) => effect_1.Effect.race(effect, effect_1.Effect.sleep(timeout).pipe(effect_1.Effect.andThen(effect_1.Effect.fail(new Error(`Operation timed out after ${effect_1.Duration.toMillis(timeout)}ms`)))));
100
+ exports.withTimeout = withTimeout;
101
+ /**
102
+ * Logging utilities
103
+ */
104
+ /**
105
+ * Log an effect's execution with timing
106
+ */
107
+ const logTimed = (label, effect) => effect_1.Effect.gen(function* () {
108
+ const start = yield* effect_1.Effect.sync(() => Date.now());
109
+ yield* effect_1.Effect.log(`[${label}] Starting...`);
110
+ const result = yield* effect;
111
+ const end = yield* effect_1.Effect.sync(() => Date.now());
112
+ yield* effect_1.Effect.log(`[${label}] Completed in ${end - start}ms`);
113
+ return result;
114
+ });
115
+ exports.logTimed = logTimed;
116
+ /**
117
+ * Collection utilities
118
+ */
119
+ /**
120
+ * Find the first item in a collection that matches a predicate
121
+ */
122
+ const findFirst = (items, predicate) => effect_1.Option.fromNullable(items.find(predicate));
123
+ exports.findFirst = findFirst;
124
+ /**
125
+ * Remove an item from an array by ID
126
+ */
127
+ const removeById = (items, id) => items.filter((item) => item.id !== id);
128
+ exports.removeById = removeById;
129
+ /**
130
+ * Update an item in an array by ID
131
+ */
132
+ const updateById = (items, id, updater) => items.map((item) => (item.id === id ? updater(item) : item));
133
+ exports.updateById = updateById;
134
+ /**
135
+ * Error handling utilities
136
+ */
137
+ /**
138
+ * Catch and transform errors
139
+ */
140
+ const catchAndMap = (effect, mapper) => effect.pipe(effect_1.Effect.catchAll((error) => effect_1.Effect.fail(mapper(error))));
141
+ exports.catchAndMap = catchAndMap;
142
+ /**
143
+ * Provide a fallback value in case of error
144
+ */
145
+ const orElse = (effect, fallback) => effect.pipe(effect_1.Effect.orElse(() => effect_1.Effect.succeed(fallback)));
146
+ exports.orElse = orElse;
147
+ /**
148
+ * Convert common patterns to Effect-friendly operations
149
+ */
150
+ /**
151
+ * Convert a callback-based operation to Effect
152
+ */
153
+ const fromCallback = (fn) => effect_1.Effect.async((resume) => {
154
+ fn((error, result) => {
155
+ if (error) {
156
+ resume(effect_1.Effect.fail(error));
157
+ }
158
+ else if (result !== undefined) {
159
+ resume(effect_1.Effect.succeed(result));
160
+ }
161
+ else {
162
+ resume(effect_1.Effect.fail(new Error('No result provided')));
163
+ }
164
+ });
165
+ });
166
+ exports.fromCallback = fromCallback;
167
+ /**
168
+ * Convert an event-based operation to Effect with timeout
169
+ */
170
+ const fromEvent = (target, eventName, timeout) => effect_1.Effect.async((resume) => {
171
+ const handler = (event) => {
172
+ target.removeEventListener(eventName, handler);
173
+ resume(effect_1.Effect.succeed(event));
174
+ };
175
+ target.addEventListener(eventName, handler);
176
+ if (timeout) {
177
+ const timeoutId = setTimeout(() => {
178
+ target.removeEventListener(eventName, handler);
179
+ resume(effect_1.Effect.fail(new Error(`Event ${eventName} timed out`)));
180
+ }, effect_1.Duration.toMillis(timeout));
181
+ return effect_1.Effect.sync(() => clearTimeout(timeoutId));
182
+ }
183
+ return effect_1.Effect.void;
184
+ });
185
+ exports.fromEvent = fromEvent;
186
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/effect/utils.ts"],"names":[],"mappings":"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"}
package/dist/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { VoicevoxQueueManager } from './queue';
2
+ import type { AudioQuery, PlaybackOptions } from './types';
3
+ /**
4
+ * VOICEVOX音声プレイヤークラス
5
+ * キュー管理システムを使用して音声の合成と再生を行う
6
+ */
7
+ export declare class VoicevoxPlayer {
8
+ private queueManager;
9
+ /**
10
+ * コンストラクタ
11
+ * @param voicevoxUrl VOICEVOX Engine API URL
12
+ * @param prefetchSize 事前生成するアイテム数
13
+ */
14
+ constructor(voicevoxUrl?: string, prefetchSize?: number);
15
+ /**
16
+ * テキストをキューに追加(オプション付き)
17
+ * @param text 合成するテキスト
18
+ * @param speaker 話者ID
19
+ * @param options 再生オプション
20
+ */
21
+ enqueueWithOptions(text: string, speaker?: number, options?: PlaybackOptions): Promise<{
22
+ start?: Promise<void>;
23
+ end?: Promise<void>;
24
+ }>;
25
+ /**
26
+ * テキストをキューに追加(従来の互換性維持)
27
+ * @param text 合成するテキスト
28
+ * @param speaker 話者ID
29
+ */
30
+ enqueue(text: string, speaker?: number): Promise<void>;
31
+ /**
32
+ * クエリを使ってキューに追加(オプション付き)
33
+ * @param query 音声合成用クエリ
34
+ * @param speaker 話者ID
35
+ * @param options 再生オプション
36
+ */
37
+ enqueueWithQueryOptions(query: AudioQuery, speaker?: number, options?: PlaybackOptions): Promise<{
38
+ start?: Promise<void>;
39
+ end?: Promise<void>;
40
+ }>;
41
+ /**
42
+ * クエリを使ってキューに追加(従来の互換性維持)
43
+ * @param query 音声合成用クエリ
44
+ * @param speaker 話者ID
45
+ */
46
+ enqueueWithQuery(query: AudioQuery, speaker?: number): Promise<void>;
47
+ /**
48
+ * クエリを使ってキューに追加(オプション付き)
49
+ * @param query 音声合成用クエリ
50
+ * @param speaker 話者ID
51
+ * @param options 再生オプション
52
+ */
53
+ enqueueQueryWithOptions(query: AudioQuery, speaker?: number, options?: PlaybackOptions): Promise<{
54
+ item: any;
55
+ promises: {
56
+ start?: Promise<void>;
57
+ end?: Promise<void>;
58
+ };
59
+ }>;
60
+ /**
61
+ * テキストから音声合成用クエリを生成
62
+ * キューマネージャーの内部機能を使用
63
+ * @param text 合成するテキスト
64
+ * @param speaker 話者ID
65
+ */
66
+ generateQuery(text: string, speaker?: number): Promise<AudioQuery>;
67
+ /**
68
+ * 音声合成用クエリから音声ファイルを生成
69
+ * 重複を避けるためにQueueManagerの機能に委譲
70
+ *
71
+ * @param query 音声合成用クエリ
72
+ * @param output 出力ファイルパスまたは出力ディレクトリ(省略時は一時ディレクトリに生成)
73
+ * @param speaker 話者ID
74
+ */
75
+ synthesizeToFile(query: AudioQuery, output?: string, speaker?: number): Promise<string>;
76
+ /**
77
+ * 再生を開始
78
+ */
79
+ startPlayback(): void;
80
+ /**
81
+ * 再生を一時停止
82
+ */
83
+ pausePlayback(): void;
84
+ /**
85
+ * 再生を再開
86
+ */
87
+ resumePlayback(): void;
88
+ /**
89
+ * キュー内のアイテム数を取得
90
+ */
91
+ getQueueLength(): number;
92
+ /**
93
+ * キューが空かどうかを確認
94
+ */
95
+ isQueueEmpty(): boolean;
96
+ /**
97
+ * キューが再生中かどうかを確認
98
+ */
99
+ isPlaying(): boolean;
100
+ /**
101
+ * キューマネージャーインスタンスを取得
102
+ * 高度な操作のため公開
103
+ */
104
+ getQueueManager(): VoicevoxQueueManager;
105
+ /**
106
+ * キューをクリア
107
+ */
108
+ clearQueue(): Promise<void>;
109
+ }
110
+ //# sourceMappingURL=player.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player.d.ts","sourceRoot":"","sources":["../src/player.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAY1D;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAsB;IAE1C;;;;OAIG;IACH,YAAY,WAAW,SAA2B,EAAE,YAAY,SAAI,EAenE;IAED;;;;;OAKG;IACU,kBAAkB,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,SAAI,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAKzD;IAED;;;;OAIG;IACU,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D;IAED;;;;;OAKG;IACU,uBAAuB,CAClC,KAAK,EAAE,UAAU,EACjB,OAAO,SAAI,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAKzD;IAED;;;;OAIG;IACU,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;IAED;;;;;OAKG;IACU,uBAAuB,CAClC,KAAK,EAAE,UAAU,EACjB,OAAO,SAAI,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC,CAIlF;IAED;;;;;OAKG;IACU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAKzE;IAED;;;;;;;OAOG;IACU,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAe9F;IAED;;OAEG;IACI,aAAa,IAAI,IAAI,CAE3B;IAED;;OAEG;IACI,aAAa,IAAI,IAAI,CAE3B;IAED;;OAEG;IACI,cAAc,IAAI,IAAI,CAE5B;IAED;;OAEG;IACI,cAAc,IAAI,MAAM,CAE9B;IAED;;OAEG;IACI,YAAY,IAAI,OAAO,CAE7B;IAED;;OAEG;IACI,SAAS,IAAI,OAAO,CAE1B;IAED;;;OAGG;IACI,eAAe,IAAI,oBAAoB,CAE7C;IAED;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIvC;CACF"}
package/dist/player.js ADDED
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VoicevoxPlayer = void 0;
4
+ const api_1 = require("./api");
5
+ const error_1 = require("./error");
6
+ const queue_1 = require("./queue");
7
+ /**
8
+ * エラーハンドラープロキシ
9
+ * メソッドをエラーハンドリングで包む高階関数
10
+ */
11
+ function withErrorHandling(method, errorMessage) {
12
+ return method().catch((error) => {
13
+ throw (0, error_1.handleError)(errorMessage, error);
14
+ });
15
+ }
16
+ /**
17
+ * VOICEVOX音声プレイヤークラス
18
+ * キュー管理システムを使用して音声の合成と再生を行う
19
+ */
20
+ class VoicevoxPlayer {
21
+ queueManager;
22
+ /**
23
+ * コンストラクタ
24
+ * @param voicevoxUrl VOICEVOX Engine API URL
25
+ * @param prefetchSize 事前生成するアイテム数
26
+ */
27
+ constructor(voicevoxUrl = 'http://localhost:50021', prefetchSize = 2) {
28
+ // APIインスタンスを作成
29
+ const api = new api_1.VoicevoxApi(voicevoxUrl);
30
+ // キューマネージャーにAPIインスタンスを注入
31
+ this.queueManager = new queue_1.VoicevoxQueueManager(api, prefetchSize);
32
+ // デフォルトで再生を開始
33
+ this.queueManager.startPlayback();
34
+ // エラーイベントのログ記録
35
+ this.queueManager.addEventListener(queue_1.QueueEventType.ERROR, (_, item) => {
36
+ if (item) {
37
+ console.error(`音声合成エラー: ${item.text} (${item.error?.message || '不明なエラー'})`);
38
+ }
39
+ });
40
+ }
41
+ /**
42
+ * テキストをキューに追加(オプション付き)
43
+ * @param text 合成するテキスト
44
+ * @param speaker 話者ID
45
+ * @param options 再生オプション
46
+ */
47
+ async enqueueWithOptions(text, speaker = 1, options) {
48
+ return withErrorHandling(async () => {
49
+ const { promises } = await this.queueManager.enqueueTextWithOptions(text, speaker, options);
50
+ return promises;
51
+ }, 'テキストのキュー追加中にエラーが発生しました');
52
+ }
53
+ /**
54
+ * テキストをキューに追加(従来の互換性維持)
55
+ * @param text 合成するテキスト
56
+ * @param speaker 話者ID
57
+ */
58
+ async enqueue(text, speaker = 1) {
59
+ return withErrorHandling(async () => {
60
+ await this.queueManager.enqueueText(text, speaker);
61
+ }, 'テキストのキュー追加中にエラーが発生しました');
62
+ }
63
+ /**
64
+ * クエリを使ってキューに追加(オプション付き)
65
+ * @param query 音声合成用クエリ
66
+ * @param speaker 話者ID
67
+ * @param options 再生オプション
68
+ */
69
+ async enqueueWithQueryOptions(query, speaker = 1, options) {
70
+ return withErrorHandling(async () => {
71
+ const { promises } = await this.queueManager.enqueueQueryWithOptions(query, speaker, options);
72
+ return promises;
73
+ }, 'クエリのキュー追加中にエラーが発生しました');
74
+ }
75
+ /**
76
+ * クエリを使ってキューに追加(従来の互換性維持)
77
+ * @param query 音声合成用クエリ
78
+ * @param speaker 話者ID
79
+ */
80
+ async enqueueWithQuery(query, speaker = 1) {
81
+ return withErrorHandling(async () => {
82
+ await this.queueManager.enqueueQuery(query, speaker);
83
+ }, 'クエリのキュー追加中にエラーが発生しました');
84
+ }
85
+ /**
86
+ * クエリを使ってキューに追加(オプション付き)
87
+ * @param query 音声合成用クエリ
88
+ * @param speaker 話者ID
89
+ * @param options 再生オプション
90
+ */
91
+ async enqueueQueryWithOptions(query, speaker = 1, options) {
92
+ return withErrorHandling(async () => {
93
+ return await this.queueManager.enqueueQueryWithOptions(query, speaker, options);
94
+ }, 'クエリのキュー追加中にエラーが発生しました');
95
+ }
96
+ /**
97
+ * テキストから音声合成用クエリを生成
98
+ * キューマネージャーの内部機能を使用
99
+ * @param text 合成するテキスト
100
+ * @param speaker 話者ID
101
+ */
102
+ async generateQuery(text, speaker = 1) {
103
+ return withErrorHandling(async () => {
104
+ // AudioGeneratorのgenerateQueryを直接呼び出す
105
+ return await this.queueManager.getAudioGenerator().generateQuery(text, speaker);
106
+ }, '音声合成クエリの生成中にエラーが発生しました');
107
+ }
108
+ /**
109
+ * 音声合成用クエリから音声ファイルを生成
110
+ * 重複を避けるためにQueueManagerの機能に委譲
111
+ *
112
+ * @param query 音声合成用クエリ
113
+ * @param output 出力ファイルパスまたは出力ディレクトリ(省略時は一時ディレクトリに生成)
114
+ * @param speaker 話者ID
115
+ */
116
+ async synthesizeToFile(query, output, speaker = 1) {
117
+ return withErrorHandling(async () => {
118
+ // クエリから音声を合成
119
+ const api = this.queueManager.getApi();
120
+ const audioData = await api.synthesize(query, speaker);
121
+ // ファイル保存処理をFileManagerに完全に委譲
122
+ const fileManager = this.queueManager.getFileManager();
123
+ // 出力パスが指定されていない場合は一時ファイル、指定されている場合は指定パスに保存
124
+ if (!output) {
125
+ return await fileManager.saveTempAudioFile(audioData);
126
+ }
127
+ return await fileManager.saveAudioFile(audioData, output);
128
+ }, '音声ファイル生成中にエラーが発生しました');
129
+ }
130
+ /**
131
+ * 再生を開始
132
+ */
133
+ startPlayback() {
134
+ this.queueManager.startPlayback();
135
+ }
136
+ /**
137
+ * 再生を一時停止
138
+ */
139
+ pausePlayback() {
140
+ this.queueManager.pausePlayback();
141
+ }
142
+ /**
143
+ * 再生を再開
144
+ */
145
+ resumePlayback() {
146
+ this.queueManager.resumePlayback();
147
+ }
148
+ /**
149
+ * キュー内のアイテム数を取得
150
+ */
151
+ getQueueLength() {
152
+ return this.queueManager.getQueue().length;
153
+ }
154
+ /**
155
+ * キューが空かどうかを確認
156
+ */
157
+ isQueueEmpty() {
158
+ return this.queueManager.getQueue().length === 0;
159
+ }
160
+ /**
161
+ * キューが再生中かどうかを確認
162
+ */
163
+ isPlaying() {
164
+ return this.queueManager.getQueue().some((item) => item.status === queue_1.QueueItemStatus.PLAYING);
165
+ }
166
+ /**
167
+ * キューマネージャーインスタンスを取得
168
+ * 高度な操作のため公開
169
+ */
170
+ getQueueManager() {
171
+ return this.queueManager;
172
+ }
173
+ /**
174
+ * キューをクリア
175
+ */
176
+ async clearQueue() {
177
+ return withErrorHandling(async () => {
178
+ await this.queueManager.clearQueue();
179
+ }, 'キューのクリア中にエラーが発生しました');
180
+ }
181
+ }
182
+ exports.VoicevoxPlayer = VoicevoxPlayer;
183
+ //# sourceMappingURL=player.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player.js","sourceRoot":"","sources":["../src/player.ts"],"names":[],"mappings":"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"}