@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.
Files changed (199) hide show
  1. package/README.md +233 -0
  2. package/dist/cache.d.ts +32 -7
  3. package/dist/cache.d.ts.map +1 -1
  4. package/dist/cache.js +138 -9
  5. package/dist/cache.js.map +1 -1
  6. package/dist/cli/flags.d.ts +270 -0
  7. package/dist/cli/flags.d.ts.map +1 -0
  8. package/dist/cli/flags.js +240 -0
  9. package/dist/cli/flags.js.map +1 -0
  10. package/dist/cli/help.d.ts +11 -0
  11. package/dist/cli/help.d.ts.map +1 -0
  12. package/dist/cli/help.js +336 -0
  13. package/dist/cli/help.js.map +1 -0
  14. package/dist/cli.js +598 -232
  15. package/dist/cli.js.map +1 -1
  16. package/dist/errors.d.ts +43 -3
  17. package/dist/errors.d.ts.map +1 -1
  18. package/dist/errors.js +56 -3
  19. package/dist/errors.js.map +1 -1
  20. package/dist/index.d.ts +59 -22
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +32 -14
  23. package/dist/index.js.map +1 -1
  24. package/dist/io.d.ts +11 -0
  25. package/dist/io.d.ts.map +1 -1
  26. package/dist/io.js +149 -5
  27. package/dist/io.js.map +1 -1
  28. package/dist/kongyoroid.d.ts +237 -10
  29. package/dist/kongyoroid.d.ts.map +1 -1
  30. package/dist/kongyoroid.js +777 -86
  31. package/dist/kongyoroid.js.map +1 -1
  32. package/dist/limits.d.ts +5 -0
  33. package/dist/limits.d.ts.map +1 -1
  34. package/dist/limits.js +6 -1
  35. package/dist/limits.js.map +1 -1
  36. package/dist/request.d.ts +1 -0
  37. package/dist/request.d.ts.map +1 -1
  38. package/dist/request.js +102 -15
  39. package/dist/request.js.map +1 -1
  40. package/dist/schema.d.ts +3 -0
  41. package/dist/schema.d.ts.map +1 -1
  42. package/dist/schema.js +271 -68
  43. package/dist/schema.js.map +1 -1
  44. package/dist/song/mml.d.ts +15 -0
  45. package/dist/song/mml.d.ts.map +1 -0
  46. package/dist/song/mml.js +184 -0
  47. package/dist/song/mml.js.map +1 -0
  48. package/dist/song/pitch.d.ts.map +1 -0
  49. package/dist/{pitch.js → song/pitch.js} +1 -1
  50. package/dist/song/pitch.js.map +1 -0
  51. package/dist/song/score.d.ts +92 -0
  52. package/dist/song/score.d.ts.map +1 -0
  53. package/dist/song/score.js +454 -0
  54. package/dist/song/score.js.map +1 -0
  55. package/dist/synth/acoustics.d.ts +27 -0
  56. package/dist/synth/acoustics.d.ts.map +1 -0
  57. package/dist/synth/acoustics.js +608 -0
  58. package/dist/synth/acoustics.js.map +1 -0
  59. package/dist/synth/analysis.d.ts +22 -0
  60. package/dist/synth/analysis.d.ts.map +1 -0
  61. package/dist/synth/analysis.js +170 -0
  62. package/dist/synth/analysis.js.map +1 -0
  63. package/dist/synth/engine.d.ts +115 -0
  64. package/dist/synth/engine.d.ts.map +1 -0
  65. package/dist/synth/engine.js +223 -0
  66. package/dist/synth/engine.js.map +1 -0
  67. package/dist/synth/filters.d.ts +60 -0
  68. package/dist/synth/filters.d.ts.map +1 -0
  69. package/dist/synth/filters.js +166 -0
  70. package/dist/synth/filters.js.map +1 -0
  71. package/dist/synth/glottal.d.ts +20 -0
  72. package/dist/synth/glottal.d.ts.map +1 -0
  73. package/dist/synth/glottal.js +76 -0
  74. package/dist/synth/glottal.js.map +1 -0
  75. package/dist/synth/phonemes.d.ts +42 -0
  76. package/dist/synth/phonemes.d.ts.map +1 -0
  77. package/dist/synth/phonemes.js +311 -0
  78. package/dist/synth/phonemes.js.map +1 -0
  79. package/dist/synth/plan.d.ts +127 -0
  80. package/dist/synth/plan.d.ts.map +1 -0
  81. package/dist/synth/plan.js +81 -0
  82. package/dist/synth/plan.js.map +1 -0
  83. package/dist/synth/prosody.d.ts +30 -0
  84. package/dist/synth/prosody.d.ts.map +1 -0
  85. package/dist/synth/prosody.js +46 -0
  86. package/dist/synth/prosody.js.map +1 -0
  87. package/dist/synth/random.d.ts +15 -0
  88. package/dist/synth/random.d.ts.map +1 -0
  89. package/dist/synth/random.js +59 -0
  90. package/dist/synth/random.js.map +1 -0
  91. package/dist/synth/renderer.d.ts +77 -0
  92. package/dist/synth/renderer.d.ts.map +1 -0
  93. package/dist/synth/renderer.js +343 -0
  94. package/dist/synth/renderer.js.map +1 -0
  95. package/dist/synth/song.d.ts +30 -0
  96. package/dist/synth/song.d.ts.map +1 -0
  97. package/dist/synth/song.js +453 -0
  98. package/dist/synth/song.js.map +1 -0
  99. package/dist/synth/speech.d.ts +49 -0
  100. package/dist/synth/speech.d.ts.map +1 -0
  101. package/dist/synth/speech.js +354 -0
  102. package/dist/synth/speech.js.map +1 -0
  103. package/dist/synth/stream.d.ts +26 -0
  104. package/dist/synth/stream.d.ts.map +1 -0
  105. package/dist/synth/stream.js +67 -0
  106. package/dist/synth/stream.js.map +1 -0
  107. package/dist/synth/textstream.d.ts +35 -0
  108. package/dist/synth/textstream.d.ts.map +1 -0
  109. package/dist/synth/textstream.js +127 -0
  110. package/dist/synth/textstream.js.map +1 -0
  111. package/dist/synth/voice.d.ts +64 -0
  112. package/dist/synth/voice.d.ts.map +1 -0
  113. package/dist/synth/voice.js +208 -0
  114. package/dist/synth/voice.js.map +1 -0
  115. package/dist/text/dictionary.d.ts +50 -0
  116. package/dist/text/dictionary.d.ts.map +1 -0
  117. package/dist/text/dictionary.js +0 -0
  118. package/dist/text/dictionary.js.map +1 -0
  119. package/dist/text/frontend.d.ts +34 -0
  120. package/dist/text/frontend.d.ts.map +1 -0
  121. package/dist/text/frontend.js +550 -0
  122. package/dist/text/frontend.js.map +1 -0
  123. package/dist/text/lexicon.d.ts +10 -0
  124. package/dist/text/lexicon.d.ts.map +1 -0
  125. package/dist/text/lexicon.js +763 -0
  126. package/dist/text/lexicon.js.map +1 -0
  127. package/dist/{mora.d.ts → text/mora.d.ts} +15 -3
  128. package/dist/text/mora.d.ts.map +1 -0
  129. package/dist/{mora.js → text/mora.js} +87 -9
  130. package/dist/text/mora.js.map +1 -0
  131. package/dist/text/normalize.d.ts +34 -0
  132. package/dist/text/normalize.d.ts.map +1 -0
  133. package/dist/text/normalize.js +496 -0
  134. package/dist/text/normalize.js.map +1 -0
  135. package/dist/text/notation.d.ts +32 -0
  136. package/dist/text/notation.d.ts.map +1 -0
  137. package/dist/text/notation.js +182 -0
  138. package/dist/text/notation.js.map +1 -0
  139. package/dist/text/reading.d.ts +52 -0
  140. package/dist/text/reading.d.ts.map +1 -0
  141. package/dist/text/reading.js +32 -0
  142. package/dist/text/reading.js.map +1 -0
  143. package/dist/text/sentences.d.ts +10 -0
  144. package/dist/text/sentences.d.ts.map +1 -0
  145. package/dist/text/sentences.js +84 -0
  146. package/dist/text/sentences.js.map +1 -0
  147. package/dist/{text.d.ts → text/split.d.ts} +2 -2
  148. package/dist/text/split.d.ts.map +1 -0
  149. package/dist/{text.js → text/split.js} +2 -2
  150. package/dist/text/split.js.map +1 -0
  151. package/dist/types.d.ts +58 -3
  152. package/dist/types.d.ts.map +1 -1
  153. package/dist/version.d.ts +4 -0
  154. package/dist/version.d.ts.map +1 -1
  155. package/dist/version.js +5 -1
  156. package/dist/version.js.map +1 -1
  157. package/dist/voicevox/client.d.ts +1 -1
  158. package/dist/voicevox/client.d.ts.map +1 -1
  159. package/dist/voicevox/dictionary.js +1 -1
  160. package/dist/voicevox/dictionary.js.map +1 -1
  161. package/dist/voicevox/song.js +1 -1
  162. package/dist/voicevox/song.js.map +1 -1
  163. package/dist/voicevox/speech.d.ts +1 -0
  164. package/dist/voicevox/speech.d.ts.map +1 -1
  165. package/dist/voicevox/speech.js +8 -2
  166. package/dist/voicevox/speech.js.map +1 -1
  167. package/docs/cli.md +251 -0
  168. package/examples/batch.jsonl +4 -3
  169. package/examples/builtin/dictionary.json +7 -0
  170. package/examples/builtin/song-compact.json +13 -0
  171. package/examples/builtin/song-mml.json +9 -0
  172. package/examples/builtin/song-notes.json +25 -0
  173. package/examples/builtin/speech-dictionary.json +9 -0
  174. package/examples/builtin/speech-kana.json +7 -0
  175. package/examples/builtin/speech.json +7 -0
  176. package/package.json +11 -3
  177. package/dist/formant.d.ts +0 -34
  178. package/dist/formant.d.ts.map +0 -1
  179. package/dist/formant.js +0 -622
  180. package/dist/formant.js.map +0 -1
  181. package/dist/mora.d.ts.map +0 -1
  182. package/dist/mora.js.map +0 -1
  183. package/dist/notation.d.ts +0 -15
  184. package/dist/notation.d.ts.map +0 -1
  185. package/dist/notation.js +0 -114
  186. package/dist/notation.js.map +0 -1
  187. package/dist/pitch.d.ts.map +0 -1
  188. package/dist/pitch.js.map +0 -1
  189. package/dist/score.d.ts +0 -37
  190. package/dist/score.d.ts.map +0 -1
  191. package/dist/score.js +0 -166
  192. package/dist/score.js.map +0 -1
  193. package/dist/text.d.ts.map +0 -1
  194. package/dist/text.js.map +0 -1
  195. package/examples/song-notes.json +0 -24
  196. /package/dist/{pitch.d.ts → song/pitch.d.ts} +0 -0
  197. /package/examples/{song.json → voicevox/song.json} +0 -0
  198. /package/examples/{speech-kana.json → voicevox/speech-kana.json} +0 -0
  199. /package/examples/{speech.json → voicevox/speech.json} +0 -0
