@onjmin/dtm
    Preparing search index...

    Type Alias SpeakVoiceOptions

    VoiceModel.speak のオプション(ピッチは引数で受けるので含まない)。

    type SpeakVoiceOptions = {
        at?: number;
        awaitRender?: boolean | "first-chunk";
        destination?: AudioNode;
        emotion?: SpeechEmotion;
        expr?: VoiceExpression;
        lateChunks?: SpeechLateChunks;
        minBufferSec?: number;
        pan?: number;
        signal?: AbortSignal;
        style?: SpeakingStyleInput;
        volume?: number;
    }
    Index

    Properties

    at?: number

    最初のモーラを鳴らす AudioContext クロック秒。省略時は「今」(awaitRender で 待つものが揃いしだい)。過去を渡しても今に丸める(lateChunks: "skip" では、最初の子音の 先行発声が今より前にはみ出さない時刻まで丸める)。lateChunks: "shift" では、 先頭余白(最初の子音の先行発声)が今より前にはみ出すときも頭を切らずに後ろへずらすので、 これより遅れることがある(実際の時刻は SpeechHandle.startTime)。

    awaitRender?: boolean | "first-chunk"

    鳴らし始める前に合成をどこまで待つか。

    • false(既定)… 計画が出来たらすぐ時刻を決め、チャンクは届いた順に置く。 最初のチャンクの合成が間に合わないと、そのぶん頭が欠ける(lateChunks 既定 "skip")。実測では速い音源でも 0〜450ms、遅い音源では 3.3 秒の行の 2.3 秒が欠けた。 既定を変えると呼び出し側の待ちが変わるので従来どおりにしてあるが、セリフには使わないこと。
    • "first-chunk" … 最初のチャンクが出来てから時刻を決める。長文でも待ちは 最初の数モーラぶんだけで、頭から鳴る。後続が間に合わなければ時間軸ごと後ろへ ずらす(lateChunks 既定 "shift")。セリフの読み上げはこれを勧める。 待ちを増やして途中の間を減らすなら SpeakVoiceOptions.minBufferSec。
    • true … 全チャンクの合成完了を待つ。長文をぴったり揃えて出したいとき用。
    destination?: AudioNode

    出力先ノード(既定は音源共有の出力= singingVoices のマスタ)。

    emotion?: SpeechEmotion

    感情(HTS 音声モデル neutral / happy / sad / angry の差し替え)。既定 neutral。 初めて使う感情は約 2MB を取得してから鳴る(SingingVoices.prepareSpeech の emotions で先取りできる)。

    声色(ジェンダー/息/張り)。

    lateChunks?: SpeechLateChunks

    置き場所を過ぎてから届いたチャンク(合成が再生に追いつかなかった分)の扱い。

    • "shift" … 飛ばさず、そのチャンクと後続すべてを後ろへずらして頭から鳴らす (間が空き、後ろのモーラは遅れて鳴る。遅れの合計は SpeechHandle.shiftSec)。
    • "skip" … 時刻は動かさず、遅れたぶんを飛ばして途中から鳴らす(言葉が欠ける)。

    既定は awaitRender: "first-chunk" なら "shift"、それ以外は "skip"(従来どおり)。

    minBufferSec?: number

    awaitRender: "first-chunk" のとき、鳴らし始める前に合成しておく語りの長さ(秒。 最初のモーラから数える)。既定 0(最初のチャンクだけ)。語りがこれより短ければ全部を待つ。

    最初のチャンクは数モーラしかないので、合成が遅い音源(URL 配信でユニットの取得が 1 つずつ往復する初回など)では 2 つ目が最初の音の終わりに間に合わず、"shift" で 行の途中に間が空く。0.3〜0.5 秒ほど貯めてから鳴らすと、鳴り出しが少し遅れる代わりに 間が減る。awaitRender が true / false のときは使わない。

    pan?: number

    定位(-1〜1。既定 0)。

    signal?: AbortSignal

    中断用。abort されると計画中なら null を返し、再生中なら止める。

    style?: SpeakingStyleInput

    話し方プリセット("neutral" / "calm" / "lively"、またはプリセット+上書き)。 話速・抑揚幅・基準ピッチ・ポーズ倍率・音量曲線に効く。既定 neutral。

    volume?: number

    音量(ピーク、0〜1。既定 1)。