Calleigh’s blog

幸せは毎日の食卓から

音声が流れるとき、名前の横に印を出す

パートボイスのゲームを想定した記事です。

音声の流し方は過去の記事を参照してください。 calleigh.hatenablog.com

パートボイスのゲームでよく見かけるこの台詞は音声流れますよマークを出す方法です。
上記過去記事の音声流すマクロの中に、画像表示を組み込むだけです。

[macro name="voice"]
    [image layer="message0" storage="icon_voice.png" name="speaker" width="15" x="90" y="278" time="0" zindex="1001"]
        // スピーカーの画像を表示する
    [delay speed="130"]
    [playse storage="&mp.vf" loop="false"]
[endmacro]

[macro name="voicestop"]
    [stopse]
    [resetdelay]
    [free layer="message0" name="speaker"]  // スピーカーの画像を消す
[endmacro]

storageの場所は /data/fgimage/ です。
imageタグのzindex1000より大きくしておかないとウィンドウ画像の下に表示されてしまい、見えなくなります。1000「より」大きくは1000を含みません。1000は駄目です。
imageタグでnameを指定(好きな名前を付けられます)しておかないと、freeタグで消せません。
マクロvoicestopfreeタグを入れておかないと画像が表示されたままになります。
過去記事にあるマクロvoice2に変更・追加箇所はありません。

imageタグの代わりか、imageタグの前にpositionタグを入れて表示されるウィンドウ自体を変更することもできます。
メッセージウィンドウの画像を変更しても、名前欄に表示される名前がリセットされる(非表示になる)ことはありません。そのため、名前欄にどうしても半角スペースを入れたい病患者でも問題なく使えます。
calleigh.hatenablog.com


私は、メッセージウィンドウ画像も変えているので音声付きの台詞が終わった後に、同じ登場人物の音声なしの台詞が続く場合、メッセージウィンドウを戻す必要があります。こんな感じ。

[taro]   // 太郎の名前とメッセージウィンドウを表示する
[voice vf="xx1.mp3"]   // メッセージウィンドウの変更、スピーカー画像の表示、メッセージ表示速度の変更、音声1の再生
        // 太郎の名前は表示されたまま
台詞1[p]    // クリック待ち
[voice2 vf2="xx2.mp3"] // 音声の停止、音声2の再生
台詞2[p]    // クリック待ち
[voicestop]   // 音声の停止、メッセージ表示速度のリセット、スピーカー画像の削除
[taro]    // 太郎のメッセーウィンドウに戻す
台詞3[p]    // クリック待ち

自動でクリックを繰り返してくれるソフト

ブラウザゲームでひたすらクリックを繰り返さなければならないフェイズがあり、とても面倒でゲームそのものから離れていた。
自動でクリックを繰り返してくれるスクリプト等の存在自体は知っていたが、わざわざ探すのも面倒で放置していた。いい加減に入れようと思って探した自動クリックしてくれる何か。

Auto Clicker for Mac
これが今のところ良い。マニュアルがわかりやすかったし、何より説明どおりにちゃんと動く。
非常に便利!


別のアプリケーション

iMouseTrick
#ofClicksにinfinitesが指定できるところがいい。

新しい章の始まりに、タイトルを出す演出を楽に作りたい

新しい章が始まるとき、こういう背景画像に、
20201221130426
「第何章 章のタイトル」を示す文字と、物語進行度を表すこういうアイコン20201221130448を表示させたい。
でも、背景画像をそのまま表示すると明るすぎるので、半透明の黒い覆いを被せてこんな風にしたい。これらの画像自体はイメージであり、ティラノスクリプトとは関係ありません。

図形を表示するには、canvasタグをサポートしたブラウザが必要です。

いきなりマクロ

[macro name="storyname"]
// message1レイヤーを見えるようにする
[layopt layer="message1" visible="true"]

// baseレイヤーにフィルター効果をかける
[filter layer="base" brightness="40"]

// message1レイヤーに、水平線の(おしゃれっぽい)画像を表示させる
[image layer="message1" storage="line.png" width="" y="" x="" opacity="255" wait="false"]

// 物語の進行度を表すハートのアイコンを表示
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="80" wait="false" cond="mp.heart >= 1"]
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="97" wait="false" cond="mp.heart >= 2"]
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="114" wait="false" cond="mp.heart >= 3"]
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="131" wait="false" cond="mp.heart >= 4"]
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="148" wait="false" cond="mp.heart >= 5"]
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="165" wait="false" cond="mp.heart >= 6"]
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="182" wait="false" cond="mp.heart >= 7"]
[image layer="message1" storage="icon_heart.png" width="17" y="133" x="199" wait="false" cond="mp.heart == 8"]

