@yomiscript/kokoro 0.1.0 → 0.1.1

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 CHANGED
@@ -4,7 +4,8 @@ The Kokoro-82M Katarite: YomiScript -> Kokoro's phoneme string and ids -> ONNX (
4
4
  Given a YomiScript written by the original Kokoro front end, it hands Kokoro exactly what the original pipeline does
5
5
  (D21, D22; `eval/kokoro_parity`).
6
6
 
7
- - `plan(ys)`: what Kokoro is given, per language section (no ONNX).
7
+ - `plan(ys)`: what Kokoro is given, per language section (no ONNX). Japanese ` ‖ ` and an inner `↘` become `,` and `.`
8
+ as in English, so Kokoro pauses there (D26); `plan(ys, { original: true })` drops them as the original does.
8
9
  - `Engine(ort, loadBytes)`: the ONNX engine, for onnxruntime-web (browser; `W16`, fp16 weights) or onnxruntime-node
9
10
  (`FP32`, identical to the original). `nodeEngine({ dir, model, download })` from `@yomiscript/kokoro/node`; with `download: KOKORO_MODELS_URL`, missing
10
11
  files are downloaded into `dir` once.
package/dist/plan.d.ts CHANGED
@@ -8,7 +8,7 @@ export interface PlannedSection {
8
8
  lang: string;
9
9
  text: string;
10
10
  voice: string;
11
- /** the phoneme string the original Kokoro would get */
11
+ /** the phoneme string Kokoro is given */
12
12
  ps: string;
13
13
  ids: number[];
14
14
  /** the unit index of each id (-1 for BOS / EOS) */
@@ -19,4 +19,8 @@ export interface PlannedSection {
19
19
  export type Plan = PlannedSection[] & {
20
20
  src: string;
21
21
  };
22
- export declare function plan(ys: string): Plan;
22
+ export interface PlanOptions {
23
+ /** Japanese punctuation as the original Kokoro gets it (D22), for the parity checks */
24
+ original?: boolean;
25
+ }
26
+ export declare function plan(ys: string, opts?: PlanOptions): Plan;
package/dist/plan.js CHANGED
@@ -163,12 +163,15 @@ function enSyl(x, gb) {
163
163
  }
164
164
  return x;
165
165
  }
166
- function jaPhonemes(t, foreign) {
167
- // as Kokoro's Japanese front end (misaki Cutlet) writes them: 。 and 、 leave only the word space
168
- if (t.kind === "space" || t.kind === "pause")
166
+ function jaPhonemes(t, foreign, original) {
167
+ // ‖ and an inner ↘ as in English (', ' and '.', D26); original: as Kokoro's Japanese front end (misaki Cutlet)
168
+ // writes them, 。 and 、 leave only the word space (D22)
169
+ if (t.kind === "space")
169
170
  return " ";
171
+ if (t.kind === "pause")
172
+ return original ? " " : ", ";
170
173
  if (t.kind === "end" || t.kind === "punct")
171
- return t.sym === "." && (t.kind === "end" || t.sent) ? "" : (t.sym ?? "");
174
+ return t.sym === "." && (t.kind === "end" || (original && t.sent)) ? "" : (t.sym ?? "");
172
175
  let p = t.ipa ?? "";
173
176
  if (t.mk === "mora")
174
177
  p = jaKokoro(t.on ?? "", t.v ?? "");
@@ -176,9 +179,9 @@ function jaPhonemes(t, foreign) {
176
179
  p = "ʔ";
177
180
  return foreign ? [...p].map((c) => FOREIGN_JA[c] ?? c).join("") : p;
178
181
  }
179
- function kokoroPhonemes(lang, t, foreign) {
182
+ function kokoroPhonemes(lang, t, foreign, original) {
180
183
  if (isJa(lang))
181
- return jaPhonemes(t, foreign);
184
+ return jaPhonemes(t, foreign, original);
182
185
  if (t.kind === "space")
183
186
  return " ";
184
187
  if (t.kind === "pause")
@@ -200,7 +203,7 @@ export function voiceFor(top, l, x) {
200
203
  return `${voiceOf(top)}+${voiceOf(l)}@${BLEND}`;
201
204
  }
202
205
  // plan: sections with Kokoro ids + units (no ONNX); used for parity tests and synthesis
203
- export function plan(ys) {
206
+ export function plan(ys, opts = {}) {
204
207
  const Y = parse(ys);
205
208
  const P = Y.sections.map((sec) => {
206
209
  const foreign = isJa(sec.lang) && !isJa(Y.top);
@@ -208,7 +211,7 @@ export function plan(ys) {
208
211
  for (const t of sec.toks) {
209
212
  if (t.kind === "bound")
210
213
  continue;
211
- U.push([kokoroPhonemes(sec.lang, t, foreign), t.kind === "unit" && t.f0 ? [...t.f0] : null, t.ph]);
214
+ U.push([kokoroPhonemes(sec.lang, t, foreign, opts.original ?? false), t.kind === "unit" && t.f0 ? [...t.f0] : null, t.ph]);
212
215
  toks.push(t);
213
216
  }
214
217
  const ids = [0], uid = [-1];
package/dist/plan.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"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"}
package/dist/render.js CHANGED
@@ -3,138 +3,148 @@
3
3
  import { SR } from "./plan.js";
4
4
  const mean = (a) => a.reduce((s, v) => s + v, 0) / a.length;
5
5
  function unitFrames(uid, dur, n) {
6
- // the unit index of each F0 frame (2 frames per duration step), -1 for BOS / EOS
7
- const fu = [];
8
- dur.forEach((d, l) => {
9
- for (let r = 0; r < d * 2; r++) fu.push(uid[l]);
10
- });
11
- fu.length = Math.min(fu.length, n);
12
- return fu;
6
+ // the unit index of each F0 frame (2 frames per duration step), -1 for BOS / EOS
7
+ const fu = [];
8
+ dur.forEach((d, l) => {
9
+ for (let r = 0; r < d * 2; r++)
10
+ fu.push(uid[l]);
11
+ });
12
+ fu.length = Math.min(fu.length, n);
13
+ return fu;
13
14
  }
14
15
  function valueAt(c, x) {
15
- // a unit's contour c (points spread evenly) at position x in [0, 1]
16
- if (c.length === 1) return c[0];
17
- const pos = x * (c.length - 1),
18
- a = Math.min(Math.floor(pos), c.length - 2);
19
- return c[a] + (c[a + 1] - c[a]) * (pos - a);
16
+ // a unit's contour c (points spread evenly) at position x in [0, 1]
17
+ if (c.length === 1)
18
+ return c[0];
19
+ const pos = x * (c.length - 1), a = Math.min(Math.floor(pos), c.length - 2);
20
+ return c[a] + (c[a + 1] - c[a]) * (pos - a);
20
21
  }
21
22
  function frameTargets(fu, U, n, dstep) {
22
- // semitone target per frame from the units' values, lowered by dstep per phrase (declination)
23
- const st = new Float64Array(n).fill(NaN);
24
- U.forEach(([, c, ph], k) => {
25
- if (c === null) return;
26
- const fr = [];
27
- for (let i = 0; i < fu.length; i++) if (fu[i] === k) fr.push(i);
28
- fr.forEach((i, j) => (st[i] = valueAt(c, fr.length > 1 ? j / (fr.length - 1) : 0) - dstep * ph));
29
- });
30
- return st;
23
+ // semitone target per frame from the units' values, lowered by dstep per phrase (declination)
24
+ const st = new Float64Array(n).fill(NaN);
25
+ U.forEach(([, c, ph], k) => {
26
+ if (c === null)
27
+ return;
28
+ const fr = [];
29
+ for (let i = 0; i < fu.length; i++)
30
+ if (fu[i] === k)
31
+ fr.push(i);
32
+ fr.forEach((i, j) => (st[i] = valueAt(c, fr.length > 1 ? j / (fr.length - 1) : 0) - dstep * ph));
33
+ });
34
+ return st;
31
35
  }
32
36
  function anchorPhrases(st, f0, fu, U) {
33
- // values are relative: each phrase keeps its shape and takes the mean level of the engine's own F0 there
34
- const n = f0.length,
35
- lo = Array.from(f0, (v) => Math.log2(Math.max(v, 1)) * 12);
36
- const phr = Array.from({ length: n }, (_, i) => (i < fu.length && fu[i] >= 0 ? U[fu[i]][2] : -1));
37
- const ok = Array.from({ length: n }, (_, i) => !isNaN(st[i]) && f0[i] > 60);
38
- const tgt = new Float64Array(n).fill(NaN);
39
- for (const ph of new Set(phr.filter((_, i) => ok[i]))) {
40
- const sel = [];
41
- for (let i = 0; i < n; i++) if (ok[i] && phr[i] === ph) sel.push(i);
42
- const ms = mean(sel.map((i) => st[i])),
43
- ml = mean(sel.map((i) => lo[i]));
44
- for (const i of sel) tgt[i] = st[i] - ms + ml;
45
- }
46
- return tgt;
37
+ // values are relative: each phrase keeps its shape and takes the mean level of the engine's own F0 there
38
+ const n = f0.length, lo = Array.from(f0, (v) => Math.log2(Math.max(v, 1)) * 12);
39
+ const phr = Array.from({ length: n }, (_, i) => (i < fu.length && fu[i] >= 0 ? U[fu[i]][2] : -1));
40
+ const ok = Array.from({ length: n }, (_, i) => !isNaN(st[i]) && f0[i] > 60);
41
+ const tgt = new Float64Array(n).fill(NaN);
42
+ for (const ph of new Set(phr.filter((_, i) => ok[i]))) {
43
+ const sel = [];
44
+ for (let i = 0; i < n; i++)
45
+ if (ok[i] && phr[i] === ph)
46
+ sel.push(i);
47
+ const ms = mean(sel.map((i) => st[i])), ml = mean(sel.map((i) => lo[i]));
48
+ for (const i of sel)
49
+ tgt[i] = st[i] - ms + ml;
50
+ }
51
+ return tgt;
47
52
  }
48
53
  function interpolate(tgt, xs) {
49
- // fill the frames between targets linearly, and hold the first / last target outside them
50
- const n = tgt.length,
51
- full = new Float64Array(n);
52
- let q = 0;
53
- for (let i = 0; i < n; i++) {
54
- if (i <= xs[0]) full[i] = tgt[xs[0]];
55
- else if (i >= xs[xs.length - 1]) full[i] = tgt[xs[xs.length - 1]];
56
- else {
57
- while (xs[q + 1] < i) q++;
58
- const a = xs[q],
59
- b = xs[q + 1];
60
- full[i] = tgt[a] + ((tgt[b] - tgt[a]) * (i - a)) / (b - a);
54
+ // fill the frames between targets linearly, and hold the first / last target outside them
55
+ const n = tgt.length, full = new Float64Array(n);
56
+ let q = 0;
57
+ for (let i = 0; i < n; i++) {
58
+ if (i <= xs[0])
59
+ full[i] = tgt[xs[0]];
60
+ else if (i >= xs[xs.length - 1])
61
+ full[i] = tgt[xs[xs.length - 1]];
62
+ else {
63
+ while (xs[q + 1] < i)
64
+ q++;
65
+ const a = xs[q], b = xs[q + 1];
66
+ full[i] = tgt[a] + ((tgt[b] - tgt[a]) * (i - a)) / (b - a);
67
+ }
61
68
  }
62
- }
63
- return full;
69
+ return full;
64
70
  }
65
71
  function movingAverage(full, smooth) {
66
- const n = full.length,
67
- h = smooth >> 1,
68
- sm = new Float64Array(n);
69
- for (let i = 0; i < n; i++) {
70
- let s = 0;
71
- for (let j = -h; j <= h; j++) s += full[Math.min(n - 1, Math.max(0, i + j))];
72
- sm[i] = s / smooth;
73
- }
74
- return sm;
72
+ const n = full.length, h = smooth >> 1, sm = new Float64Array(n);
73
+ for (let i = 0; i < n; i++) {
74
+ let s = 0;
75
+ for (let j = -h; j <= h; j++)
76
+ s += full[Math.min(n - 1, Math.max(0, i + j))];
77
+ sm[i] = s / smooth;
78
+ }
79
+ return sm;
75
80
  }
76
81
  // the engine's F0 with the YomiScript's pitch values put in (frames without a value keep the engine's F0)
77
82
  export function f0Override(f0, uid, dur, U, smooth = 5, dstep = 0.6) {
78
- const fu = unitFrames(uid, dur, f0.length);
79
- const tgt = anchorPhrases(frameTargets(fu, U, f0.length, dstep), f0, fu, U);
80
- const xs = [];
81
- for (let i = 0; i < f0.length; i++) if (!isNaN(tgt[i])) xs.push(i);
82
- if (!xs.length) return Float32Array.from(f0);
83
- const sm = movingAverage(interpolate(tgt, xs), smooth);
84
- return Float32Array.from(f0, (v, i) => (isNaN(tgt[i]) ? v : 2 ** (sm[i] / 12)));
83
+ const fu = unitFrames(uid, dur, f0.length);
84
+ const tgt = anchorPhrases(frameTargets(fu, U, f0.length, dstep), f0, fu, U);
85
+ const xs = [];
86
+ for (let i = 0; i < f0.length; i++)
87
+ if (!isNaN(tgt[i]))
88
+ xs.push(i);
89
+ if (!xs.length)
90
+ return Float32Array.from(f0);
91
+ const sm = movingAverage(interpolate(tgt, xs), smooth);
92
+ return Float32Array.from(f0, (v, i) => (isNaN(tgt[i]) ? v : 2 ** (sm[i] / 12)));
85
93
  }
86
94
  const rms = (a) => Math.sqrt(a.reduce((s, v) => s + v * v, 0) / a.length);
87
95
  function trim(a, lead = true, th = 0.01) {
88
- let i0 = -1,
89
- i1 = -1;
90
- for (let i = 0; i < a.length; i++)
91
- if (Math.abs(a[i]) > th) {
92
- if (i0 < 0) i0 = i;
93
- i1 = i;
94
- }
95
- if (i0 < 0) return a;
96
- return a.slice(lead ? Math.max(i0 - 240, 0) : 0, Math.min(a.length, i1 + 480));
96
+ let i0 = -1, i1 = -1;
97
+ for (let i = 0; i < a.length; i++)
98
+ if (Math.abs(a[i]) > th) {
99
+ if (i0 < 0)
100
+ i0 = i;
101
+ i1 = i;
102
+ }
103
+ if (i0 < 0)
104
+ return a;
105
+ return a.slice(lead ? Math.max(i0 - 240, 0) : 0, Math.min(a.length, i1 + 480));
97
106
  }
98
107
  // the audio of several sections as one: trimmed, level-matched, crossfaded, with a short gap
99
108
  export function join(P) {
100
- const tgt = rms(P[0]);
101
- let out = Float32Array.from(trim(P[0], false));
102
- const n = Math.round(0.015 * SR),
103
- gap = Math.round(0.06 * SR);
104
- for (const p0 of P.slice(1)) {
105
- const g = tgt / Math.max(rms(p0), 1e-6);
106
- const p = Float32Array.from(trim(p0), (v) => v * g);
107
- for (let i = 0; i < n && i < out.length; i++) out[out.length - n + i] *= 1 - i / (n - 1);
108
- for (let i = 0; i < n && i < p.length; i++) p[i] *= i / (n - 1);
109
- const o = new Float32Array(out.length + gap + p.length);
110
- o.set(out);
111
- o.set(p, out.length + gap);
112
- out = o;
113
- }
114
- let mx = 0;
115
- for (const v of out) mx = Math.max(mx, Math.abs(v));
116
- const k = Math.max(1, mx / 0.95);
117
- return out.map((v) => v / k);
109
+ const tgt = rms(P[0]);
110
+ let out = Float32Array.from(trim(P[0], false));
111
+ const n = Math.round(0.015 * SR), gap = Math.round(0.06 * SR);
112
+ for (const p0 of P.slice(1)) {
113
+ const g = tgt / Math.max(rms(p0), 1e-6);
114
+ const p = Float32Array.from(trim(p0), (v) => v * g);
115
+ for (let i = 0; i < n && i < out.length; i++)
116
+ out[out.length - n + i] *= 1 - i / (n - 1);
117
+ for (let i = 0; i < n && i < p.length; i++)
118
+ p[i] *= i / (n - 1);
119
+ const o = new Float32Array(out.length + gap + p.length);
120
+ o.set(out);
121
+ o.set(p, out.length + gap);
122
+ out = o;
123
+ }
124
+ let mx = 0;
125
+ for (const v of out)
126
+ mx = Math.max(mx, Math.abs(v));
127
+ const k = Math.max(1, mx / 0.95);
128
+ return out.map((v) => v / k);
118
129
  }
119
130
  // 16-bit mono WAV
120
131
  export function wav(a, sr = SR) {
121
- const b = new ArrayBuffer(44 + a.length * 2),
122
- d = new DataView(b);
123
- const w = (o, s) => [...s].forEach((c, i) => d.setUint8(o + i, c.charCodeAt(0)));
124
- w(0, "RIFF");
125
- d.setUint32(4, 36 + a.length * 2, true);
126
- w(8, "WAVE");
127
- w(12, "fmt ");
128
- d.setUint32(16, 16, true);
129
- d.setUint16(20, 1, true);
130
- d.setUint16(22, 1, true);
131
- d.setUint32(24, sr, true);
132
- d.setUint32(28, sr * 2, true);
133
- d.setUint16(32, 2, true);
134
- d.setUint16(34, 16, true);
135
- w(36, "data");
136
- d.setUint32(40, a.length * 2, true);
137
- a.forEach((v, i) => d.setInt16(44 + i * 2, Math.max(-1, Math.min(1, v)) * 32767, true));
138
- return b;
132
+ const b = new ArrayBuffer(44 + a.length * 2), d = new DataView(b);
133
+ const w = (o, s) => [...s].forEach((c, i) => d.setUint8(o + i, c.charCodeAt(0)));
134
+ w(0, "RIFF");
135
+ d.setUint32(4, 36 + a.length * 2, true);
136
+ w(8, "WAVE");
137
+ w(12, "fmt ");
138
+ d.setUint32(16, 16, true);
139
+ d.setUint16(20, 1, true);
140
+ d.setUint16(22, 1, true);
141
+ d.setUint32(24, sr, true);
142
+ d.setUint32(28, sr * 2, true);
143
+ d.setUint16(32, 2, true);
144
+ d.setUint16(34, 16, true);
145
+ w(36, "data");
146
+ d.setUint32(40, a.length * 2, true);
147
+ a.forEach((v, i) => d.setInt16(44 + i * 2, Math.max(-1, Math.min(1, v)) * 32767, true));
148
+ return b;
139
149
  }
140
- //# sourceMappingURL=render.js.map
150
+ //# sourceMappingURL=render.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yomiscript/kokoro",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Kokoro-82M Katarite: YomiScript -> Kokoro input -> audio (onnxruntime-web w16 in the browser, onnxruntime-node fp32 in Node)",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {