Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
9c07e90
Instance-based dictionary
Cadlaxa Oct 4, 2025
fcde2b5
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Nov 8, 2025
fd90a8a
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Mar 19, 2026
ff17204
SBP Update
Cadlaxa Mar 19, 2026
ed9e368
implement GetTransitionBasicLengthMsByOto per child phonemizer
Cadlaxa Mar 19, 2026
38cd838
Fix DeVCCV test file to reflect correct pitch suffix
Cadlaxa Mar 19, 2026
962e785
Fix phoneme overrides method
Cadlaxa Mar 21, 2026
ae5d8a2
fix EN C+V ending timings
Cadlaxa Mar 29, 2026
27b10cc
Utilize ValidateAlias on AliasFormat
Cadlaxa Mar 29, 2026
9ea15af
Fix override timings
Cadlaxa Mar 31, 2026
5301558
Fix empty array bug
Cadlaxa Apr 1, 2026
25e4d30
LANG2JA phonemizers: fix timings for VCV banks
Cadlaxa Apr 9, 2026
aed17c1
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa May 2, 2026
1e7fb1e
Fix conflicts with SBP
Cadlaxa May 2, 2026
b80b181
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa May 2, 2026
63a79ea
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa May 2, 2026
d9de4d8
Fixes in EN VCCV and ES VCCV
Cadlaxa May 3, 2026
92e35e7
Fix GetSymbols not updated from the pr conflict
Cadlaxa May 3, 2026
fce1b36
Implement CustomParameters
Cadlaxa May 10, 2026
50ebbfd
Don't include AssignAllAffixes in the CustomParameters
Cadlaxa May 10, 2026
68bd993
small fixes
Cadlaxa May 10, 2026
ae0bbee
fix double ending consonant for EN C+V
Cadlaxa May 15, 2026
7430073
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa May 21, 2026
3935493
Proper isGlide phoneme struct
Cadlaxa May 21, 2026
b85f965
Add "null" boundary + phoneme group fixes
Cadlaxa May 29, 2026
e827c95
Account for the negative overlap
Cadlaxa May 30, 2026
cf49163
fix glides in en-xsampa
Cadlaxa May 30, 2026
032ae64
Concatenate phoneme symbols with replacements
Cadlaxa Jun 1, 2026
7f2e23d
replace + with & and added parenthesis for phoneme groupings
Cadlaxa Jun 1, 2026
b27c98d
Fix yaml timings
Cadlaxa Jun 3, 2026
4168646
Fix EN C+P replacement group leftover
Cadlaxa Jun 9, 2026
0dadb5a
Native diphthong split
Cadlaxa Jun 10, 2026
2694fe2
Global dictionary
Cadlaxa Jun 10, 2026
2238d9c
Update C+V setSinger global dictionary
Cadlaxa Jun 10, 2026
edc10ea
fix FIL VCV & CVVC
Cadlaxa Jun 13, 2026
f2a0347
rework ValidateAlias on EN ARPA+
Cadlaxa Jun 15, 2026
906817f
fix yaml timings to override the 50ms endings + backup yaml rework
Cadlaxa Jun 17, 2026
fb1bba9
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Jun 17, 2026
f8fbe1a
fix yaml semantic versioning
Cadlaxa Jun 17, 2026
f60f6cb
Add support for vowel sustains
Cadlaxa Jun 18, 2026
6126d9d
fix validateAlias for glides
Cadlaxa Jun 18, 2026
fde6f3c
support specific aliases in vowel sustains
Cadlaxa Jun 18, 2026
9c3e8cb
Singer data should override the global data
Cadlaxa Jun 19, 2026
060a3f3
Fix global replacements
Cadlaxa Jun 19, 2026
f36587b
fix Yaml override GetTransitionBasicLengthMs
Cadlaxa Jun 20, 2026
d12541c
fix glides
Cadlaxa Jul 4, 2026
f5de428
Fix replacement prioritization
Cadlaxa Jul 26, 2026
4c9c2ff
fix en arpa+ glides for ccv
Cadlaxa Jul 26, 2026
3920026
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Aug 2, 2026
6f0cb5c
fix toneshift bug
Cadlaxa Aug 2, 2026
d356976
Native dynamic fallbacks (still 1:1)
Cadlaxa Aug 21, 2026
3d97661
fix en arpa+ test
Cadlaxa Aug 21, 2026
e39d805
phoneme tokenization, nextVowel, nextCC implementation + code cleanup
Cadlaxa Aug 24, 2026
21a5376
FIL phonemizer cleanup
Cadlaxa Aug 24, 2026
c3f5c42
FIL2JA debloat
Cadlaxa Aug 24, 2026
1b80418
fix phoneme index issue
Cadlaxa Aug 29, 2026
87262b4
fix vcc validation
Cadlaxa Aug 29, 2026
4926ab7
fix test file
Cadlaxa Aug 29, 2026
b70df3a
minor fixes in en arpa+
Cadlaxa Aug 30, 2026
46b1958
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Aug 30, 2026
f304b3f
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Aug 30, 2026
9189e5b
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Aug 31, 2026
381f19c
bridge autoconvel to GetTransitionBasicLengthMsByOto
Cadlaxa Aug 31, 2026
fd78d78
Expose phoneme attributes, fix auto velocity + implement auto alts
Cadlaxa Aug 31, 2026
9a793d3
fix arpa+ auto alts test
Cadlaxa Aug 31, 2026
51b80db
tweak VCCV SyncAttributes
Cadlaxa Aug 31, 2026
b309662
Fix autoconvel and implement viterbi auto alts
Cadlaxa Sep 1, 2026
e58ea7e
fixes
Cadlaxa Sep 1, 2026
27028de
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Sep 1, 2026
7ca2a5b
fix auto alts index out of range
Cadlaxa Sep 2, 2026
fdf4a78
fix vowel sustains vowel lookup
Cadlaxa Sep 2, 2026
b8bd5c2
Merge branch 'master' of https://github.com/stakira/OpenUtau into SBP…
Cadlaxa Sep 4, 2026
a998947
Port original Result Process auto convel
Cadlaxa Sep 4, 2026
659b2f5
fixes
Cadlaxa Sep 4, 2026
5036e0b
cache yaml dictionary
Cadlaxa Sep 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,226 changes: 1,010 additions & 1,216 deletions OpenUtau.Plugin.Builtin/ArpasingPlusPhonemizer.cs

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion OpenUtau.Plugin.Builtin/BrazilianPortugueseCVCPhonemizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,14 @@ protected override List<string> ProcessEnding(Ending ending) {

// change rh V -> r V
// since rh is a VC only alias, r is used as their natural approximant to make CV connections, if it happens
protected override string ValidateAlias(string alias) {
protected override string ValidateAlias(string alias, int tone = 0) {
string baseResolved = base.ValidateAlias(alias, tone);
if (!string.IsNullOrEmpty(baseResolved) && baseResolved != alias) {
if (HasOto(baseResolved, tone)) {
return baseResolved;
}
alias = baseResolved;
}
foreach (var vowel in vowels) {
alias = alias.Replace("rh" + " " + vowel, "r" + " " + vowel);
}
Expand Down
34 changes: 34 additions & 0 deletions OpenUtau.Plugin.Builtin/ENtoJAPhonemizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -460,5 +460,39 @@ private string ToHiragana(string romaji) {
hiragana = hiragana.Replace("ゔ", "ヴ");
return hiragana;
}

// Endings has 50 ticks gap
protected override bool NoGap => true;

protected override double GetTransitionBasicLengthMs(string alias, int tone, PhonemeAttributes attr) {
double otoLength = GetTransitionBasicLengthMsByOto(alias, tone, attr);

var parts = alias.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
bool isVcv = false;

if (parts.Length == 2) {
var startingVowels = new[] { "a", "i", "u", "e", "o", "n", "N", "-" };
var endingVowels = vowels;

// First part must be a vowel (or a rest)
if (startingVowels.Contains(parts[0])) {
string cv = parts[1];

// Second part must end in a vowel (Romaji CV) OR be Japanese (Hiragana/Katakana)
bool isRomajiVcv = endingVowels.Contains(cv.Last().ToString());
bool isJapaneseVcv = cv.Any(c => c > 0xFF);

if (isRomajiVcv || isJapaneseVcv) {
isVcv = true;
}
}
}

if (isVcv) {
return GetTransitionBasicLengthMsByConstant() * 1.0;
}

return otoLength;
}
}
}
34 changes: 34 additions & 0 deletions OpenUtau.Plugin.Builtin/EStoJAPhonemizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -669,5 +669,39 @@ private string ToHiragana(string romaji) {
hiragana = hiragana.Replace("ゔ", "ヴ");
return hiragana;
}

// Endings has 50 ticks gap
protected override bool NoGap => true;

protected override double GetTransitionBasicLengthMs(string alias, int tone, PhonemeAttributes attr) {
double otoLength = GetTransitionBasicLengthMsByOto(alias, tone, attr);

var parts = alias.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
bool isVcv = false;

if (parts.Length == 2) {
var startingVowels = new[] { "a", "i", "u", "e", "o", "n", "N", "-" };
var endingVowels = vowels;

// First part must be a vowel (or a rest)
if (startingVowels.Contains(parts[0])) {
string cv = parts[1];

// Second part must end in a vowel (Romaji CV) OR be Japanese (Hiragana/Katakana)
bool isRomajiVcv = endingVowels.Contains(cv.Last().ToString());
bool isJapaneseVcv = cv.Any(c => c > 0xFF);

if (isRomajiVcv || isJapaneseVcv) {
isVcv = true;
}
}
}

if (isVcv) {
return GetTransitionBasicLengthMsByConstant() * 1.0;
}

return otoLength;
}
}
}
Loading
Loading