// 第何章かを表示させる
[ptext layer="message1" size="18" color="0xffffff" y="108" x="80" text="&mp.snum" time="0"]

// タイトルを表示させる
[ptext layer="message1" y="160" x="103" color="0xffffff" size="14" text="&mp.stitle" time="0"]

// クリック待ち
[l]

// レイヤーmessage1を解放
[freeimage layer="message1" time="400" wait="true"]

// フィルター効果を解除
[free_filter]
[endmacro]


// 実行するとき
[bg storage=""]
[storyname snum="第三章" stitle="章のタイトル" heart="3"]

[image]のstorageは /data/fgimage/ 以下、
[bg]のstorageは /data/bgimage/ 以下になります。

背景画像は、ストーリーで使用されるものを表示させたいので、普通に[bg]タグで指定します。
[filter]タグと似た[mask]タグがありますが、[mask]タグは画面全体に効果が反映されるため、ハートの画像なども暗く表示されてしまいます。
[image]wait="false"を入れておかないと、当該画像が完全に表示されるまで待ってから、次の画像が表示され始めるのでタイムラグが生じます。
ハートのアイコンを表示させる[image]タグに入っているcond="条件式"は、条件式が成立したときにだけ実行するよう指定するものです。mp.heartには&をつけません。進行度によってハートの色を黄→橙→赤、のように変更することも簡単にできるので[iscript]タグを使用してfor文を書いたりするより楽そう。
[ptext]タグ内の&mp.snumと&mp.stitleには&をつけます。
画像も文字も、同一レイヤーmessage1を指定することで[freeimage layer="message1"]で一度に全部消せます。wait="true"を指定することで、画像と文字より先にフィルターが消えるのを防ぎます。
フィルターはベースレイヤーに掛けているので別途[free_filter]タグが必要になります。


章の始まりに表示させるものなので、何もなければこのあと話が始まります。
クリック待ちの[l]の前に、message0レイヤーにメッセージウィンドウの設定と、名前欄の設定を入れます。あわせて、[free_filter]の後に[layopt layer="message0" visible="true"]を入れておくと、クリック後画面が明るくなってすぐメッセージウィンドウが表示されます。
message1レイヤーに入れてしまうとその後の[freeimage]タグの影響を受けるかもしれない(試していません)ので異なるレイヤーを指定しておきます。

画像:ぴぽや様 https://pipoya.net/

2020年12月に見た映画

プレデター VS ネイビーシールズ
S.W.A.T. アンダーシージ
テイキング・ライブス
9デイズ ⭐️⭐️⭐️
おとなの恋は、まわり道 ⭐️
モンスター 悪魔の復讐
こんな夜更けにバナナかよ
パリより愛をこめて ⭐️⭐️
SPY/スパイ ⭐️
ラストベガス ⭐️⭐️⭐️
ザ・ターゲット
ラ・ラ・ランド
クリムゾン・リバー
ザ・クロコダイル 人喰いワニ襲来
ミッション:8ミニッツ ⭐️
タイタニック ⭐️
ZOMBIO/死霊のしたたり [4Kレストア版] ⭐️⭐️
ジョナサン ふたつの顔の男 ⭐️
フォーカス ⭐️
千夜一夜物語(1969)
ワイルド・ストーム
プレミアム・ラッシュ ⭐️⭐️
WILD CARD/ワイルドカード
フォレスト・ガンプ 一期一会 ⭐️⭐️⭐️
ディープ・ブルー ⭐️⭐️⭐️
ディープ・ブルー2
バック・トゥ・ザ・フューチャー ⭐️⭐️
バック・トゥ・ザ・フューチャー Part2 ⭐️
バック・トゥ・ザ・フューチャー Part3 ⭐️⭐️
ザ・ビーチ
犬飼さんちの犬
アナベル 死霊館の人形
僕たちのラストステージ ⭐️⭐️
ブラック・ダイヤモンド
王の男
ネバーサレンダー 肉弾凶器
アナベル 死霊人形の誕生
デッド・カーム/死の航海・狙われた人妻
不能犯
残穢 —住んではいけない部屋—
怪盗グルーのミニオン危機一髪 ⭐️⭐️
デッド・リミット ⭐️⭐️
スカイスクレイパー ⭐️
渋滞 ⭐️
旭山動物園物語 ペンギンが空をとぶ ⭐️⭐️
ホワイトシャーク 海底の白い死神
グリマーマン ⭐️⭐️
プルーフ・オブ・ライフ ⭐️
華麗なるギャツビー
オール・ユー・ニード・イズ・キル ⭐️⭐️
L.A.ギャングストーリー
ワンダーウーマン(2017)
バレンタイン
劇場版 銀魂 新訳紅桜篇
ニュー・シネマ・パラダイス ⭐️
マイノリティ・リポート
ザ・プレデター(2018) ⭐️
博士の愛した数式

