@onjmin/dtm
    Preparing search index...

    Type Alias VoiceModel

    歌唱合成モデルの実装シグネチャ

    type VoiceModel = {
        renderToCache?: (
            syllable: LyricSyllable,
            prevVowel: string,
            pitch: number,
            durationMs: number,
        ) => Promise<string | null>;
        reset?: () => void;
        scheduleCached?: (
            key: string,
            t0: number,
            peak: number,
            pan: number,
        ) => void;
        stopAll?: () => void;
        (syllable: LyricSyllable, e: PlayNoteEvent): void;
    }
    Index

    Properties

    renderToCache?: (
        syllable: LyricSyllable,
        prevVowel: string,
        pitch: number,
        durationMs: number,
    ) => Promise<string | null>

    1音節を合成してキャッシュへ積み、再生に使うキャッシュキーを返す(重い処理はここ)。 ストリーミングスケジューラが「先回り合成」に使う。直前母音は呼び出し側が明示で渡す (モデル内部状態に依存しないので、同一モデルを複数トラックで共有しても干渉しない)。 合成不能(該当音素なし・無声)なら null。klatt 等の軽量モデルは未実装でよい。

    reset?: () => void

    内部状態(直前母音など)を初期化する。

    scheduleCached?: (key: string, t0: number, peak: number, pan: number) => void

    renderToCache 済みのバッファを絶対時刻 t0(AudioContextクロック秒)へスケジュールする。 t0 は未来の任意時刻でよく、再生はオーディオスレッドが担うのでメインスレッドのもたつきに影響されない。

    stopAll?: () => void

    スケジュール済みの発音をすべて即停止する(停止・一時停止・シーク時)。