@yomiscript/core 0.1.1 → 0.1.3
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/dist/ja_contour.d.ts +3 -0
- package/dist/ja_contour.js +194 -0
- package/dist/ja_contour.js.map +1 -0
- package/dist/yomite.d.ts +1 -1
- package/dist/yomite.js +24 -19
- package/dist/yomite.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/** feature -> its weights when it is a feature of the mora two before, one before, the mora itself, one after and two
|
|
2
|
+
* after; each three, for the start, the middle and the end of the mora whose values are computed */
|
|
3
|
+
const W = {
|
|
4
|
+
H: [0.9002, 0.6245, 0.3215, 1.3808, 1.0254, 0.5983, 0.565, 1.7001, 1.8248, -1.05, -1.5881, -0.8964, -0.3759, -0.5026, -0.9493],
|
|
5
|
+
H_bgx: [0.7035, 1.3411, 1.2794, -1.1374, 0.0261, 0.8996, -1.254, -1.3526, -1.0862, -0.5962, -0.5955, -1.0037, -0.845, -0.8275, -0.4163],
|
|
6
|
+
bg_i: [-0.1178, -0.0998, -0.0798, -0.2072, -0.1907, -0.1408, -0.2166, -0.2405, -0.241, -0.2701, -0.2669, -0.188, 0.985, 0.9193, 0.7848],
|
|
7
|
+
bgx: [4.2458, 3.7873, 2.8561, -1.6189, -2.7211, -1.2077, -0.2683, 1.1098, 2.1054, -1.8795, -2.6873, -5.2917, 0.1992, 0.0098, 1.3627],
|
|
8
|
+
bgx2: [-4.4474, -5.2164, -4.7622, -0.0694, 0.8544, 0.7853, -0.0263, -0.0486, -2.1205, -1.1349, -2.3836, -0.3259, 1.3054, 2.1072, 1.0512],
|
|
9
|
+
down: [0.6604, 0.681, 0.683, 0.0854, 0.1896, 0.2217, -0.9145, -0.9049, -0.8523, -0.0844, -0.141, -0.1573, 0.1517, 0.1302, 0.1516],
|
|
10
|
+
down2: [0.033, -0.0123, -0.0685, -0.0616, -0.0556, -0.1665, 0.2633, 0.1512, 0.2007, -0.0371, 0.1788, 0.2903, -0.2586, -0.2752, -0.3206],
|
|
11
|
+
down_H: [0.0853, 0.0532, 0.0866, -0.0248, -0.0218, -0.0521, -0.183, -0.1396, -0.0864, -0.0395, -0.0728, -0.133, 0.098, 0.054, 0.0153],
|
|
12
|
+
end1: [-1.2792, -1.2966, -0.8737, -0.1654, -0.7334, -1.4384, 0.9391, 0.8616, -0.0015, -0.6398, -0.4224, -0.9231, -0.6443, -0.4942, -0.5097],
|
|
13
|
+
end2: [-1.412, -0.2462, 0.3939, -3.8816, -5.2515, -4.1065, 1.8325, 1.5753, 2.519, 1.0552, 0.4738, 0.4102, -0.0233, -0.1786, -0.3303],
|
|
14
|
+
fL_first: [0.1653, 0.0453, 0.068, 0.4563, 0.3948, 0.4495, 0.8631, 0.7041, 0.4589, 1.0385, 1.0142, 1.6106, 0.5297, 0.9794, 1.0718],
|
|
15
|
+
final: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.742, 0.7824, 0.4615, -0.7703, -0.063, -0.6452, -0.617, -0.6344, -0.6791],
|
|
16
|
+
final2: [0.0, 0.0, 0.0, 0.742, 0.7824, 0.4615, -0.7703, -0.063, -0.6452, -0.617, -0.6344, -0.6791, -0.2414, -0.3559, -0.3271],
|
|
17
|
+
final_flat: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.4009, -1.3712, -1.3618, 0.3137, 0.041, -0.0036, 0.2201, 0.3918, 0.5048],
|
|
18
|
+
first_H: [-0.1853, -0.1971, -0.2049, -0.1373, -0.4881, -0.5385, -0.665, -0.3334, 0.1081, -0.3786, -0.2675, -0.4049, -0.3928, -0.4003, -0.2335],
|
|
19
|
+
first_L: [0.945, 1.1908, 0.96, -0.5028, -0.1685, 0.2206, -1.4596, -0.6267, -0.2274, -1.1982, -1.5764, -1.5376, -0.5159, -0.7742, -0.8003],
|
|
20
|
+
first_phrase: [0.0127, -0.0709, -0.0488, 0.2931, 0.3346, 0.3044, 0.1126, 0.2132, 0.1748, -0.0805, -0.0214, 0.0894, -0.2158, -0.2546, -0.1815],
|
|
21
|
+
flat: [-0.0741, 0.0203, 0.1424, -0.0759, -0.0241, -0.1504, 0.0957, -0.0299, 0.0426, 0.1092, 0.1729, 0.1599, -0.3294, -0.4087, -0.4863],
|
|
22
|
+
hpos: [-0.1237, -0.1573, -0.1597, 0.0137, -0.0102, -0.0059, 0.1425, 0.1649, 0.1253, 0.0167, 0.061, 0.0962, 0.0248, 0.0108, 0.0143],
|
|
23
|
+
last_bg: [0.5075, 0.4125, 0.3348, -0.3829, -0.0557, 0.2068, -0.7729, -0.8791, -0.9558, 0.1922, 0.0249, -0.0968, 0.0231, 0.0844, 0.1193],
|
|
24
|
+
lpos: [0.1547, 0.1469, 0.1278, 0.0284, -0.0266, -0.0695, -0.3351, -0.0345, -0.0278, -0.3222, -0.4992, -0.3907, 0.2829, 0.1935, -0.0493],
|
|
25
|
+
nucm: [-0.0136, -0.0876, -0.1316, 0.5455, -0.0205, -0.2689, 0.3811, 0.5184, 0.4849, 0.6471, 0.6156, 0.413, 0.879, 1.1209, 1.4015],
|
|
26
|
+
nucm_bgx: [-2.9568, -2.9602, -2.3205, -1.5384, -2.6502, -3.0136, 1.4722, 0.9811, -0.345, 0.8307, 0.7888, 1.5857, -0.3531, -0.6366, -0.9942],
|
|
27
|
+
phrase_last: [0.6379, 1.4142, 1.3112, -0.8891, -0.3409, 0.0838, -0.7195, -0.9274, -1.011, -0.6154, -0.6281, -0.7299, -0.0794, -0.1831, -0.2949],
|
|
28
|
+
pib: [-0.2117, 0.0299, -0.2356, -0.3793, -0.4637, -0.0739, 0.52, 0.4323, 0.6576, 1.062, 0.8634, 0.4344, 1.2675, 1.3258, 1.344],
|
|
29
|
+
post: [-0.4051, -0.0661, 0.0991, -1.2025, -1.1509, -0.8386, -0.1415, -2.0912, -2.4033, 1.9281, 2.8822, 1.899, 0.4473, 0.6637, 1.7055],
|
|
30
|
+
post1: [-0.2523, -0.0196, 0.0216, -0.0136, -0.0876, -0.1316, 0.5455, -0.0205, -0.2689, 0.3811, 0.5184, 0.4849, 0.6471, 0.6156, 0.413],
|
|
31
|
+
post_bgx: [0.2751, 0.0445, -0.0376, 1.8007, 2.7418, 2.2926, -0.81, 0.915, 1.9724, -1.5385, -2.215, -1.8492, -1.9673, -1.8981, -2.0898],
|
|
32
|
+
prepause: [-1.2792, -1.2966, -0.8737, -0.1654, -0.7334, -1.4384, 1.034, 0.8612, -0.3998, -0.4765, -0.6985, -1.0892, -0.6168, -0.3327, -0.3217],
|
|
33
|
+
q: [1.1407, 0.0176, -0.408, 1.6861, 1.3924, 1.0494, -0.6256, 0.9076, 3.459, -0.5544, -0.4817, -0.3009, -0.1924, -0.0997, 0.102],
|
|
34
|
+
q2: [1.6861, 1.3924, 1.0494, -0.6256, 0.9076, 3.459, -0.5544, -0.4817, -0.3009, -0.1924, -0.0997, 0.102, -0.4276, -0.5058, -0.2732],
|
|
35
|
+
q_H: [-2.7032, -3.3992, -4.0897, -3.2517, -4.1292, -5.0719, 4.3189, 3.2602, 1.1747, 3.8848, 3.5671, 3.4362, 3.0486, 2.8146, 2.9606],
|
|
36
|
+
size: [-0.0719, -0.0615, -0.0163, 0.148, 0.1233, 0.0278, 0.0116, 0.0082, 0.1003, 0.0914, 0.094, 0.0257, -0.1798, -0.1638, -0.1474],
|
|
37
|
+
size_s: [1.0275, 1.3039, 0.8172, -1.3415, -1.1954, -0.3495, -0.2296, -0.412, -0.9877, -0.5874, -0.6417, -0.1048, 1.0772, 1.0228, 0.8462],
|
|
38
|
+
sx: [-9.5757, -8.8481, -8.9357, 2.1646, 2.0521, 1.9042, 5.0785, 4.4843, 4.9879, 2.3678, 1.1175, 1.9047, -1.3746, -0.359, -1.2773],
|
|
39
|
+
to_end: [-0.6638, -1.6697, -1.6024, 0.7618, 1.4441, 0.8868, 0.915, 1.0043, 1.1744, -0.3403, -0.64, -0.5584, -0.6821, -0.4327, -0.3046],
|
|
40
|
+
v_N: [0.2137, 0.1937, 0.1708, 0.5322, 0.3068, 0.0298, 0.8715, 0.6635, 0.6917, -0.1751, 0.2909, 0.9904, -0.0756, -0.1468, -0.2913],
|
|
41
|
+
v_Q: [0.7782, 0.7814, 0.6954, 0.2751, 0.4095, 0.5268, -0.2791, -0.1259, 0.7242, -0.0587, -0.1029, -0.3758, 0.3047, 0.2125, 0.1389],
|
|
42
|
+
v_R: [0.2472, 0.2655, 0.2049, 0.2652, 0.1909, 0.0837, 0.4369, 0.4015, 0.3504, 0.0717, 0.107, 0.522, 0.0951, -0.0175, -0.0529],
|
|
43
|
+
v_a: [0.3896, 0.4734, 0.3894, -0.0557, -0.05, 0.0011, -0.2725, -0.4061, -0.2823, -0.1752, -0.2214, -0.2276, -0.0928, -0.1298, -0.0804],
|
|
44
|
+
v_e: [0.2605, 0.3522, 0.2774, -0.052, -0.092, -0.0942, 0.0582, -0.0963, -0.2382, -0.0165, -0.0492, -0.1643, -0.0568, -0.0339, 0.0542],
|
|
45
|
+
v_i: [0.3918, 0.4401, 0.3216, 0.2752, 0.1394, 0.1243, 0.061, 0.2132, 0.1623, 0.0109, 0.0293, 0.047, 0.0162, -0.0253, 0.0306],
|
|
46
|
+
v_o: [0.2724, 0.2843, 0.1642, -0.0154, -0.0322, -0.0145, -0.058, -0.108, -0.2545, 0.0749, -0.0041, -0.0806, 0.1135, 0.104, 0.1997],
|
|
47
|
+
v_u: [0.2996, 0.3514, 0.206, 0.2983, 0.1821, 0.0904, -0.1201, 0.2092, 0.2118, 0.0002, -0.0235, -0.2074, -0.0418, -0.0817, -0.0408],
|
|
48
|
+
vl: [-0.0228, -0.0625, -0.0547, 0.1263, 0.0789, 0.0544, 1.1619, 0.4086, 0.311, -0.0161, 0.1576, 0.1844, 0.0384, 0.0778, 0.1331],
|
|
49
|
+
};
|
|
50
|
+
const POINT = [1.0902, 1.4534, 1.0078];
|
|
51
|
+
const CTX = 2;
|
|
52
|
+
const VOICELESS = new Set(["k", "kʲ", "s", "ɕ", "t", "tɕ", "ts", "h", "ç", "ɸ", "p", "pʲ"]);
|
|
53
|
+
const VOWEL = { a: "a", i: "i", ɯ: "u", e: "e", o: "o" };
|
|
54
|
+
const size = (s) => s.phrases.reduce((n, p) => n + p.morae.length, 0);
|
|
55
|
+
function sentences(sec) {
|
|
56
|
+
// the morae by sentence (an inner ↘ ends one) and accent phrase; ↗ ends a question and, inside, a breath group
|
|
57
|
+
const out = [{ phrases: [], qs: new Set() }];
|
|
58
|
+
let pause = false, chunk = -1;
|
|
59
|
+
for (const t of sec.toks) {
|
|
60
|
+
const cur = out[out.length - 1];
|
|
61
|
+
if (t.kind === "unit") {
|
|
62
|
+
if (t.chunk !== chunk || !cur.phrases.length)
|
|
63
|
+
cur.phrases.push({ morae: [], pause });
|
|
64
|
+
cur.phrases[cur.phrases.length - 1].morae.push(t);
|
|
65
|
+
chunk = t.chunk ?? 0;
|
|
66
|
+
pause = false;
|
|
67
|
+
}
|
|
68
|
+
else if (t.kind === "pause")
|
|
69
|
+
pause = true;
|
|
70
|
+
else if (t.kind === "punct" && t.sent && t.sym === "?") {
|
|
71
|
+
cur.qs.add(size(cur) - 1);
|
|
72
|
+
pause = true;
|
|
73
|
+
}
|
|
74
|
+
else if (t.kind === "punct" && t.sent) {
|
|
75
|
+
out.push({ phrases: [], qs: new Set() });
|
|
76
|
+
pause = false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (sec.end === "?")
|
|
80
|
+
out[out.length - 1].qs.add(size(out[out.length - 1]) - 1);
|
|
81
|
+
return out.filter((s) => s.phrases.length);
|
|
82
|
+
}
|
|
83
|
+
const b = (x) => (x ? 1 : 0);
|
|
84
|
+
function phraseRows(M, at) {
|
|
85
|
+
// one row of features per mora; H / L from the marks as the rules read them (high from the start without ꜛ)
|
|
86
|
+
const n = M.length, f = M.findIndex((m) => m.fall), nuc = f < 0 ? 0 : f + 1;
|
|
87
|
+
let high = !M[0].hasRise, hk = 0;
|
|
88
|
+
return M.map((m, j) => {
|
|
89
|
+
const H = high ? 1 : 0, i = at.i + j;
|
|
90
|
+
const r = {
|
|
91
|
+
...{ H, first_L: b(j === 0 && !high), hpos: H * hk, nucm: b(nuc > 0 && j === nuc - 1), post1: b(nuc > 0 && j === nuc) },
|
|
92
|
+
...{ post: b(nuc > 0 && j > nuc), lpos: nuc > 0 && j >= nuc ? j - nuc : 0, flat: b(nuc === 0 || nuc === n) },
|
|
93
|
+
...{ down: at.acc, down_H: at.acc * H, bgx: (i - at.bgS) / Math.max(at.bgE - at.bgS, 1), sx: i / at.total, bg_i: at.bgI },
|
|
94
|
+
...{ last_bg: b(at.bgE === at.total), final: b(i === at.total - 1), final2: b(i === at.total - 2) },
|
|
95
|
+
...{ prepause: b(at.pauses.has(i + 1)), q: b(at.qs.has(i)), q2: b(at.qs.has(i + 1)), phrase_last: b(j === n - 1) },
|
|
96
|
+
...{ size: n, first_phrase: b(at.first), size_s: Math.min(n, 8) / 8, first_H: H * b(j === 0), pib: Math.min(at.pib, 4) / 4 },
|
|
97
|
+
};
|
|
98
|
+
if (high)
|
|
99
|
+
hk++;
|
|
100
|
+
if (m.rise)
|
|
101
|
+
high = true;
|
|
102
|
+
if (m.fall)
|
|
103
|
+
high = false;
|
|
104
|
+
return { ...r, ...combined(r, at.bgE - i) };
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function combined(r, toEnd) {
|
|
108
|
+
// the place before the breath group's end, and products of the features above
|
|
109
|
+
return {
|
|
110
|
+
...{ to_end: Math.min(toEnd, 8) / 8, end1: b(toEnd === 1), end2: b(toEnd === 2), bgx2: r.bgx ** 2, down2: b(r.down >= 2) },
|
|
111
|
+
...{ H_bgx: r.H * r.bgx, post_bgx: (r.post + r.post1) * r.bgx, fL_first: r.first_L * r.first_phrase, final_flat: r.final * r.flat },
|
|
112
|
+
...{ q_H: r.q * r.H, nucm_bgx: r.nucm * r.bgx },
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function kind(m, prev) {
|
|
116
|
+
// what the mora is: its vowel, ɴ (N), the geminate (Q), or a long vowel (R: ː, or the vowel before it again without
|
|
117
|
+
// an onset)
|
|
118
|
+
if (m.mk === "N" || m.mk === "Q")
|
|
119
|
+
return m.mk;
|
|
120
|
+
if (m.mk === "R" || (!m.on && m.v === prev))
|
|
121
|
+
return "R";
|
|
122
|
+
return VOWEL[m.v ?? ""] ?? "a";
|
|
123
|
+
}
|
|
124
|
+
function moraRows(morae) {
|
|
125
|
+
// the mora's kind, and whether its onset is voiceless
|
|
126
|
+
let prev;
|
|
127
|
+
return morae.map((m) => {
|
|
128
|
+
const v = kind(m, prev);
|
|
129
|
+
if (v === "N" || v === "Q")
|
|
130
|
+
prev = undefined;
|
|
131
|
+
else if (v !== "R")
|
|
132
|
+
prev = m.v;
|
|
133
|
+
const r = { vl: b(VOICELESS.has(m.on ?? "")) };
|
|
134
|
+
for (const k of ["a", "i", "u", "e", "o", "N", "Q", "R"])
|
|
135
|
+
r["v_" + k] = b(v === k);
|
|
136
|
+
return r;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
function sentenceRows(s) {
|
|
140
|
+
const total = size(s), pauses = new Set(), rows = [];
|
|
141
|
+
let k = 0;
|
|
142
|
+
for (const p of s.phrases) {
|
|
143
|
+
if (p.pause)
|
|
144
|
+
pauses.add(k);
|
|
145
|
+
k += p.morae.length;
|
|
146
|
+
}
|
|
147
|
+
const bounds = [0, ...pauses, total].sort((x, y) => x - y);
|
|
148
|
+
let acc = 0, bgI = 0, pib = 0;
|
|
149
|
+
k = 0;
|
|
150
|
+
s.phrases.forEach((p, pi) => {
|
|
151
|
+
if (p.pause)
|
|
152
|
+
[acc, bgI, pib] = [0, bgI + 1, 0];
|
|
153
|
+
const bgS = Math.max(...bounds.filter((x) => x <= k)), bgE = Math.min(...bounds.filter((x) => x > k));
|
|
154
|
+
rows.push(...phraseRows(p.morae, { i: k, total, bgS, bgE, bgI, acc, pib, first: pi === 0 || p.pause, pauses, qs: s.qs }));
|
|
155
|
+
if (p.morae.some((m) => m.fall))
|
|
156
|
+
acc++;
|
|
157
|
+
k += p.morae.length;
|
|
158
|
+
pib++;
|
|
159
|
+
});
|
|
160
|
+
const what = moraRows(s.phrases.flatMap((p) => p.morae));
|
|
161
|
+
return rows.map((r, i) => ({ ...r, ...what[i] }));
|
|
162
|
+
}
|
|
163
|
+
function values(rows) {
|
|
164
|
+
// each mora's three values from its own row and its neighbours' (none past the sentence's ends)
|
|
165
|
+
return rows.map((_, i) => {
|
|
166
|
+
const v = [...POINT];
|
|
167
|
+
for (let d = -CTX; d <= CTX; d++) {
|
|
168
|
+
const r = rows[i + d];
|
|
169
|
+
if (!r)
|
|
170
|
+
continue;
|
|
171
|
+
for (const [f, x] of Object.entries(r))
|
|
172
|
+
for (let p = 0; p < 3; p++)
|
|
173
|
+
v[p] += x * W[f][(d + CTX) * 3 + p];
|
|
174
|
+
}
|
|
175
|
+
return v;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function median(a) {
|
|
179
|
+
const s = [...a].sort((x, y) => x - y), h = s.length >> 1;
|
|
180
|
+
return s.length % 2 ? s[h] : (s[h - 1] + s[h]) / 2;
|
|
181
|
+
}
|
|
182
|
+
/** the three pitch values of every Japanese mora of the section, from its accent marks */
|
|
183
|
+
export function jaContour(sec) {
|
|
184
|
+
const out = new Map();
|
|
185
|
+
for (const s of sentences(sec)) {
|
|
186
|
+
const V = values(sentenceRows(s));
|
|
187
|
+
const mid = median(V.flat());
|
|
188
|
+
s.phrases
|
|
189
|
+
.flatMap((p) => p.morae)
|
|
190
|
+
.forEach((m, i) => out.set(m, V[i].map((v) => v - mid)));
|
|
191
|
+
}
|
|
192
|
+
return out;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=ja_contour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ja_contour.js","sourceRoot":"","sources":["../src/ja_contour.ts"],"names":[],"mappings":"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"}
|
package/dist/yomite.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface RealizeOptions {
|
|
|
10
10
|
/** only the Japanese accent phrases that carry ꜛ or ꜜ get values (and no devoicing is written); everything else is
|
|
11
11
|
* left to the Katarite's own prosody. For callers that mark the accent only where they know it (D25) */
|
|
12
12
|
markedOnly?: boolean;
|
|
13
|
-
/** multiplies the values written for Japanese (1 by default
|
|
13
|
+
/** multiplies the values written for Japanese (1 by default) */
|
|
14
14
|
jaScale?: number;
|
|
15
15
|
}
|
|
16
16
|
export declare const f0Mark: (c: number[]) => string;
|
package/dist/yomite.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// Units that already carry <f0:…> are left as written. The Katarite renders only the values.
|
|
5
5
|
// Dialect is a Yomite setting, not part of YomiScript: realize(ys, {dialect:{ja:'osaka'}}).
|
|
6
6
|
import { parse, isJa, VOWELS } from "./yomiscript.js";
|
|
7
|
+
import { jaContour } from "./ja_contour.js";
|
|
7
8
|
const inStr = (ch, s) => s.includes(ch);
|
|
8
9
|
const fmt = (v) => String(Math.round(v * 100) / 100);
|
|
9
10
|
export const f0Mark = (c) => `<f0:${c.map(fmt).join(",")}>`;
|
|
@@ -12,8 +13,9 @@ export function applyEdits(s, E) {
|
|
|
12
13
|
s = s.slice(0, e.at) + e.ins + s.slice(e.at + (e.del || 0));
|
|
13
14
|
return s;
|
|
14
15
|
}
|
|
15
|
-
// Japanese: Tokyo-type pitch from ꜛ /
|
|
16
|
-
//
|
|
16
|
+
// Japanese: Tokyo-type pitch from ꜛ / ꜜ: three values per mora from the marks of the whole sentence (ja_contour.ts,
|
|
17
|
+
// D28, D29). Osaka (Keihan-type), per accent phrase: a phrase without ꜛ is high-onset, ꜛ marks where a low-onset phrase
|
|
18
|
+
// rises; the high stretch is flatter and vowels are not devoiced
|
|
17
19
|
const VLJ = ["k", "s", "ɕ", "t", "ʨ", "ʦ", "h", "ç", "ɸ", "p"];
|
|
18
20
|
const voicelessStart = (m) => !!m && m.mk === "mora" && VLJ.some((x) => (m.ipa ?? "").startsWith(x));
|
|
19
21
|
function devoiced(M, k, end) {
|
|
@@ -25,26 +27,29 @@ function devoiced(M, k, end) {
|
|
|
25
27
|
return true;
|
|
26
28
|
return k === M.length - 1 && end === "$" && (m.ipa === "sɯ" || m.ipa === "sɨ");
|
|
27
29
|
}
|
|
28
|
-
function
|
|
29
|
-
//
|
|
30
|
-
|
|
30
|
+
function osakaValue(high, k, hk) {
|
|
31
|
+
// high after ꜛ (or from the start without ꜛ), low after ꜜ; declining within the high stretch, flatter than Tokyo's
|
|
32
|
+
if (!high)
|
|
33
|
+
return k === 0 ? -2.0 : -2.5 - 0.3 * hk;
|
|
34
|
+
const v = 2.5 - 0.45 * hk;
|
|
35
|
+
return v >= 0 ? 2.5 - (2.5 - v) / 3 : v;
|
|
36
|
+
}
|
|
37
|
+
function jaPhrase(M, end, E, { devoice, scale, contour }) {
|
|
38
|
+
// one accent phrase: the devoiced vowels (Tokyo) and the values
|
|
39
|
+
let high = !M[0].hasRise, hk = 0;
|
|
31
40
|
M.forEach((m, k) => {
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const auto = devoice && !osaka && devoiced(M, k, end);
|
|
38
|
-
if (auto && !m.dev)
|
|
41
|
+
const c = contour ? contour.get(m) : !m.dev && [osakaValue(high, k, hk)];
|
|
42
|
+
if (c && !m.f0)
|
|
43
|
+
E.push({ at: m.end ?? 0, ins: f0Mark(c.map((v) => v * scale)) });
|
|
44
|
+
// after the value: at the same offset, the later edit lands first (the ̥ before <f0:…>)
|
|
45
|
+
if (devoice && contour && devoiced(M, k, end) && !m.dev)
|
|
39
46
|
E.push({ at: m.vend ?? 0, ins: "̥" });
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
if (!m.dev && !auto && !m.f0)
|
|
43
|
-
E.push({ at: m.end ?? 0, ins: f0Mark([v * scale]) });
|
|
47
|
+
if (high)
|
|
48
|
+
hk++;
|
|
44
49
|
if (m.rise)
|
|
45
|
-
|
|
50
|
+
high = true;
|
|
46
51
|
if (m.fall)
|
|
47
|
-
|
|
52
|
+
high = false;
|
|
48
53
|
});
|
|
49
54
|
}
|
|
50
55
|
const marked = (M) => M.some((m) => m.rise || m.fall);
|
|
@@ -57,7 +62,7 @@ function jaRules(sec, E, opt) {
|
|
|
57
62
|
C[c] ??= [];
|
|
58
63
|
C[c].push(t);
|
|
59
64
|
}
|
|
60
|
-
const o = {
|
|
65
|
+
const o = { devoice: !opt.markedOnly, scale: opt.jaScale ?? 1, contour: opt.dialect?.ja === "osaka" ? null : jaContour(sec) };
|
|
61
66
|
for (const M of C)
|
|
62
67
|
if (!opt.markedOnly || marked(M))
|
|
63
68
|
jaPhrase(M, sec.end, E, o);
|
package/dist/yomite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yomite.js","sourceRoot":"","sources":["../src/yomite.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,sHAAsH;AACtH,+FAA+F;AAC/F,6FAA6F;AAC7F,4FAA4F;AAC5F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAA4B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"yomite.js","sourceRoot":"","sources":["../src/yomite.ts"],"names":[],"mappings":"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"}
|