前回指定した差分パーツを、再登場時にはリセットしたい

[chara_show]で反映できる差分は[chara_face]タグで定義した差分だけという話をこちらの記事でしました。 calleigh.hatenablog.com [chara_face]タグで定義したパーツは#name:face_idで表情の変更を反映できますので、表情差分については[chara_face]タグを積極的に使用した方が楽なのかなと思います。
ただ、私自身は、何が何でも名前欄の苗字と名前の間に半角スペースを入れたい病患者であるため、今のところ[chara_face]タグを使用していません。 calleigh.hatenablog.com

[chara_show]タグでキャラを表示して、[chara_part]タグで服装や表情を指定するようになります。

[chara_new]タグ、[chara_layer]タグでのキャラと差分パーツの定義

// 新しいキャラの定義
[chara_new name="taro" jname="山田太郎" storage="" width="" zindex="5"]
// キャラパーツbaseを定義
[chara_layer name="taro" part="base" id="default" storage="none" zindex="6"]
[chara_layer name="taro" part="base" id="uniform" storage=""]
[chara_layer name="taro" part="base" id="private" storage=""]
[chara_layer name="taro" part="base" id="club" storage=""]
[chara_layer name="taro" part="base" id="swim" storage=""]
// キャラパーツhairを定義
[chara_layer name="taro" part="hair" id="default" storage="" zindex="9"]
[chara_layer name="taro" part="hair" id="cap" storage=""]
[chara_layer name="taro" part="hair" id="swim" storage=""]
// キャラパーツfaceを定義
[chara_layer name="taro" part="face" id="default" storage="" zindex="7"]
[chara_layer name="taro" part="face" id="smile" storage=""]
[chara_layer name="taro" part="face" id="sad" storage=""]
[chara_layer name="taro" part="face" id="angry" storage=""]
// キャラパーツacceを定義
[chara_layer name="taro" part="acce" id="default" storage="none" zindex="8"]
[chara_layer name="taro" part="acce" id="blush" storage=""]

この例では、パーツを以下の4種類に分けてあります:

  • base = 胴体(服装)とのっぺらぼうの顔と後ろ髪
  • face = 表情
  • hair = 髪型(とあれば帽子等の頭にくっつくパーツ)
  • acce = 頬の紅潮を表すパーツや涙・汗といった普段は表示しないパーツ

分け方は自由です。一番シンプルなのはおそらく

  • 全身+デフォルトの表情の一枚絵
  • 表情差分を幾つか作る

が最少でバリエーションを付けやすい方法かと思います。デフォルトの表情を、差分パーツで覆い隠すことで別の表情にできますね。
キャラクター差分は好きなだけ登録できます。差分画像が増えるとその分、容量が増え、ロード時間も長くなります。その対策としては、パーツによっては画像サイズそのものを小さくする(透明な部分を切り取ってしまう)ことなんですが、同じ大きさの画像を重ねていく方が、表示位置の調整も必要なく、キャラを移動させたりした際に表示がズレたということが起きにくいのでそういう設定で書いています。

一行目の[chara_new]タグでは、切り替えない画像を指定します。ここでは、全てのパーツの画像を切り替える設定で作ってあるのでキャラ画像と同じサイズの透明な画像を指定します。width属性またはheight属性を指定することで、実際の画像サイズに関わらず、width属性で指定したサイズに引き伸ばしまたは圧縮して表示してくれます。width属性とheight属性のどちらか一方しか指定しないことにより、画像の縦横比率は維持したまま引き伸ばしまたは圧縮が行われます。[chara_new]タグで一回指定するだけでいいです。[zoom]タグなどでキャラを拡大表示させるときのことを考えて、作成するキャラ画像サイズを決めてもいいと思います。

