A powerful yet easy-to-use toolbox to manipulate oto.ini, UTAU's voicebank labeling format.
KiraOtoToolbox comes with a set of tools to fit certain needs in oto's editing.
Detect entries with possible duplicated aliases (like a, a, a2, a3, ...), and:
Remove entries with no alias and 0 value, often happens to edit a dedicated part of oto.ini, when setParam will create dummy entries for wav files without any.
Merge two oto.ini and control behavior when a part of their entries have the same alias. You can ask it to replace, skip or keep all. Useful when updating a part of oto.ini in a separate file.
Extract CV/VC part to separate file or reorder them separately in the same file when being asked to. UTAU tends to order oto entries by their filename, which mix them together. But when editing oto.ini, switching CV/VC Part one-by-one constantly while editing is very ...awful. So with this tool, you can make yourself focusing on one side.
Remove entries whose alias meet your rule.
Replace oto's alias or copy it to a new item with the rules you set. You can use this to convert your alias between romaji <-> hiragana, copy needed entries in Syo-CHN, and so on.
Overlap can be a pain to edit as it can be very mechanical, so why not just hand it to programs? This tool can set overlap in 1/3 (between left and pre-utterance), set to 0/-5(or value you like) for certain alias like plosives, which can be a very universal solution for this value.
When dealing with CV voicebank, you will need vowel crossfading. You can generate crossfaded vowel entries with this tool, whether you want to copy to a new entry (* V) or just replace it.
We all met entries whose values are like "249.999", "83.333", ... It can be very annoying for some people. With this tool, you can trim them to the value that makes you satisfied, like 250, 83, ...
UTAU uses negativity of right values to indicate different types of oto entry's right bound. When positive it's calculated from the end of WAV, while negative means it's calculated from the left. You can convert between them with this tool.
This tool will keep preutterance's absolute position while changing other values relatively. In other words, it calculate new left value and change it based on the new pattern you input above. If new left value is less than 0, the entry's left and preutterance will be kept as original.
Sometimes you will find your oto.ini template's tempo (BPM) not matching the BGM you use. It is a nightmare to just use it and dive into the hell of long-distance dragging. Though not very accurate, this tool can save your sanity a lot.
The name is pretty self-explained.
This one too.
A copy for feature with the same name in setParam.
Replace oto's filename with the rules you set. It will rename the actual files too. For users whose computer is not in the JPN region, it can also modify these names in system-encoding-represented Shift-JIS.
With the tool "Perform multiple actions", you can construct an action chain to perform on your input. You can save them via preset, and use them later.
You can also write your own code with the tool "Javascript scripting" when our tools were not fit your needs.
All tools in KiraOtoToolbox can have presets, and a bunch of them comes with some handy built-in ones. You can also export your preset and import others' ones.
You can switch to the batch mode in the tool and process multiple files with the same options. Combined with "Perform multiple actions" tool, it can be very fast and powerful.
By the way, you can drag a batch of file into path input in batch mode.
You can control decimal precision for fields in saving options.
You may have oto.ini that is not saved using Shift-JIS (they should, but some programs don't get it). KiraOtoToolbox will detect them when loading and tell you to read using their actual encoding.
...or it should be called as "CLI parameter mode". When opened with paths in CLI parameter, KiraOtoToolbox will use them as input path automatically. You can drag files on KiraOtoToolbox to trigger this.
setParam has support to pass file path to its plugins. The plugin.txt to support setParam is include with release binaries.
You can switch between light/dark ui mode.
KiraOtoToolbox can be translated into languages. Currently, only English and Simplified Chinese are present.
KiraOtoToolbox will check if their is new version automatically.
You need to build KFR audio library first, since it's a complex cmake project and can not just plug into qmake building trees.
KiraOtoToolbox don't use the DFT part of KFR, so all supported compliers is ok.
Other dependencies are all git subtree
in this repo, and all configured in .pro
file. So you can just compile it in Qt Creator.
It's recommended to using Qt 5.15 since I use it while developing this. But Qt 6 shouldn't change that much to break code compatibility with this project (no guarantee though).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/.
In addition, as a special exception, the copyright holders give
permission to link the code of portions of this program with the
OpenSSL library under certain conditions as described in each
individual source file, and distribute linked combinations
including the two.
You must obey the GNU General Public License in all respects
for all of the code used other than OpenSSL. If you modify
file(s) with this exception, you may extend this exception to your
version of the file(s), but you are not obligated to do so. If you
do not wish to do so, delete this exception statement from your
version. If you delete this exception statement from all source
files in the program, then also delete it here.