@@ -0,0 +1,184 @@
1
+ import { invalid } from "../errors.js";
2
+ const NOTE_OFFSETS = { c: 0, d: 2, e: 4, f: 5, g: 7, a: 9, b: 11 };
3
+ function lengthToBeats(length, dots, path, offset) {
4
+ if (length <= 0 || length > 256)
5
+ invalid(`${path}[${offset}]`, `Invalid note length ${length}; use 1–256 (4 = quarter note).`);
6
+ let beats = 4 / length;
7
+ let extra = beats / 2;
8
+ for (let dot = 0; dot < dots; dot++) {
9
+ beats += extra;
10
+ extra /= 2;
11
+ }
12
+ return beats;
13
+ }
14
+ export function parseMml(text, path = "$.mml") {
15
+ const chars = Array.from(text.normalize("NFKC"));
16
+ const notes = [];
17
+ let tempo;
18
+ let octave = 4;
19
+ let defaultLength = 4;
20
+ let velocity;
21
+ let index = 0;
22
+ let pendingTie = false;
23
+ let pendingLyric;
24
+ const readNumber = () => {
25
+ let digits = "";
26
+ while (index < chars.length && /^[0-9]$/u.test(chars[index] ?? "")) {
27
+ digits += chars[index];
28
+ index += 1;
29
+ }
30
+ return digits.length === 0 ? undefined : Number(digits);
31
+ };
32
+ const readDots = () => {
33
+ let dots = 0;
34
+ while (chars[index] === ".") {
35
+ dots += 1;
36
+ index += 1;
37
+ }
38
+ return dots;
39
+ };
40
+ while (index < chars.length) {
41
+ const char = chars[index] ?? "";
42
+ const lower = char.toLowerCase();
43
+ const start = index;
44
+ if (/\s/u.test(char) || char === "|" || char === ",") {
45
+ index += 1;
46
+ continue;
47
+ }
48
+ if (char === "[") {
49
+ const close = chars.indexOf("]", index);
50
+ if (close < 0)
51
+ invalid(`${path}[${index}]`, "Unclosed [ in MML lyric.");
52
+ pendingLyric = chars.slice(index + 1, close).join("");
53
+ index = close + 1;
54
+ continue;
55
+ }
56
+ if (lower === "t") {
57
+ index += 1;
58
+ const value = readNumber();
59
+ if (value === undefined || value < 20 || value > 400)
60
+ invalid(`${path}[${start}]`, "t must be followed by a tempo in 20–400.");
61
+ tempo = value;
62
+ continue;
63
+ }
64
+ if (lower === "o") {
65
+ index += 1;
66
+ const value = readNumber();
67
+ if (value === undefined || value > 9)
68
+ invalid(`${path}[${start}]`, "o must be followed by an octave 0–9.");
69
+ octave = value;
70
+ continue;
71
+ }
72
+ if (char === "<") {
73
+ octave -= 1;
74
+ index += 1;
75
+ continue;
76
+ }
77
+ if (char === ">") {
78
+ octave += 1;
79
+ index += 1;
80
+ continue;
81
+ }
82
+ if (lower === "l") {
83
+ index += 1;
84
+ const value = readNumber();
85
+ if (value === undefined || value <= 0 || value > 256)
86
+ invalid(`${path}[${start}]`, "l must be followed by a length 1–256.");
87
+ defaultLength = value;
88
+ continue;
89
+ }
90
+ if (lower === "v") {
91
+ index += 1;
92
+ const value = readNumber();
93
+ if (value === undefined || value > 127)
94
+ invalid(`${path}[${start}]`, "v must be followed by a velocity 0–15 (or 16–127).");
95
+ velocity = value <= 15 ? Math.max(1, Math.round((value / 15) * 127)) : value;
96
+ continue;
97
+ }
98
+ if (lower === "q") {
99
+ index += 1;
100
+ readNumber();
101
+ continue;
102
+ }
103
+ if (char === "&" || char === "^") {
104
+ pendingTie = true;
105
+ index += 1;
106
+ continue;
107
+ }
108
+ if (lower === "r" || lower === "p") {
109
+ if (pendingTie)
110
+ invalid(`${path}[${start}]`, "& must join two pitched notes; a rest cannot be tied.");
111
+ index += 1;
112
+ const length = readNumber() ?? defaultLength;
113
+ const dots = readDots();
114
+ notes.push({
115
+ key: null,
116
+ beats: lengthToBeats(length, dots, path, start),
117
+ continuation: "none",
118
+ velocity: undefined,
119
+ lyric: undefined,
120
+ offset: start,
121
+ });
122
+ pendingTie = false;
123
+ continue;
124
+ }
125
+ if (lower === "n") {
126
+ index += 1;
127
+ const value = readNumber();
128
+ if (value === undefined || value > 127)
129
+ invalid(`${path}[${start}]`, "n must be followed by a MIDI note number 0–127.");
130
+ const dots = readDots();
131
+ notes.push({
132
+ key: value,
133
+ beats: lengthToBeats(defaultLength, dots, path, start),
134
+ continuation: pendingTie ? (notes.at(-1)?.key === value ? "tie" : "melisma") : "none",
135
+ velocity,
136
+ lyric: pendingTie ? undefined : pendingLyric,
137
+ offset: start,
138
+ });
139
+ pendingTie = false;
140
+ pendingLyric = undefined;
141
+ continue;
142
+ }
143
+ const base = NOTE_OFFSETS[lower];
144
+ if (base !== undefined) {
145
+ index += 1;
146
+ let shift = 0;
147
+ while (chars[index] === "+" || chars[index] === "#" || chars[index] === "-") {
148
+ shift += chars[index] === "-" ? -1 : 1;
149
+ index += 1;
150
+ }
151
+ const length = readNumber() ?? defaultLength;
152
+ const dots = readDots();
153
+ const key = (octave + 1) * 12 + base + shift;
154
+ if (key < 0 || key > 127)
155
+ invalid(`${path}[${start}]`, `Note ${char} in octave ${octave} is outside the MIDI range.`);
156
+ const previous = notes.at(-1);
157
+ const continuation = pendingTie && previous !== undefined && previous.key !== null
158
+ ? previous.key === key
159
+ ? "tie"
160
+ : "melisma"
161
+ : "none";
162
+ if (pendingTie && (previous === undefined || previous.key === null))
163
+ invalid(`${path}[${start}]`, "& must join two pitched notes.");
164
+ notes.push({
165
+ key,
166
+ beats: lengthToBeats(length, dots, path, start),
167
+ continuation,
168
+ velocity,
169
+ lyric: continuation === "none" ? pendingLyric : undefined,
170
+ offset: start,
171
+ });
172
+ pendingTie = false;
173
+ pendingLyric = undefined;
174
+ continue;
175
+ }
176
+ invalid(`${path}[${start}]`, `Unexpected character ${JSON.stringify(char)} in MML.`, {
177
+ hint: "Supported: t120 (tempo), o4 (octave), < > (octave shift), l8 (default length), v12 (velocity), c d e f g a b with + - #, lengths 1–64 and dots, r (rest), & (tie/melisma), n60 (MIDI), [きゃ] (inline lyric).",
178
+ });
179
+ }
180
+ if (pendingTie)
181
+ invalid(`${path}[${chars.length}]`, "MML ends with a dangling &.");
182
+ return { tempo, notes };
183
+ }
184
+ //# sourceMappingURL=mml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mml.js","sourceRoot":"","sources":["../../src/song/mml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pitch.d.ts","sourceRoot":"","sources":["../../src/song/pitch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,EAAE,MAAY,CAAC;AAMjC,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,GAAE,MAAgB,GAAG,MAAM,CA4BjF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C"}
@@ -1,4 +1,4 @@
1
- import { invalid } from "./errors.js";
1
+ import { invalid } from "../errors.js";
2
2
  export const A4_HZ = 440;