二行目以下に続く[chara_layer]タグでのpart="base" id="default"の" "の中は自由に決められます。ここでは、partはどのパーツか、idはそのパーツを呼び出すときに使用する名前になります。同一パーツ内で、同一idを使用することはできません。同一パーツ内で、同一idを割り振ってしまうとどれを呼び出せばいいか特定ができなくなりエラーになります。別のパーツであれば、同一idを使用することができます。
上の例だと、part="base" id="swim"で水着を着た胴体の画像を表示し、part="hair" id="swim"で水泳キャップを被った頭の画像を表示するように設定しています。idを同じにすることで上下セットなんだとわかりやすく感じるか、idを同じすることで混乱して間違いやすくなるかは人によると思うので、自分の性格と相談してください。混乱しそうな場合は、part="hair" id="swimcap"id="swim_hair"などのように少しidを変えてみてもいいかもしれません。

part="acce"は普段は表示しない(デフォルトでは非表示にしたい)画像なので、id="default" storage="none"としてデフォルトでは表示する画像を指定していません。
part="base"は胴体なので山田太郎登場時は常に表示したい画像ですが、服装が数種類あるため、服装の指定漏れを見つけやすくする目的で、デフォルトは非表示にしてあります。同じ服装での登場が多い場合は、デフォルトにその服装を指定した方がいいと思います。

各パーツid="default"の行に入っているzindex=""は、各パーツが表示される階層を示しています。数が小さいと奥の階層、数が大きいと手前の階層に表示されます。パーツhairは前髪も含みますが、前髪がパーツbaseののっぺらぼうより奥の階層に表示されたり、パーツfaceがパーツbaseののっぺらぼうより奥に表示されりするとおかしいので指定していた方がいいです。各パーツの最初に一回書くだけでいいです。

[chara_show]タグの実行

[chara_show name="taro"]

で表示されるのは次の三枚の画像です:

  • [chara_new]タグで指定した透明な画像
  • パーツfaceのデフォルト画像
  • パーツhairのデフォルト画像

パーツbaseとパーツacceは、デフォルトでは何の画像も表示されません。

[chara_show name="taro"]
[chara_part name="taro" base="uniform"]

[chara_show]タグと[chara_part]タグを続けて実行することで、キャラ差分パーツbaseのid="uniform"を表示させることができます。
ただ、このまま実行してしまうと、[chara_show]タグで表示される三枚の画像が表示された後、[chara_part]タグで表示される画像が表示されるようになり、表示にタイムラグが生じます。こちらの記事では、[chara_show]タグでtime="0"を指定することで解消できると書きました。単純に私はキャラを一瞬で表示したいからです。 calleigh.hatenablog.com

他の方法として、[chara_show]タグでwait="false"を指定すると最初の三枚の画像が表示されるのを待たずに、パーツbaseの画像も表示されます。フェードイン効果などを使用したい場合は、こちらの方法を利用します。

[chara_show name="taro" time="2000" wait="false"]
[chara_part name="taro" base="uniform"]

マクロを作る

上記記事のキャラ退場後も差分パーツの指定が反映されたまま問題をもっと楽に解決できるはずと思い、その解決も盛り込んだマクロを作りました。

[macro name="cshow"]  // cshow という名前のマクロを定義
    [chara_show name="&mp.name" wait="false" time="&mp.time || '2000'"]
    [chara_part name="&mp.name" base="&mp.base" hair="&mp.hair || 'default'" face="&mp.face || 'default'" acce="&mp.acce || 'default'"]
[endmacro]

// マクロ cshow の実行
[cshow name="taro" base="uniform"]

// 水着姿、笑顔の太郎を、瞬時に表示させる場合
[cshow name="taro" base="swim" hair="swim" face="smile" time="0"]

&mp.はマクロ内変数の型(マクロ内でしか使用できない変数)です。
nameで表示するキャラクターの名前を指定します。
timeでキャラクターの表示にかける時間を指定できる。指定しなかった場合はデフォルト値として2000を代入します。
baseにはデフォルト値を設定していないので、マクロ実行時に指定していなかった場合、エラーが発生します。これも上記と同じ、服装の指定漏れを発見しやすくするための記述です。必要に応じてデフォルト画像を指定してください。
acceでは、指定しなかった場合、デフォルトの「画像を表示しない」が適用されます。
デフォルト値は' 'で囲まないとエラーになるので注意が必要です。

このマクロの利点

以前の記事だと、キャラ退場後の差分パーツのリセット方法について、

  • キャラ登場時にデフォルトパーツを指定する
  • キャラ退場後に[chara_part_reset]タグを実行する

