@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.
- package/LICENSE +14 -14
- package/dist/api.d.ts +36 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +76 -0
- package/dist/api.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -0
- 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/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/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 +16 -4
- package/dist/queue/queue-service.js.map +1 -1
- 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/types.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- 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":";AAAA;;;GAGG;;;AAEH,mCAAiF;AAGjF;;GAEG;AAEH;;GAEG;AACI,MAAM,YAAY,GAAG,CAC1B,OAA+B,EAC/B,OAAuD,EACvD,GAA4C,EACpB,EAAE,CAAC,eAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AAJ/D,QAAA,YAAY,gBAImD;AAE5E;;GAEG;AACI,MAAM,YAAY,GAAG,CAC1B,UAA6C,EAC7C,UAA2D,EAC3D,GAAiD,EACzB,EAAE,CAAC,IAAA,oBAAY,EAAC,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;AAJ3D,QAAA,YAAY,gBAI+C;AAExE;;GAEG;AAEH;;GAEG;AACI,MAAM,cAAc,GAAG,GAAyD,EAAE,CAAC,iBAAQ,CAAC,IAAI,EAAY,CAAA;AAAtG,QAAA,cAAc,kBAAwF;AAEnH;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAC9B,SAAuC,EACvC,OAA0B,EAC1B,gBAAmC,iBAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EACnB,EAAE,CACrC,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IAElF,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;QAChC,IAAI,OAAO;YAAE,OAAM;QAEnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACtC,CAAC;QAED,KAAK,CAAC,CAAC,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;AACH,CAAC,CAAC,CAAA;AAlBS,QAAA,gBAAgB,oBAkBzB;AAEJ;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAC/B,OAA0C,EAC1C,WAAmB,EACgB,EAAE,CAAC,eAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;AAH/D,QAAA,iBAAiB,qBAG8C;AAE5E;;GAEG;AAEH;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAC/B,QAA2C,EAC3C,WAAmD,EACnD,cAAc,GAAG,CAAC,EACS,EAAE,CAC7B,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAA;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE9B,KAAK,CAAC,CAAC,IAAA,yBAAiB,EAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAA;AAClE,CAAC,CAAC,CAAA;AAVS,QAAA,iBAAiB,qBAU1B;AAEJ;;GAEG;AAEH;;GAEG;AACI,MAAM,aAAa,GAAG,CAC3B,YAAY,GAAG,CAAC,EAShB,EAAE,CACF,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,YAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAEzC,OAAO;QACL,SAAS,EAAE,YAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9C,SAAS,EAAE,YAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9C,GAAG,EAAE,YAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;KAC5C,CAAA;AACH,CAAC,CAAC,CAAA;AApBS,QAAA,aAAa,iBAoBtB;AAEJ;;GAEG;AACI,MAAM,UAAU,GAAG,CACxB,YAAY,GAAG,KAAK,EASpB,EAAE,CACF,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,YAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAEzC,OAAO;QACL,GAAG,EAAE,YAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;QACvB,KAAK,EAAE,YAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC1B,GAAG,EAAE,YAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,MAAM,EAAE,YAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACzC,CAAA;AACH,CAAC,CAAC,CAAA;AApBS,QAAA,UAAU,cAoBnB;AAEJ;;GAEG;AAEH;;GAEG;AACI,MAAM,WAAW,GAAG,CACzB,MAA8B,EAC9B,OAA0B,EACM,EAAE,CAClC,eAAM,CAAC,IAAI,CACT,MAAM,EACN,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CACxB,eAAM,CAAC,OAAO,CAAC,eAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,6BAA6B,iBAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CACpG,CACF,CAAA;AATU,QAAA,WAAW,eASrB;AAEH;;GAEG;AAEH;;GAEG;AACI,MAAM,QAAQ,GAAG,CAAU,KAAa,EAAE,MAA8B,EAA0B,EAAE,CACzG,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAClD,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAE5B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAChD,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC,IAAI,KAAK,kBAAkB,GAAG,GAAG,KAAK,IAAI,CAAC,CAAA;IAE7D,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA;AAXS,QAAA,QAAQ,YAWjB;AAEJ;;GAEG;AAEH;;GAEG;AACI,MAAM,SAAS,GAAG,CAAI,KAAmB,EAAE,SAA+B,EAAoB,EAAE,CACrG,eAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;AAD/B,QAAA,SAAS,aACsB;AAE5C;;GAEG;AACI,MAAM,UAAU,GAAG,CAA2B,KAAmB,EAAE,EAAU,EAAgB,EAAE,CACpG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAD3B,QAAA,UAAU,cACiB;AAExC;;GAEG;AACI,MAAM,UAAU,GAAG,CACxB,KAAmB,EACnB,EAAU,EACV,OAAuB,EACT,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAJlE,QAAA,UAAU,cAIwD;AAE/E;;GAEG;AAEH;;GAEG;AACI,MAAM,WAAW,GAAG,CACzB,MAA+B,EAC/B,MAAyB,EACA,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,eAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAHpF,QAAA,WAAW,eAGyE;AAEjG;;GAEG;AACI,MAAM,MAAM,GAAG,CAAU,MAA8B,EAAE,QAAW,EAA8B,EAAE,CACzG,MAAM,CAAC,IAAI,CAAC,eAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAD/C,QAAA,MAAM,UACyC;AAE5D;;GAEG;AAEH;;GAEG;AACI,MAAM,YAAY,GAAG,CAC1B,EAA6D,EACxC,EAAE,CACvB,eAAM,CAAC,KAAK,CAAO,CAAC,MAAM,EAAE,EAAE;IAC5B,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACnB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5B,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,eAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAM,CAAC,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAbS,QAAA,YAAY,gBAarB;AAEJ;;GAEG;AACI,MAAM,SAAS,GAAG,CACvB,MAGC,EACD,SAAiB,EACjB,OAA2B,EACF,EAAE,CAC3B,eAAM,CAAC,KAAK,CAAW,CAAC,MAAM,EAAE,EAAE;IAChC,MAAM,OAAO,GAAG,CAAC,KAAQ,EAAE,EAAE;QAC3B,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC9C,MAAM,CAAC,eAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAE3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC9C,MAAM,CAAC,eAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,SAAS,YAAY,CAAC,CAAC,CAAC,CAAA;QAChE,CAAC,EAAE,iBAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;QAE9B,OAAO,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,eAAM,CAAC,IAAI,CAAA;AACpB,CAAC,CAAC,CAAA;AA1BS,QAAA,SAAS,aA0BlB"}
|
package/dist/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAc,EAAS;IAClE,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;IAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,KAAK,QAAQ,EAAE,CAAC,CAAA;AAAA,CAC3C;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAc,EAAU;IACnE,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;IAC/C,OAAO,GAAG,OAAO,KAAK,QAAQ,EAAE,CAAA;AAAA,CACjC;SAKW,iBAAiB;AAH7B;;GAEG;AACH,IAAY,iBAQX;AARD,WAAY,iBAAiB;IAC3B,kEAA6C,CAAA;IAC7C,sEAAiD,CAAA;IACjD,wDAAmC,CAAA;IACnC,kEAA6C,CAAA;IAC7C,sDAAiC,CAAA;IACjC,oEAA+C,CAAA;IAC/C,oDAA+B,CAAA;AAAC,
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
|
package/dist/player.d.ts
ADDED
|
@@ -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":";;;AAAA,+BAAmC;AACnC,mCAAqC;AACrC,mCAA+E;AAG/E;;;GAGG;AACH,SAAS,iBAAiB,CAAI,MAAwB,EAAE,YAAoB,EAAc;IACxF,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAA,mBAAW,EAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAAA,CACvC,CAAC,CAAA;AAAA,CACH;AAED;;;GAGG;AACH;IACU,YAAY,CAAsB;IAE1C;;;;OAIG;IACH,YAAY,WAAW,GAAG,wBAAwB,EAAE,YAAY,GAAG,CAAC,EAAE;QACpE,iCAAe;QACf,MAAM,GAAG,GAAG,IAAI,iBAAW,CAAC,WAAW,CAAC,CAAA;QACxC,+DAAyB;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAoB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAE/D,oCAAc;QACd,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAA;QAEjC,uCAAe;QACf,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,sBAAc,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,kBAAkB,CAC7B,IAAY,EACZ,OAAO,GAAG,CAAC,EACX,OAAyB,EACgC;QACzD,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3F,OAAO,QAAQ,CAAA;QAAA,CAChB,EAAE,oEAAwB,CAAC,CAAA;IAAA,CAC7B;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,OAAO,GAAG,CAAC,EAAiB;QAC7D,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAAA,CACnD,EAAE,oEAAwB,CAAC,CAAA;IAAA,CAC7B;IAED;;;;;OAKG;IACI,KAAK,CAAC,uBAAuB,CAClC,KAAiB,EACjB,OAAO,GAAG,CAAC,EACX,OAAyB,EACgC;QACzD,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC7F,OAAO,QAAQ,CAAA;QAAA,CAChB,EAAE,iEAAuB,CAAC,CAAA;IAAA,CAC5B;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,KAAiB,EAAE,OAAO,GAAG,CAAC,EAAiB;QAC3E,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAAA,CACrD,EAAE,iEAAuB,CAAC,CAAA;IAAA,CAC5B;IAED;;;;;OAKG;IACI,KAAK,CAAC,uBAAuB,CAClC,KAAiB,EACjB,OAAO,GAAG,CAAC,EACX,OAAyB,EACyD;QAClF,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAAA,CAChF,EAAE,iEAAuB,CAAC,CAAA;IAAA,CAC5B;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAO,GAAG,CAAC,EAAuB;QACzE,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,sDAAsC;YACtC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAAA,CAChF,EAAE,oEAAwB,CAAC,CAAA;IAAA,CAC7B;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,gBAAgB,CAAC,KAAiB,EAAE,MAAe,EAAE,OAAO,GAAG,CAAC,EAAmB;QAC9F,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,iCAAa;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAEtD,2DAA6B;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAA;YAEtD,2HAA2C;YAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,MAAM,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;YACvD,CAAC;YACD,OAAO,MAAM,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAAA,CAC1D,EAAE,8DAAsB,CAAC,CAAA;IAAA,CAC3B;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,uBAAe,CAAC,OAAO,CAAC,CAAA;IAAA,CAC5F;IAED;;;OAGG;IACI,eAAe,GAAyB;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAA;IAAA,CACzB;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,GAAkB;QACvC,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;QAAA,CACrC,EAAE,2DAAqB,CAAC,CAAA;IAAA,CAC1B;CACF"}
|