3
3
  const SEMITONES = { C: 0, D: 2, E: 4, F: 5, G: 7, A: 9, B: 11 };
4
4
  const NAMES = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pitch.js","sourceRoot":"","sources":["../../src/song/pitch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type { MoraPhonemes } from "../text/mora.ts";
2
+ export declare const DEFAULT_FRAME_RATE: number;
3
+ export declare const MAX_NOTES: number;
4
+ export declare const MIN_BEATS: number;
5
+ export declare const MAX_BEATS: number;
6
+ export declare const MAX_LYRIC_MORAS: number;
7
+ export type Continuation = "none" | "tie" | "melisma";
8
+ export type NoteArticulation = "auto" | "legato" | "rearticulate";
9
+ export interface NoteVibrato {
10
+ readonly depthCents?: number;
11
+ readonly rateHz?: number;
12
+ readonly delayMs?: number;
13
+ readonly fadeMs?: number;
14
+ }
15
+ export interface NoteInput {
16
+ readonly id?: string;
17
+ readonly key: number | string | null;
18
+ readonly beats: number;
19
+ readonly lyric?: string;
20
+ readonly continuation?: Continuation;
21
+ readonly continueFrom?: string;
22
+ readonly articulation?: NoteArticulation;
23
+ readonly velocity?: number;
24
+ readonly gainDb?: number;
25
+ readonly portamentoMs?: number;
26
+ readonly vibrato?: NoteVibrato | false;
27
+ }
28
+ export interface Note {
29
+ readonly id: string;
30
+ readonly index: number;
31
+ readonly key: number | null;
32
+ readonly beats: number;
33
+ readonly lyric: string;
34
+ readonly moras: readonly MoraPhonemes[];
35
+ readonly moraTexts: readonly string[];
36
+ readonly continuation: Continuation;
37
+ readonly articulation: NoteArticulation;
38
+ readonly velocity: number;
39
+ readonly gainDb: number;
40
+ readonly portamentoSeconds: number | undefined;
41
+ readonly vibrato: NoteVibrato | false | undefined;
42
+ }
43
+ export interface EngineNote {
44
+ readonly id: string;
45
+ readonly key: number | null;
46
+ readonly frame_length: number;
47
+ readonly lyric: string;
48
+ }
49
+ export interface EngineScore {
50
+ readonly notes: readonly EngineNote[];
51
+ }
52
+ export interface ScoreText {
53
+ readonly lyrics: string;
54
+ readonly melody: string;
55
+ readonly beats?: string | readonly number[];
56
+ }
57
+ export interface MmlScore {
58
+ readonly mml: string;
59
+ readonly lyrics?: string;
60
+ }
61
+ export declare const NOTE_KEYS: readonly string[];
62
+ export interface LyricAlignment {
63
+ readonly moras: readonly string[];
64
+ readonly pitchedNotes: number;
65
+ readonly assigned: readonly {
66
+ readonly note: number;
67
+ readonly mora: number;
68
+ readonly text: string;
69
+ }[];
70
+ readonly leftoverMoras: readonly string[];
71
+ readonly unfilledNotes: readonly number[];
72
+ }
73
+ export declare function alignLyrics(lyrics: string, melody: readonly string[], path?: string): LyricAlignment;
74
+ export declare function parseScoreText(input: ScoreText, path?: string): readonly NoteInput[];
75
+ export declare function parseMmlScore(input: MmlScore, path?: string): {
76
+ readonly notes: readonly NoteInput[];
77
+ readonly tempo: number | undefined;
78
+ };
79
+ export declare function parseNoteInput(value: unknown, path: string): NoteInput;
80
+ export declare function resolveNotes(input: readonly NoteInput[], path?: string, transpose?: number): readonly Note[];
81
+ export interface ParsedNotes {
82
+ readonly notes: readonly NoteInput[];
83
+ readonly tempo: number | undefined;
84
+ readonly form: "list" | "compact" | "mml";
85
+ }
86
+ export declare function parseNotes(value: unknown, path?: string): ParsedNotes;
87
+ export declare function scoreSeconds(notes: readonly Note[], tempo: number): number;
88
+ export declare function notesToEngineScore(notes: readonly Note[], tempo: number, frameRate?: number, leadIn?: number, leadOut?: number): EngineScore;
89
+ export declare function engineScoreFrames(score: EngineScore): number;
90
+ export declare function transposeInput(value: unknown, path: string): number;
91
+ export declare function parseBooleanFlag(value: unknown, path: string): boolean;
92
+ //# sourceMappingURL=score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/song/score.ts"],"names":[],"mappings":"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"}