の二点を挙げました。このマクロは、前者の方法を採ったものになりますが、「指定しないことが、デフォルトパーツを指定することになる」記述になっています。そのため、マクロ実行時に書かなければならない量が減ります。書かなければならない量が減るということは、記述ミスをする機会自体が減ります。

このマクロの問題点

次回登場時に、time="0"を指定したり、クリック(タップ)を連打して早送りしようとすると、一瞬だけ前回指定したパーツが表示されることがあります。これはもうどうしようもないと思います。
しかしながら、普通にプレイしている際には、発生しないことになるので大した問題でもないかと今のところは思っています。できたら改善したいです。

[wrap]タグの情報がなさすぎる

ティラノスクリプト公式サイトに存在をメンションされているだけの[wrap]タグを使用したくてネット検索したんですが、情報を見つけられませんでした。自分で試そうとしてみても、タグ:[wrap]は存在しません。とエラーが出るので試すことすらできませんでした。
他力本願が過ぎますが、誰か書いてくれないかな……。

Atomのショートカットキーメモ

Atomエディタのコマンド

コマンド
ctrl-a/e カーソルを行の先頭/末尾に移動
ctrl-d/h カーソルの右/左を一字削除
ctrl-shift-k カーソルのある行を削除
ctrl-0 ツリー⇔エディタの移動
ctrls-cmd-↑/↓ 行の移動
cmd-shift-d 行の複製

HTMLタグとMarkdown

HTML Markdown
<em> * 強調(アクセント)。not重要。テキストを際立たせる場合は<i>がベター
<strong> ** 強い重要性。入れ子で程度指定可
<i> 他と区別したいテキスト。not重要nor強調
<b> 文書内のキーワードや製品名など他と区別したいテキスト。not重要,強調nor太字
<mark> ハイライト
<cite> 作品のタイトル
<q cite="url"> > 引用/符
<small> 注釈や細目を表す。長い文などは不適
<em>+<strong> ***
<var> 変数
<samp> プログラムの出力結果のサンプル
<ins datetime="YYYY-MM-DDTHH:MM+09:00"> 追記
a [テキスト](URL "title") リンク
<dfn> 用語の使用
<dfn id="sam"><abbr title="正式名称">略称</abbr></dfn>  
<a href="#sam"><abbr title="正式名称">略称</abbr></a>

追記

Markdown記法[^footnote]で脚注を入れる際、数字[^1]に限らず[^註]等文字列を入れても勝手にナンバリングをしてくれる。  
はてなブログ[^註釈]だけ?  
重複[^註]する文字/列は使用できない。

[^footnote]:Markdown記法とは
[^1]:1の脚注
[^註]:註の脚注
[^註釈]:はてなブログとは
[^註]:重複とは

1で脚注を入れる際、数字2に限らず3等文字列を入れても勝手にナンバリングをしてくれる。
はてなブログ4だけ?
重複[^註]する文字/列は使用できない。


  1. Markdown記法とは

  2. 1の脚注

  3. 重複とは

  4. はてなブログとは

テキスト自動送りをオンにしている際、音声の途中で送らないようにする

この記事では、パートボイスのゲームを想定しています。

[voconfig]タグ等の使用により、#taroと記載するとそのキャラクターの音声が流れる

しかしながら、私は、何が何でも名前欄の苗字と名前の間に半角スペースを入れたい病患者なので#taroのタグは使えません。 calleigh.hatenablog.com

音声を[playse]タグで流す

[playse storage="xx.mp3" loop="false"]  

で普通に流れます。storageの場所は /data/sound/ です。

[autostart]またはデフォルトキーコンフィグでのaキーを押すとテキスト自動送りがオンになります。そうすると、デフォルトのテキスト表示速度だと音声の途中で次の台詞に変わってしまいます。
[wse]タグで再生完了を待つ、という方法もありますが、この場合、画面をクリックスマホであればタップ)しても次の台詞に移動せず、音声を聞きたいわけではないプレイヤーにとっては迷惑な仕様になります。正直、その瞬間ブラウザを閉じるレベルでうざいです。

一時的にテキスト表示速度を遅くして音声の再生が終わるタイミングと、テキスト自動送りのタイミングを(大体)合わせる

[delay speed="130"]   // テキスト表示速度を遅くする
[playse storage="xx.mp3" loop="false"]  // 音声をSEとして再生
[taro]    // 発言者太郎の名前とメッセージウィンドウを表示させるマクロ
ここに台詞[p]    // 流れてる音声の台詞文字+クリック待ち
[stopse]  // クリックすると音声が止まる
[resetdelay]  // 同時にテキスト表示速度がデフォルトに戻る
ここに次の台詞[p]

