@kongyo2/kongyoroid 1.0.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 +21 -0
- package/README.md +7 -0
- package/dist/cache.d.ts +36 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +109 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +502 -0
- package/dist/cli.js.map +1 -0
- package/dist/concurrency.d.ts +14 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +107 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/errors.d.ts +35 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +81 -0
- package/dist/errors.js.map +1 -0
- package/dist/formant.d.ts +34 -0
- package/dist/formant.d.ts.map +1 -0
- package/dist/formant.js +622 -0
- package/dist/formant.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +6 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +144 -0
- package/dist/io.js.map +1 -0
- package/dist/kongyoroid.d.ts +82 -0
- package/dist/kongyoroid.d.ts.map +1 -0
- package/dist/kongyoroid.js +275 -0
- package/dist/kongyoroid.js.map +1 -0
- package/dist/limits.d.ts +18 -0
- package/dist/limits.d.ts.map +1 -0
- package/dist/limits.js +15 -0
- package/dist/limits.js.map +1 -0
- package/dist/mora.d.ts +28 -0
- package/dist/mora.d.ts.map +1 -0
- package/dist/mora.js +295 -0
- package/dist/mora.js.map +1 -0
- package/dist/notation.d.ts +15 -0
- package/dist/notation.d.ts.map +1 -0
- package/dist/notation.js +114 -0
- package/dist/notation.js.map +1 -0
- package/dist/pitch.d.ts +5 -0
- package/dist/pitch.d.ts.map +1 -0
- package/dist/pitch.js +36 -0
- package/dist/pitch.js.map +1 -0
- package/dist/player.d.ts +9 -0
- package/dist/player.d.ts.map +1 -0
- package/dist/player.js +81 -0
- package/dist/player.js.map +1 -0
- package/dist/request.d.ts +12 -0
- package/dist/request.d.ts.map +1 -0
- package/dist/request.js +115 -0
- package/dist/request.js.map +1 -0
- package/dist/schema.d.ts +9 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +267 -0
- package/dist/schema.js.map +1 -0
- package/dist/score.d.ts +37 -0
- package/dist/score.d.ts.map +1 -0
- package/dist/score.js +166 -0
- package/dist/score.js.map +1 -0
- package/dist/text.d.ts +3 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +54 -0
- package/dist/text.js.map +1 -0
- package/dist/types.d.ts +121 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +13 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +59 -0
- package/dist/validate.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/voicevox/api.d.ts +79 -0
- package/dist/voicevox/api.d.ts.map +1 -0
- package/dist/voicevox/api.js +176 -0
- package/dist/voicevox/api.js.map +1 -0
- package/dist/voicevox/client.d.ts +64 -0
- package/dist/voicevox/client.d.ts.map +1 -0
- package/dist/voicevox/client.js +321 -0
- package/dist/voicevox/client.js.map +1 -0
- package/dist/voicevox/dictionary.d.ts +21 -0
- package/dist/voicevox/dictionary.d.ts.map +1 -0
- package/dist/voicevox/dictionary.js +41 -0
- package/dist/voicevox/dictionary.js.map +1 -0
- package/dist/voicevox/song.d.ts +12 -0
- package/dist/voicevox/song.d.ts.map +1 -0
- package/dist/voicevox/song.js +45 -0
- package/dist/voicevox/song.js.map +1 -0
- package/dist/voicevox/speech.d.ts +17 -0
- package/dist/voicevox/speech.d.ts.map +1 -0
- package/dist/voicevox/speech.js +100 -0
- package/dist/voicevox/speech.js.map +1 -0
- package/dist/voicevox/styles.d.ts +15 -0
- package/dist/voicevox/styles.d.ts.map +1 -0
- package/dist/voicevox/styles.js +103 -0
- package/dist/voicevox/styles.js.map +1 -0
- package/dist/wav.d.ts +18 -0
- package/dist/wav.d.ts.map +1 -0
- package/dist/wav.js +198 -0
- package/dist/wav.js.map +1 -0
- package/examples/batch.jsonl +4 -0
- package/examples/song-notes.json +24 -0
- package/examples/song.json +12 -0
- package/examples/speech-kana.json +6 -0
- package/examples/speech.json +8 -0
- package/package.json +86 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { KongyoroidError, aborted, checkAbort } from "./errors.js";
|
|
2
|
+
import { LIMITS } from "./limits.js";
|
|
3
|
+
import { integer } from "./validate.js";
|
|
4
|
+
export class Semaphore {
|
|
5
|
+
active = 0;
|
|
6
|
+
limit;
|
|
7
|
+
maxQueue;
|
|
8
|
+
queue = [];
|
|
9
|
+
constructor(limit, maxQueue = 1024) {
|
|
10
|
+
this.limit = integer(limit, "$.concurrency", 1, LIMITS.concurrency);
|
|
11
|
+
this.maxQueue = integer(maxQueue, "$.maxQueue", 0, 100_000);
|
|
12
|
+
}
|
|
13
|
+
get pending() {
|
|
14
|
+
return this.queue.length;
|
|
15
|
+
}
|
|
16
|
+
get running() {
|
|
17
|
+
return this.active;
|
|
18
|
+
}
|
|
19
|
+
release() {
|
|
20
|
+
let released = false;
|
|
21
|
+
return () => {
|
|
22
|
+
if (released)
|
|
23
|
+
return;
|
|
24
|
+
released = true;
|
|
25
|
+
const waiter = this.queue.shift();
|
|
26
|
+
if (waiter !== undefined) {
|
|
27
|
+
waiter.signal?.removeEventListener("abort", waiter.abort);
|
|
28
|
+
waiter.resolve(this.release());
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.active -= 1;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
acquire(signal) {
|
|
36
|
+
checkAbort(signal);
|
|
37
|
+
if (this.active < this.limit) {
|
|
38
|
+
this.active += 1;
|
|
39
|
+
return Promise.resolve(this.release());
|
|
40
|
+
}
|
|
41
|
+
if (this.queue.length >= this.maxQueue) {
|
|
42
|
+
return Promise.reject(new KongyoroidError({
|
|
43
|
+
code: "QUEUE_FULL",
|
|
44
|
+
message: `The render queue is full (${this.maxQueue} waiting).`,
|
|
45
|
+
retryable: true,
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
const abort = () => {
|
|
50
|
+
const index = this.queue.indexOf(waiter);
|
|
51
|
+
if (index >= 0)
|
|
52
|
+
this.queue.splice(index, 1);
|
|
53
|
+
reject(aborted("Queued render cancelled."));
|
|
54
|
+
};
|
|
55
|
+
const waiter = { resolve, reject, signal, abort };
|
|
56
|
+
this.queue.push(waiter);
|
|
57
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async run(task, signal) {
|
|
61
|
+
const release = await this.acquire(signal);
|
|
62
|
+
try {
|
|
63
|
+
return await task();
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
release();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function mapConcurrent(items, limit, task, signal) {
|
|
71
|
+
const results = new Array(items.length);
|
|
72
|
+
const controller = new AbortController();
|
|
73
|
+
const forward = () => {
|
|
74
|
+
controller.abort();
|
|
75
|
+
};
|
|
76
|
+
signal?.addEventListener("abort", forward, { once: true });
|
|
77
|
+
const pending = items.entries();
|
|
78
|
+
let failure;
|
|
79
|
+
const worker = async () => {
|
|
80
|
+
if (failure !== undefined || controller.signal.aborted)
|
|
81
|
+
return;
|
|
82
|
+
const entry = pending.next();
|
|
83
|
+
if (entry.done === true)
|
|
84
|
+
return;
|
|
85
|
+
const [index, item] = entry.value;
|
|
86
|
+
try {
|
|
87
|
+
results[index] = await task(item, index);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
failure ??= error;
|
|
91
|
+
controller.abort();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
return worker();
|
|
95
|
+
};
|
|
96
|
+
try {
|
|
97
|
+
await Promise.all(Array.from({ length: Math.max(1, Math.min(limit, items.length)) }, () => worker()));
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
signal?.removeEventListener("abort", forward);
|
|
101
|
+
}
|
|
102
|
+
if (failure !== undefined)
|
|
103
|
+
throw failure;
|
|
104
|
+
checkAbort(signal);
|
|
105
|
+
return results;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../src/concurrency.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type ErrorCode = "INVALID_INPUT" | "UNSUPPORTED_TEXT" | "ENGINE_UNAVAILABLE" | "ENGINE_HTTP" | "ENGINE_REJECTED" | "ENGINE_PROTOCOL" | "TIMEOUT" | "ABORTED" | "QUEUE_FULL" | "IO_ERROR" | "PLAYER_UNAVAILABLE" | "INTERNAL";
|
|
2
|
+
export interface ErrorData {
|
|
3
|
+
readonly code: ErrorCode;
|
|
4
|
+
readonly message: string;
|
|
5
|
+
readonly retryable: boolean;
|
|
6
|
+
readonly path?: string;
|
|
7
|
+
readonly status?: number;
|
|
8
|
+
readonly hint?: string;
|
|
9
|
+
readonly detail?: unknown;
|
|
10
|
+
}
|
|
11
|
+
export declare const EXIT_CODES: {
|
|
12
|
+
readonly success: 0;
|
|
13
|
+
readonly internal: 1;
|
|
14
|
+
readonly input: 2;
|
|
15
|
+
readonly engine: 3;
|
|
16
|
+
readonly io: 4;
|
|
17
|
+
readonly aborted: 130;
|
|
18
|
+
};
|
|
19
|
+
export declare class KongyoroidError extends Error {
|
|
20
|
+
readonly code: ErrorCode;
|
|
21
|
+
readonly retryable: boolean;
|
|
22
|
+
readonly path: string | undefined;
|
|
23
|
+
readonly status: number | undefined;
|
|
24
|
+
readonly hint: string | undefined;
|
|
25
|
+
readonly detail: unknown;
|
|
26
|
+
constructor(data: ErrorData, cause?: unknown);
|
|
27
|
+
toJSON(): ErrorData;
|
|
28
|
+
}
|
|
29
|
+
export declare function invalid(path: string, message: string, hint?: string): never;
|
|
30
|
+
export declare function unsupported(path: string, message: string, hint?: string): never;
|
|
31
|
+
export declare function aborted(message?: string): KongyoroidError;
|
|
32
|
+
export declare function checkAbort(signal?: AbortSignal): void;
|
|
33
|
+
export declare function asKongyoroidError(error: unknown): KongyoroidError;
|
|
34
|
+
export declare function exitCodeOf(error: KongyoroidError): number;
|
|
35
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,kBAAkB,GAClB,oBAAoB,GACpB,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,YAAY,GACZ,UAAU,GACV,oBAAoB,GACpB,UAAU,CAAC;AAEf,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,EAAE;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACiD,CAAC;AAE1E,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAgB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAgB,MAAM,EAAE,OAAO,CAAC;gBAEb,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO;IAW5C,MAAM,IAAI,SAAS;CAW3B;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAQ3E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAQ/E;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,MAA+B,GAAG,eAAe,CAEjF;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAErD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAQjE;AAiBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAEzD"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export const EXIT_CODES = { success: 0, internal: 1, input: 2, engine: 3, io: 4, aborted: 130 };
|
|
2
|
+
export class KongyoroidError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
retryable;
|
|
5
|
+
path;
|
|
6
|
+
status;
|
|
7
|
+
hint;
|
|
8
|
+
detail;
|
|
9
|
+
constructor(data, cause) {
|
|
10
|
+
super(data.message, cause === undefined ? {} : { cause });
|
|
11
|
+
this.name = "KongyoroidError";
|
|
12
|
+
this.code = data.code;
|
|
13
|
+
this.retryable = data.retryable;
|
|
14
|
+
this.path = data.path;
|
|
15
|
+
this.status = data.status;
|
|
16
|
+
this.hint = data.hint;
|
|
17
|
+
this.detail = data.detail;
|
|
18
|
+
}
|
|
19
|
+
toJSON() {
|
|
20
|
+
return {
|
|
21
|
+
code: this.code,
|
|
22
|
+
message: this.message,
|
|
23
|
+
retryable: this.retryable,
|
|
24
|
+
...(this.path === undefined ? {} : { path: this.path }),
|
|
25
|
+
...(this.status === undefined ? {} : { status: this.status }),
|
|
26
|
+
...(this.hint === undefined ? {} : { hint: this.hint }),
|
|
27
|
+
...(this.detail === undefined ? {} : { detail: this.detail }),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function invalid(path, message, hint) {
|
|
32
|
+
throw new KongyoroidError({
|
|
33
|
+
code: "INVALID_INPUT",
|
|
34
|
+
message,
|
|
35
|
+
path,
|
|
36
|
+
retryable: false,
|
|
37
|
+
...(hint === undefined ? {} : { hint }),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function unsupported(path, message, hint) {
|
|
41
|
+
throw new KongyoroidError({
|
|
42
|
+
code: "UNSUPPORTED_TEXT",
|
|
43
|
+
message,
|
|
44
|
+
path,
|
|
45
|
+
retryable: false,
|
|
46
|
+
...(hint === undefined ? {} : { hint }),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
export function aborted(message = "Operation cancelled.") {
|
|
50
|
+
return new KongyoroidError({ code: "ABORTED", message, retryable: false });
|
|
51
|
+
}
|
|
52
|
+
export function checkAbort(signal) {
|
|
53
|
+
if (signal?.aborted)
|
|
54
|
+
throw aborted();
|
|
55
|
+
}
|
|
56
|
+
export function asKongyoroidError(error) {
|
|
57
|
+
if (error instanceof KongyoroidError)
|
|
58
|
+
return error;
|
|
59
|
+
if (error instanceof Error && error.name === "AbortError")
|
|
60
|
+
return aborted();
|
|
61
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
62
|
+
return new KongyoroidError({ code: "INTERNAL", message: `Unexpected internal error: ${message}`, retryable: false }, error);
|
|
63
|
+
}
|
|
64
|
+
const EXIT_BY_CODE = {
|
|
65
|
+
INVALID_INPUT: EXIT_CODES.input,
|
|
66
|
+
UNSUPPORTED_TEXT: EXIT_CODES.input,
|
|
67
|
+
ENGINE_UNAVAILABLE: EXIT_CODES.engine,
|
|
68
|
+
ENGINE_HTTP: EXIT_CODES.engine,
|
|
69
|
+
ENGINE_REJECTED: EXIT_CODES.engine,
|
|
70
|
+
ENGINE_PROTOCOL: EXIT_CODES.engine,
|
|
71
|
+
TIMEOUT: EXIT_CODES.engine,
|
|
72
|
+
QUEUE_FULL: EXIT_CODES.engine,
|
|
73
|
+
IO_ERROR: EXIT_CODES.io,
|
|
74
|
+
PLAYER_UNAVAILABLE: EXIT_CODES.io,
|
|
75
|
+
ABORTED: EXIT_CODES.aborted,
|
|
76
|
+
INTERNAL: EXIT_CODES.internal,
|
|
77
|
+
};
|
|
78
|
+
export function exitCodeOf(error) {
|
|
79
|
+
return EXIT_BY_CODE[error.code];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Phoneme } from "./mora.ts";
|
|
2
|
+
import type { OperationOptions, ResolvedRequest, ResolvedSong, ResolvedSpeech } from "./types.ts";
|
|
3
|
+
export interface Segment {
|
|
4
|
+
readonly phoneme: Phoneme;
|
|
5
|
+
readonly frames: number;
|
|
6
|
+
readonly f0Start: number;
|
|
7
|
+
readonly f0End: number;
|
|
8
|
+
readonly amplitude: number;
|
|
9
|
+
readonly vibrato: boolean;
|
|
10
|
+
readonly rampIn: boolean;
|
|
11
|
+
readonly rampOut: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface FormantPlan {
|
|
14
|
+
readonly sampleRate: number;
|
|
15
|
+
readonly seed: number;
|
|
16
|
+
readonly volume: number;
|
|
17
|
+
readonly vibratoDepth: number;
|
|
18
|
+
readonly vibratoRate: number;
|
|
19
|
+
readonly segments: readonly Segment[];
|
|
20
|
+
readonly frames: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function planSpeech(request: ResolvedSpeech, sampleRate: number): FormantPlan;
|
|
23
|
+
export declare function planSong(request: ResolvedSong, sampleRate: number): FormantPlan;
|
|
24
|
+
export interface StreamOptions extends OperationOptions {
|
|
25
|
+
}
|
|
26
|
+
export declare function renderChunks(plan: FormantPlan, options?: StreamOptions): Generator<Float32Array, void, void>;
|
|
27
|
+
export declare function renderInto(plan: FormantPlan, sink: (block: Float32Array) => void, options?: StreamOptions): Promise<void>;
|
|
28
|
+
export declare function renderPlan(plan: FormantPlan, options?: StreamOptions): Float32Array;
|
|
29
|
+
export declare function encodePlanSync(plan: FormantPlan, options?: StreamOptions): Uint8Array;
|
|
30
|
+
export declare function encodePlan(plan: FormantPlan, options?: StreamOptions): Promise<Uint8Array>;
|
|
31
|
+
export declare function planRequest(request: ResolvedRequest, sampleRate: number): FormantPlan;
|
|
32
|
+
export declare function renderFormantSync(request: ResolvedRequest, sampleRate: number, options?: OperationOptions): Uint8Array;
|
|
33
|
+
export declare function renderFormant(request: ResolvedRequest, sampleRate: number, options?: OperationOptions): Promise<Uint8Array>;
|
|
34
|
+
//# sourceMappingURL=formant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formant.d.ts","sourceRoot":"","sources":["../src/formant.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuB,OAAO,EAAwB,MAAM,WAAW,CAAC;AAKpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkKlG,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAyGD,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CA8DnF;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CA4E/E;AA4MD,MAAM,WAAW,aAAc,SAAQ,gBAAgB;CAAG;AAE1D,wBAAiB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAcjH;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,EACnC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CAQvF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,UAAU,CASzF;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAapG;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAErF;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,UAAU,CAEZ;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,UAAU,CAAC,CAErB"}
|