@kongyo2/kongyoroid 1.0.0 → 2.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/README.md +233 -0
- package/dist/cache.d.ts +32 -7
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +138 -9
- package/dist/cache.js.map +1 -1
- package/dist/cli/flags.d.ts +270 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +240 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/help.d.ts +11 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +336 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli.js +598 -232
- package/dist/cli.js.map +1 -1
- package/dist/errors.d.ts +43 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +56 -3
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +59 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -14
- package/dist/index.js.map +1 -1
- package/dist/io.d.ts +11 -0
- package/dist/io.d.ts.map +1 -1
- package/dist/io.js +149 -5
- package/dist/io.js.map +1 -1
- package/dist/kongyoroid.d.ts +237 -10
- package/dist/kongyoroid.d.ts.map +1 -1
- package/dist/kongyoroid.js +777 -86
- package/dist/kongyoroid.js.map +1 -1
- package/dist/limits.d.ts +5 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +6 -1
- package/dist/limits.js.map +1 -1
- package/dist/request.d.ts +1 -0
- package/dist/request.d.ts.map +1 -1
- package/dist/request.js +102 -15
- package/dist/request.js.map +1 -1
- package/dist/schema.d.ts +3 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +271 -68
- package/dist/schema.js.map +1 -1
- package/dist/song/mml.d.ts +15 -0
- package/dist/song/mml.d.ts.map +1 -0
- package/dist/song/mml.js +184 -0
- package/dist/song/mml.js.map +1 -0
- package/dist/song/pitch.d.ts.map +1 -0
- package/dist/{pitch.js → song/pitch.js} +1 -1
- package/dist/song/pitch.js.map +1 -0
- package/dist/song/score.d.ts +92 -0
- package/dist/song/score.d.ts.map +1 -0
- package/dist/song/score.js +454 -0
- package/dist/song/score.js.map +1 -0
- package/dist/synth/acoustics.d.ts +27 -0
- package/dist/synth/acoustics.d.ts.map +1 -0
- package/dist/synth/acoustics.js +608 -0
- package/dist/synth/acoustics.js.map +1 -0
- package/dist/synth/analysis.d.ts +22 -0
- package/dist/synth/analysis.d.ts.map +1 -0
- package/dist/synth/analysis.js +170 -0
- package/dist/synth/analysis.js.map +1 -0
- package/dist/synth/engine.d.ts +115 -0
- package/dist/synth/engine.d.ts.map +1 -0
- package/dist/synth/engine.js +223 -0
- package/dist/synth/engine.js.map +1 -0
- package/dist/synth/filters.d.ts +60 -0
- package/dist/synth/filters.d.ts.map +1 -0
- package/dist/synth/filters.js +166 -0
- package/dist/synth/filters.js.map +1 -0
- package/dist/synth/glottal.d.ts +20 -0
- package/dist/synth/glottal.d.ts.map +1 -0
- package/dist/synth/glottal.js +76 -0
- package/dist/synth/glottal.js.map +1 -0
- package/dist/synth/phonemes.d.ts +42 -0
- package/dist/synth/phonemes.d.ts.map +1 -0
- package/dist/synth/phonemes.js +311 -0
- package/dist/synth/phonemes.js.map +1 -0
- package/dist/synth/plan.d.ts +127 -0
- package/dist/synth/plan.d.ts.map +1 -0
- package/dist/synth/plan.js +81 -0
- package/dist/synth/plan.js.map +1 -0
- package/dist/synth/prosody.d.ts +30 -0
- package/dist/synth/prosody.d.ts.map +1 -0
- package/dist/synth/prosody.js +46 -0
- package/dist/synth/prosody.js.map +1 -0
- package/dist/synth/random.d.ts +15 -0
- package/dist/synth/random.d.ts.map +1 -0
- package/dist/synth/random.js +59 -0
- package/dist/synth/random.js.map +1 -0
- package/dist/synth/renderer.d.ts +77 -0
- package/dist/synth/renderer.d.ts.map +1 -0
- package/dist/synth/renderer.js +343 -0
- package/dist/synth/renderer.js.map +1 -0
- package/dist/synth/song.d.ts +30 -0
- package/dist/synth/song.d.ts.map +1 -0
- package/dist/synth/song.js +453 -0
- package/dist/synth/song.js.map +1 -0
- package/dist/synth/speech.d.ts +49 -0
- package/dist/synth/speech.d.ts.map +1 -0
- package/dist/synth/speech.js +354 -0
- package/dist/synth/speech.js.map +1 -0
- package/dist/synth/stream.d.ts +26 -0
- package/dist/synth/stream.d.ts.map +1 -0
- package/dist/synth/stream.js +67 -0
- package/dist/synth/stream.js.map +1 -0
- package/dist/synth/textstream.d.ts +35 -0
- package/dist/synth/textstream.d.ts.map +1 -0
- package/dist/synth/textstream.js +127 -0
- package/dist/synth/textstream.js.map +1 -0
- package/dist/synth/voice.d.ts +64 -0
- package/dist/synth/voice.d.ts.map +1 -0
- package/dist/synth/voice.js +208 -0
- package/dist/synth/voice.js.map +1 -0
- package/dist/text/dictionary.d.ts +50 -0
- package/dist/text/dictionary.d.ts.map +1 -0
- package/dist/text/dictionary.js +0 -0
- package/dist/text/dictionary.js.map +1 -0
- package/dist/text/frontend.d.ts +34 -0
- package/dist/text/frontend.d.ts.map +1 -0
- package/dist/text/frontend.js +550 -0
- package/dist/text/frontend.js.map +1 -0
- package/dist/text/lexicon.d.ts +10 -0
- package/dist/text/lexicon.d.ts.map +1 -0
- package/dist/text/lexicon.js +763 -0
- package/dist/text/lexicon.js.map +1 -0
- package/dist/{mora.d.ts → text/mora.d.ts} +15 -3
- package/dist/text/mora.d.ts.map +1 -0
- package/dist/{mora.js → text/mora.js} +87 -9
- package/dist/text/mora.js.map +1 -0
- package/dist/text/normalize.d.ts +34 -0
- package/dist/text/normalize.d.ts.map +1 -0
- package/dist/text/normalize.js +496 -0
- package/dist/text/normalize.js.map +1 -0
- package/dist/text/notation.d.ts +32 -0
- package/dist/text/notation.d.ts.map +1 -0
- package/dist/text/notation.js +182 -0
- package/dist/text/notation.js.map +1 -0
- package/dist/text/reading.d.ts +52 -0
- package/dist/text/reading.d.ts.map +1 -0
- package/dist/text/reading.js +32 -0
- package/dist/text/reading.js.map +1 -0
- package/dist/text/sentences.d.ts +10 -0
- package/dist/text/sentences.d.ts.map +1 -0
- package/dist/text/sentences.js +84 -0
- package/dist/text/sentences.js.map +1 -0
- package/dist/{text.d.ts → text/split.d.ts} +2 -2
- package/dist/text/split.d.ts.map +1 -0
- package/dist/{text.js → text/split.js} +2 -2
- package/dist/text/split.js.map +1 -0
- package/dist/types.d.ts +58 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +4 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +5 -1
- package/dist/version.js.map +1 -1
- package/dist/voicevox/client.d.ts +1 -1
- package/dist/voicevox/client.d.ts.map +1 -1
- package/dist/voicevox/dictionary.js +1 -1
- package/dist/voicevox/dictionary.js.map +1 -1
- package/dist/voicevox/song.js +1 -1
- package/dist/voicevox/song.js.map +1 -1
- package/dist/voicevox/speech.d.ts +1 -0
- package/dist/voicevox/speech.d.ts.map +1 -1
- package/dist/voicevox/speech.js +8 -2
- package/dist/voicevox/speech.js.map +1 -1
- package/docs/cli.md +251 -0
- package/examples/batch.jsonl +4 -3
- package/examples/builtin/dictionary.json +7 -0
- package/examples/builtin/song-compact.json +13 -0
- package/examples/builtin/song-mml.json +9 -0
- package/examples/builtin/song-notes.json +25 -0
- package/examples/builtin/speech-dictionary.json +9 -0
- package/examples/builtin/speech-kana.json +7 -0
- package/examples/builtin/speech.json +7 -0
- package/package.json +11 -3
- package/dist/formant.d.ts +0 -34
- package/dist/formant.d.ts.map +0 -1
- package/dist/formant.js +0 -622
- package/dist/formant.js.map +0 -1
- package/dist/mora.d.ts.map +0 -1
- package/dist/mora.js.map +0 -1
- package/dist/notation.d.ts +0 -15
- package/dist/notation.d.ts.map +0 -1
- package/dist/notation.js +0 -114
- package/dist/notation.js.map +0 -1
- package/dist/pitch.d.ts.map +0 -1
- package/dist/pitch.js.map +0 -1
- package/dist/score.d.ts +0 -37
- package/dist/score.d.ts.map +0 -1
- package/dist/score.js +0 -166
- package/dist/score.js.map +0 -1
- package/dist/text.d.ts.map +0 -1
- package/dist/text.js.map +0 -1
- package/examples/song-notes.json +0 -24
- /package/dist/{pitch.d.ts → song/pitch.d.ts} +0 -0
- /package/examples/{song.json → voicevox/song.json} +0 -0
- /package/examples/{speech-kana.json → voicevox/speech-kana.json} +0 -0
- /package/examples/{speech.json → voicevox/speech.json} +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { Diagnostic } from "../errors.ts";
|
|
2
|
+
import type { Phoneme } from "../text/mora.ts";
|
|
3
|
+
import type { ReadingPlan } from "../text/reading.ts";
|
|
4
|
+
import type { VoiceProfile } from "./voice.ts";
|
|
5
|
+
export declare const PARAM_COUNT: number;
|
|
6
|
+
export declare const P_F1: number;
|
|
7
|
+
export declare const P_F2: number;
|
|
8
|
+
export declare const P_F3: number;
|
|
9
|
+
export declare const P_F4: number;
|
|
10
|
+
export declare const P_F5: number;
|
|
11
|
+
export declare const P_B1: number;
|
|
12
|
+
export declare const P_B2: number;
|
|
13
|
+
export declare const P_B3: number;
|
|
14
|
+
export declare const P_B4: number;
|
|
15
|
+
export declare const P_B5: number;
|
|
16
|
+
export declare const P_AV: number;
|
|
17
|
+
export declare const P_AH: number;
|
|
18
|
+
export declare const P_AF: number;
|
|
19
|
+
export declare const P_RD: number;
|
|
20
|
+
export declare const P_NMIX: number;
|
|
21
|
+
export declare const P_NPOLE: number;
|
|
22
|
+
export declare const P_NZERO: number;
|
|
23
|
+
export declare const P_FF1: number;
|
|
24
|
+
export declare const P_FB1: number;
|
|
25
|
+
export declare const P_FG1: number;
|
|
26
|
+
export declare const P_FF2: number;
|
|
27
|
+
export declare const P_FB2: number;
|
|
28
|
+
export declare const P_FG2: number;
|
|
29
|
+
export declare const P_FHP: number;
|
|
30
|
+
export declare const PARAM_NAMES: readonly string[];
|
|
31
|
+
export interface Keyframe {
|
|
32
|
+
readonly at: number;
|
|
33
|
+
readonly values: Float64Array;
|
|
34
|
+
}
|
|
35
|
+
export type Articulation = "onset" | "continue" | "rearticulate";
|
|
36
|
+
export interface PlannedSegment {
|
|
37
|
+
readonly id: number;
|
|
38
|
+
readonly phoneme: Phoneme;
|
|
39
|
+
readonly start: number;
|
|
40
|
+
readonly end: number;
|
|
41
|
+
readonly voiced: boolean;
|
|
42
|
+
readonly keyframes: readonly Keyframe[];
|
|
43
|
+
readonly moraIndex: number | null;
|
|
44
|
+
readonly phraseIndex: number | null;
|
|
45
|
+
readonly noteId: string | null;
|
|
46
|
+
readonly sustainId: number | null;
|
|
47
|
+
readonly articulation: Articulation;
|
|
48
|
+
}
|
|
49
|
+
export interface PitchPoint {
|
|
50
|
+
readonly sample: number;
|
|
51
|
+
readonly hz: number;
|
|
52
|
+
}
|
|
53
|
+
export interface VibratoRegion {
|
|
54
|
+
readonly start: number;
|
|
55
|
+
readonly end: number;
|
|
56
|
+
readonly delaySeconds: number;
|
|
57
|
+
readonly fadeSeconds: number;
|
|
58
|
+
readonly depthCents: number;
|
|
59
|
+
readonly rateHz: number;
|
|
60
|
+
}
|
|
61
|
+
export interface MoraMarker {
|
|
62
|
+
readonly index: number;
|
|
63
|
+
readonly text: string;
|
|
64
|
+
readonly start: number;
|
|
65
|
+
readonly end: number;
|
|
66
|
+
readonly phraseIndex: number;
|
|
67
|
+
readonly phonemes: readonly Phoneme[];
|
|
68
|
+
}
|
|
69
|
+
export interface PhraseMarker {
|
|
70
|
+
readonly index: number;
|
|
71
|
+
readonly text: string;
|
|
72
|
+
readonly kana: string;
|
|
73
|
+
readonly accent: number;
|
|
74
|
+
readonly start: number;
|
|
75
|
+
readonly end: number;
|
|
76
|
+
readonly boundary: string;
|
|
77
|
+
}
|
|
78
|
+
export interface NoteMarker {
|
|
79
|
+
readonly id: string;
|
|
80
|
+
readonly index: number;
|
|
81
|
+
readonly key: number | null;
|
|
82
|
+
readonly hz: number | null;
|
|
83
|
+
readonly lyric: string;
|
|
84
|
+
readonly start: number;
|
|
85
|
+
readonly end: number;
|
|
86
|
+
readonly vowelStart: number | null;
|
|
87
|
+
readonly sustainId: number | null;
|
|
88
|
+
readonly continuation: "none" | "tie" | "melisma";
|
|
89
|
+
readonly articulation: Articulation;
|
|
90
|
+
}
|
|
91
|
+
export interface Adjustment {
|
|
92
|
+
readonly code: string;
|
|
93
|
+
readonly message: string;
|
|
94
|
+
readonly path?: string;
|
|
95
|
+
readonly noteId?: string;
|
|
96
|
+
readonly before?: number;
|
|
97
|
+
readonly after?: number;
|
|
98
|
+
}
|
|
99
|
+
export interface SynthesisPlan {
|
|
100
|
+
readonly planVersion: number;
|
|
101
|
+
readonly engineVersion: string;
|
|
102
|
+
readonly kind: "speech" | "song";
|
|
103
|
+
readonly sampleRate: number;
|
|
104
|
+
readonly seed: number;
|
|
105
|
+
readonly frames: number;
|
|
106
|
+
readonly voice: VoiceProfile;
|
|
107
|
+
readonly volume: number;
|
|
108
|
+
readonly jitter: number;
|
|
109
|
+
readonly shimmerDb: number;
|
|
110
|
+
readonly flutter: number;
|
|
111
|
+
readonly segments: readonly PlannedSegment[];
|
|
112
|
+
readonly pitch: readonly PitchPoint[];
|
|
113
|
+
readonly vibrato: readonly VibratoRegion[];
|
|
114
|
+
readonly moras: readonly MoraMarker[];
|
|
115
|
+
readonly phrases: readonly PhraseMarker[];
|
|
116
|
+
readonly notes: readonly NoteMarker[];
|
|
117
|
+
readonly reading: ReadingPlan | null;
|
|
118
|
+
readonly warnings: readonly Diagnostic[];
|
|
119
|
+
readonly adjustments: readonly Adjustment[];
|
|
120
|
+
readonly f0Min: number;
|
|
121
|
+
readonly f0Max: number;
|
|
122
|
+
}
|
|
123
|
+
export declare function keyframeToObject(frame: Keyframe): Record<string, number>;
|
|
124
|
+
export declare function interpolatePitchLog(points: readonly PitchPoint[], sample: number, cursor: {
|
|
125
|
+
index: number;
|
|
126
|
+
}): number;
|
|
127
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/synth/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export const PARAM_COUNT = 24;
|
|
2
|
+
export const P_F1 = 0;
|
|
3
|
+
export const P_F2 = 1;
|
|
4
|
+
export const P_F3 = 2;
|
|
5
|
+
export const P_F4 = 3;
|
|
6
|
+
export const P_F5 = 4;
|
|
7
|
+
export const P_B1 = 5;
|
|
8
|
+
export const P_B2 = 6;
|
|
9
|
+
export const P_B3 = 7;
|
|
10
|
+
export const P_B4 = 8;
|
|
11
|
+
export const P_B5 = 9;
|
|
12
|
+
export const P_AV = 10;
|
|
13
|
+
export const P_AH = 11;
|
|
14
|
+
export const P_AF = 12;
|
|
15
|
+
export const P_RD = 13;
|
|
16
|
+
export const P_NMIX = 14;
|
|
17
|
+
export const P_NPOLE = 15;
|
|
18
|
+
export const P_NZERO = 16;
|
|
19
|
+
export const P_FF1 = 17;
|
|
20
|
+
export const P_FB1 = 18;
|
|
21
|
+
export const P_FG1 = 19;
|
|
22
|
+
export const P_FF2 = 20;
|
|
23
|
+
export const P_FB2 = 21;
|
|
24
|
+
export const P_FG2 = 22;
|
|
25
|
+
export const P_FHP = 23;
|
|
26
|
+
export const PARAM_NAMES = [
|
|
27
|
+
"f1",
|
|
28
|
+
"f2",
|
|
29
|
+
"f3",
|
|
30
|
+
"f4",
|
|
31
|
+
"f5",
|
|
32
|
+
"b1",
|
|
33
|
+
"b2",
|
|
34
|
+
"b3",
|
|
35
|
+
"b4",
|
|
36
|
+
"b5",
|
|
37
|
+
"av",
|
|
38
|
+
"ah",
|
|
39
|
+
"af",
|
|
40
|
+
"rd",
|
|
41
|
+
"nasalMix",
|
|
42
|
+
"nasalPole",
|
|
43
|
+
"nasalZero",
|
|
44
|
+
"fricF1",
|
|
45
|
+
"fricB1",
|
|
46
|
+
"fricG1",
|
|
47
|
+
"fricF2",
|
|
48
|
+
"fricB2",
|
|
49
|
+
"fricG2",
|
|
50
|
+
"fricHp",
|
|
51
|
+
];
|
|
52
|
+
export function keyframeToObject(frame) {
|
|
53
|
+
const out = { at: Math.round(frame.at * 1e5) / 1e5 };
|
|
54
|
+
for (const [index, name] of PARAM_NAMES.entries()) {
|
|
55
|
+
const value = frame.values[index] ?? 0;
|
|
56
|
+
out[name] = Math.round(value * 1000) / 1000;
|
|
57
|
+
}
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
export function interpolatePitchLog(points, sample, cursor) {
|
|
61
|
+
if (points.length === 0)
|
|
62
|
+
return 0;
|
|
63
|
+
let index = cursor.index;
|
|
64
|
+
while (index + 1 < points.length && (points[index + 1]?.sample ?? Infinity) <= sample)
|
|
65
|
+
index += 1;
|
|
66
|
+
while (index > 0 && (points[index]?.sample ?? 0) > sample)
|
|
67
|
+
index -= 1;
|
|
68
|
+
cursor.index = index;
|
|
69
|
+
const current = points[index] ?? points[0];
|
|
70
|
+
const next = points[index + 1];
|
|
71
|
+
if (current === undefined)
|
|
72
|
+
return 0;
|
|
73
|
+
if (next === undefined || sample <= current.sample)
|
|
74
|
+
return current.hz;
|
|
75
|
+
const span = next.sample - current.sample;
|
|
76
|
+
if (span <= 0)
|
|
77
|
+
return next.hz;
|
|
78
|
+
const t = (sample - current.sample) / span;
|
|
79
|
+
return Math.exp(Math.log(current.hz) + (Math.log(next.hz) - Math.log(current.hz)) * t);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/synth/plan.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,WAAW,GAAW,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAW,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAW,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAW,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAW,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAW,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAW,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,OAAO,GAAW,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,WAAW;IACX,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC;AAwGF,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,MAAM,GAAG,GAA2B,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;IAC7E,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA6B,EAAE,MAAc,EAAE,MAAyB;IAC1G,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,OAAO,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,QAAQ,CAAC,IAAI,MAAM;QAAE,KAAK,IAAI,CAAC,CAAC;IAClG,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,MAAM;QAAE,KAAK,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1C,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface PhraseCommand {
|
|
2
|
+
readonly at: number;
|
|
3
|
+
readonly amplitude: number;
|
|
4
|
+
}
|
|
5
|
+
export interface AccentCommand {
|
|
6
|
+
readonly start: number;
|
|
7
|
+
readonly end: number;
|
|
8
|
+
readonly amplitude: number;
|
|
9
|
+
}
|
|
10
|
+
export interface BoundaryTone {
|
|
11
|
+
readonly start: number;
|
|
12
|
+
readonly end: number;
|
|
13
|
+
readonly amount: number;
|
|
14
|
+
}
|
|
15
|
+
export interface FujisakiModel {
|
|
16
|
+
readonly baseHz: number;
|
|
17
|
+
readonly alpha: number;
|
|
18
|
+
readonly beta: number;
|
|
19
|
+
readonly gamma: number;
|
|
20
|
+
readonly phrases: readonly PhraseCommand[];
|
|
21
|
+
readonly accents: readonly AccentCommand[];
|
|
22
|
+
readonly tones: readonly BoundaryTone[];
|
|
23
|
+
}
|
|
24
|
+
export declare const FUJISAKI_ALPHA: number;
|
|
25
|
+
export declare const FUJISAKI_BETA: number;
|
|
26
|
+
export declare const FUJISAKI_GAMMA: number;
|
|
27
|
+
export declare function evaluateFujisakiLog(model: FujisakiModel, t: number): number;
|
|
28
|
+
export declare function evaluateFujisakiHz(model: FujisakiModel, t: number): number;
|
|
29
|
+
export declare function applyPitchScale(hz: number, pitchScale: number | undefined): number;
|
|
30
|
+
//# sourceMappingURL=prosody.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prosody.d.ts","sourceRoot":"","sources":["../../src/synth/prosody.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CACzC;AAED,eAAO,MAAM,cAAc,EAAE,MAAU,CAAC;AACxC,eAAO,MAAM,aAAa,EAAE,MAAW,CAAC;AACxC,eAAO,MAAM,cAAc,EAAE,MAAY,CAAC;AAY1C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAoB3E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGlF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export const FUJISAKI_ALPHA = 3;
|
|
2
|
+
export const FUJISAKI_BETA = 20;
|
|
3
|
+
export const FUJISAKI_GAMMA = 0.9;
|
|
4
|
+
function phraseResponse(alpha, t) {
|
|
5
|
+
if (t <= 0)
|
|
6
|
+
return 0;
|
|
7
|
+
return alpha * alpha * t * Math.exp(-alpha * t);
|
|
8
|
+
}
|
|
9
|
+
function accentStep(beta, gamma, t) {
|
|
10
|
+
if (t <= 0)
|
|
11
|
+
return 0;
|
|
12
|
+
return Math.min(gamma, 1 - (1 + beta * t) * Math.exp(-beta * t));
|
|
13
|
+
}
|
|
14
|
+
export function evaluateFujisakiLog(model, t) {
|
|
15
|
+
let value = 0;
|
|
16
|
+
for (const phrase of model.phrases) {
|
|
17
|
+
const dt = t - phrase.at;
|
|
18
|
+
if (dt <= 0 || dt > 4)
|
|
19
|
+
continue;
|
|
20
|
+
value += phrase.amplitude * phraseResponse(model.alpha, dt);
|
|
21
|
+
}
|
|
22
|
+
for (const accent of model.accents) {
|
|
23
|
+
if (t - accent.start <= 0 || t - accent.end > 1)
|
|
24
|
+
continue;
|
|
25
|
+
value +=
|
|
26
|
+
accent.amplitude *
|
|
27
|
+
(accentStep(model.beta, model.gamma, t - accent.start) - accentStep(model.beta, model.gamma, t - accent.end));
|
|
28
|
+
}
|
|
29
|
+
for (const tone of model.tones) {
|
|
30
|
+
if (t <= tone.start)
|
|
31
|
+
continue;
|
|
32
|
+
const span = tone.end - tone.start;
|
|
33
|
+
const progress = span <= 0 ? 1 : Math.min(1, (t - tone.start) / span);
|
|
34
|
+
value += tone.amount * progress * (t <= tone.end + 0.05 ? 1 : Math.max(0, 1 - (t - tone.end - 0.05) / 0.15));
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
export function evaluateFujisakiHz(model, t) {
|
|
39
|
+
return model.baseHz * Math.exp(evaluateFujisakiLog(model, t));
|
|
40
|
+
}
|
|
41
|
+
export function applyPitchScale(hz, pitchScale) {
|
|
42
|
+
if (pitchScale === undefined || pitchScale === 0)
|
|
43
|
+
return hz;
|
|
44
|
+
return Math.exp(Math.log(hz) * 2 ** pitchScale);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=prosody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prosody.js","sourceRoot":"","sources":["../../src/synth/prosody.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,cAAc,GAAW,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAW,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAW,GAAG,CAAC;AAE1C,SAAS,cAAc,CAAC,KAAa,EAAE,CAAS;IAC9C,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,CAAS;IACxD,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,CAAS;IACjE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,SAAS;QAChC,KAAK,IAAI,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;YAAE,SAAS;QAC1D,KAAK;YACH,MAAM,CAAC,SAAS;gBAChB,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAClH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,SAAS;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAoB,EAAE,CAAS;IAChE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAU,EAAE,UAA8B;IACxE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class Xorshift32 {
|
|
2
|
+
private state;
|
|
3
|
+
constructor(seed: number);
|
|
4
|
+
nextUint(): number;
|
|
5
|
+
nextSigned(): number;
|
|
6
|
+
nextUnit(): number;
|
|
7
|
+
}
|
|
8
|
+
export declare function deriveSeed(seed: number, label: string): number;
|
|
9
|
+
export declare class GaussianNoise {
|
|
10
|
+
private readonly random;
|
|
11
|
+
private spare;
|
|
12
|
+
constructor(seed: number);
|
|
13
|
+
next(): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=random.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/synth/random.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAS;gBAEH,IAAI,EAAE,MAAM;IAIxB,QAAQ,IAAI,MAAM;IASlB,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,MAAM;CAG1B;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,KAAK,CAAqB;gBAEf,IAAI,EAAE,MAAM;IAIxB,IAAI,IAAI,MAAM;CAkBtB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export class Xorshift32 {
|
|
2
|
+
state;
|
|
3
|
+
constructor(seed) {
|
|
4
|
+
this.state = seed >>> 0 || 0x9e3779b9;
|
|
5
|
+
}
|
|
6
|
+
nextUint() {
|
|
7
|
+
let r = this.state;
|
|
8
|
+
r ^= r << 13;
|
|
9
|
+
r ^= r >>> 17;
|
|
10
|
+
r ^= r << 5;
|
|
11
|
+
this.state = r >>> 0;
|
|
12
|
+
return this.state;
|
|
13
|
+
}
|
|
14
|
+
nextSigned() {
|
|
15
|
+
return this.nextUint() / 2_147_483_648 - 1;
|
|
16
|
+
}
|
|
17
|
+
nextUnit() {
|
|
18
|
+
return this.nextUint() / 4_294_967_296;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function deriveSeed(seed, label) {
|
|
22
|
+
let hash = (seed >>> 0) ^ 0x811c9dc5;
|
|
23
|
+
for (const char of label) {
|
|
24
|
+
hash ^= char.codePointAt(0) ?? 0;
|
|
25
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
26
|
+
}
|
|
27
|
+
hash ^= hash >>> 16;
|
|
28
|
+
hash = Math.imul(hash, 0x7feb352d) >>> 0;
|
|
29
|
+
hash ^= hash >>> 15;
|
|
30
|
+
hash = Math.imul(hash, 0x846ca68b) >>> 0;
|
|
31
|
+
hash ^= hash >>> 16;
|
|
32
|
+
return hash >>> 0 || 1;
|
|
33
|
+
}
|
|
34
|
+
export class GaussianNoise {
|
|
35
|
+
random;
|
|
36
|
+
spare;
|
|
37
|
+
constructor(seed) {
|
|
38
|
+
this.random = new Xorshift32(seed);
|
|
39
|
+
}
|
|
40
|
+
next() {
|
|
41
|
+
if (this.spare !== undefined) {
|
|
42
|
+
const value = this.spare;
|
|
43
|
+
this.spare = undefined;
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
let u = 0;
|
|
47
|
+
let v = 0;
|
|
48
|
+
let s = 0;
|
|
49
|
+
do {
|
|
50
|
+
u = this.random.nextSigned();
|
|
51
|
+
v = this.random.nextSigned();
|
|
52
|
+
s = u * u + v * v;
|
|
53
|
+
} while (s >= 1 || s === 0);
|
|
54
|
+
const factor = Math.sqrt((-2 * Math.log(s)) / s);
|
|
55
|
+
this.spare = v * factor;
|
|
56
|
+
return u * factor;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/synth/random.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACb,KAAK,CAAS;IAEtB,YAAmB,IAAY;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC;IACxC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC;IACzC,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACpB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACpB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACpB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,aAAa;IACP,MAAM,CAAa;IAC5B,KAAK,CAAqB;IAElC,YAAmB,IAAY;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,GAAG,CAAC;YACF,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7B,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7B,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,GAAG,MAAM,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { PlannedSegment, SynthesisPlan } from "./plan.ts";
|
|
2
|
+
export declare const SOURCE_GAIN: number;
|
|
3
|
+
export declare const ASPIRATION_GAIN: number;
|
|
4
|
+
export declare const FRICATION_GAIN: number;
|
|
5
|
+
export declare const LIMITER_KNEE: number;
|
|
6
|
+
export declare const CONTROL_HOP_SECONDS: number;
|
|
7
|
+
export interface RenderStats {
|
|
8
|
+
readonly peak: number;
|
|
9
|
+
readonly rms: number;
|
|
10
|
+
readonly limitedSamples: number;
|
|
11
|
+
readonly frames: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class PlanRenderer {
|
|
14
|
+
readonly plan: SynthesisPlan;
|
|
15
|
+
readonly frames: number;
|
|
16
|
+
private readonly sampleRate;
|
|
17
|
+
private readonly hop;
|
|
18
|
+
private readonly smoothK;
|
|
19
|
+
private readonly target;
|
|
20
|
+
private readonly current;
|
|
21
|
+
private readonly cascade;
|
|
22
|
+
private readonly nasalPole;
|
|
23
|
+
private readonly nasalZero;
|
|
24
|
+
private readonly fricationA;
|
|
25
|
+
private readonly fricationB;
|
|
26
|
+
private readonly fricationHighpass;
|
|
27
|
+
private readonly aspirationLowpass;
|
|
28
|
+
private readonly dcBlocker;
|
|
29
|
+
private readonly decimator;
|
|
30
|
+
private readonly aspirationNoise;
|
|
31
|
+
private readonly fricationNoise;
|
|
32
|
+
private readonly jitterNoise;
|
|
33
|
+
private readonly shimmerNoise;
|
|
34
|
+
private readonly pitchCursor;
|
|
35
|
+
private readonly masterGain;
|
|
36
|
+
private segmentIndex;
|
|
37
|
+
private cursor;
|
|
38
|
+
private phase;
|
|
39
|
+
private phaseStep;
|
|
40
|
+
private shape;
|
|
41
|
+
private shimmerGain;
|
|
42
|
+
private periodF0;
|
|
43
|
+
private avGain;
|
|
44
|
+
private ahGain;
|
|
45
|
+
private afGain;
|
|
46
|
+
private nasalMix;
|
|
47
|
+
private fricGainA;
|
|
48
|
+
private fricGainB;
|
|
49
|
+
private activeFormants;
|
|
50
|
+
private vibratoIndex;
|
|
51
|
+
private peak;
|
|
52
|
+
private sumSquares;
|
|
53
|
+
private limited;
|
|
54
|
+
private initialized;
|
|
55
|
+
constructor(plan: SynthesisPlan);
|
|
56
|
+
get position(): number;
|
|
57
|
+
get finished(): boolean;
|
|
58
|
+
stats(): RenderStats;
|
|
59
|
+
private evaluateTarget;
|
|
60
|
+
private control;
|
|
61
|
+
private vibratoFactor;
|
|
62
|
+
private beginPeriod;
|
|
63
|
+
private glottalSample;
|
|
64
|
+
fill(buffer: Float32Array, offset?: number, length?: number): number;
|
|
65
|
+
currentF0(): number;
|
|
66
|
+
}
|
|
67
|
+
export interface BlockOptions {
|
|
68
|
+
readonly blockFrames?: number;
|
|
69
|
+
readonly signal?: AbortSignal;
|
|
70
|
+
}
|
|
71
|
+
export declare function renderBlocks(plan: SynthesisPlan, options?: BlockOptions): Generator<Float32Array, RenderStats, void>;
|
|
72
|
+
export declare function renderPcm(plan: SynthesisPlan, options?: BlockOptions): {
|
|
73
|
+
readonly pcm: Float32Array;
|
|
74
|
+
readonly stats: RenderStats;
|
|
75
|
+
};
|
|
76
|
+
export declare function segmentAt(plan: SynthesisPlan, sample: number): PlannedSegment | undefined;
|
|
77
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/synth/renderer.ts"],"names":[],"mappings":"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"}
|