大体こんな感じになります。
テキストの表示が完了した途端に次のテキストが表示され始めるわけではなく、最後まで読めるように少し間を置いて切り替わります。そのため、「音声の再生が終わってもなかなかテキスト自動送りがされない」と感じさせないよう、テキストの表示の方が音声より多少早くなるようにしてあります。

こんなのをいちいち打っていられないのでマクロを作る
[macro name="voice"]  // voiceという名前のマクロを定義
    [delay speed="130"]    // テキスト表示速度を遅くする
    [playse storage="&mp.vf" loop="false"]
        // SE音として流す音声ファイルの指定
        // 音声なので繰り返して流れないようにする
[endmacro]    // マクロ voice の内容はここまで

[macro name="voice2"]  // マクロ voice2
    [playse storage="&mp.vf2" loop="false" clear="true"]
        // 実行時に流れているSE(音声)がある場合、それを止めてから再生する
[endmacro]

[macro name="voicestop"]   // マクロ voicestop
    [stopse]  // SE(音声)の再生を止める
    [resetdelay]  // テキスト表示速度をデフォルトに戻す
[endmacro]

実行するときはこんな感じ

[voice vf="taro/音声1.mp3"]
[taro]
台詞1[p]
[voice2 vf2="taro/音声2.mp3"]
台詞2[p]
[voice2 vf2="taro/音声3.mp3"]
台詞3[p]
[voicestop]
音声のない台詞1[p]
[voice vf="taro/音声4.mp3"]
台詞4[p]
[voicestop]

マクロ voice2 は、音声付きの台詞が続く場合のみ使用します。
音声付きの台詞が終了する時は、[resetdelay]のほかに[stopse]も入れておかないと、音声の途中でクリックして次の台詞に移動しても、なお音声が流れ続けます。短いタグ2つだけだから毎度書く方法でも平気だろうと思っていると、どちらか片方を書き忘れたりするので一つのマクロにしてしまう方が楽です。
演出によっては[stopse]を敢えて入れないのもありです。ただ、[stopse]を入れていない場合、メッセージスキップをしている時でも音声が流れてしまいます
[resetdelay]は絶対に入れる必要があります。入れなければずっとテキスト表示速度が遅いままになり、プレイヤーのストレスになります。
マクロ voice/2 にあるstorage="&mp.vf/2"の部分は、マクロ内でしか使用できない変数の型mpにvfという変数を定義し、実行時のvf="taro/音声1.mp3"taro/音声1.mp3を引数として渡すものです。ここの変数もマクロ名と同様に短い方がいいです。マクロvoiceとマクロvoice2で同じ変数名を使用することはできません。

間をたっぷり取った音声を流したい場合

普通に喋っている時に合わせたマクロを使用すると、音声の途中で次の台詞に移ってしまいます。
ここで考える三点は以下です:

  1. ここだけイチからタグを打つ
  2. ゆっくり喋ってる時用のマクロも作る
  3. 面倒だからさっき作ったマクロを利用したい
[voice vf="taro/音声1.mp3"]
[delay speed="150"]
[taro]
台詞1[p]
[voicestop]

で解決します。マクロvoiceとその直後の[delay]タグでタグが重複していますが問題ありません。後にある方のタグの数値で、テキスト表示速度は上書きされます。

普通の速度の音声と、遅い速度の音声が続く場合
[voice vf="taro/音声1.mp3"] // 普通の速度の音声
[taro]
台詞1[p]
[voice2 vf2="taro/音声2.mp3"]    // 遅い速度の音声
[delay speed="150"]
台詞2[p]
[voicestop]
普通の速度の音声の間に、遅い速度の音声を挟むこともできる
[voice vf="taro/音声1.mp3"] // 普通の速度の音声
[taro]
台詞1[p]
[voice2 vf2="taro/音声2.mp3"]    // 遅い速度の音声
[delay speed="150"]
台詞2[p]
[voicestop]
[voice vf="taro/音声3.mp3"]  // 普通の速度の音声
台詞3[p]
[voicestop]

この場合は、遅い速度の音声の後にマクロ[voicestop]を挟むことで、clear="true"の入っていないマクロ[voice]を使用しても前の音声を止めてから次の音声を流してくれ、かつ、[delay speed="130"]と打つことなくテキスト表示速度を台詞1と同じにできます。
[stopse]タグに[playse]タグを続けることと、[playse]タグにclear="true"のプロパティを指定することは同じなのです。