Skip to content

Latest commit

 

History

History
35 lines (27 loc) · 1.75 KB

File metadata and controls

35 lines (27 loc) · 1.75 KB

OpenUtau API

API for OpenUtau plugin development. They are also used in OpenUtau.Plugin.Builtin project. You can refer to them as example.

Phonemizer

Experimental. Subject to change. Feedback welcomed.

API documented in:

Heavily commented example implementations, from simplest to most complex:

The main method to implement is:

public abstract Phoneme[] Process(Note[] notes, Note? prevNeighbour, Note? nextNeighbour);

notes: A group of notes. The first note contains the lyric. The rest are extender notes with lyric "+" or "+n" (n is a number). prevNeighbour and nextNeighbour: Useful info for creating diphones, if applicable. E.g., creating proper leading diphone in VCV. returns: An array of phonemes, positioned relative to the first note. For actual document read comments in Phonemizer.cs.

A complete Phonemizer should:

  1. Produce phonemes (or diphones) from the lyric, and previous / next notes if exsit.
  2. Distribute phonemes to positions relative to the first note.
  3. Supports phonetic hinting, e.g., lyric like "read", "read[r iy d]" or "[r iy d]".
  4. Supports extender note aligments if the language is multisyllabic, i.e., "+n" notes.

Tips:

  • To load singer specific resouce, Implement resouce loading in SetSinger() and use singer.Location to look for files.
  • If uses expensive resource, load it lazily when the phonemizer is created the first time. Use your best adjudgement to decide its lifetime.