ボイスにあわせて文字速度を変える。

http://www.doblog.com/weblog/myblog/37649の中の人との会話。

Q.ボイスファイルの長さに合わせて、文字の表示速度を変えることはできないか?

なかなか面白いことを言う。
そこで私が提示したソリューションが以下。

ソリューション

ボイスファイル名は通常、ナンバリングで管理されていることが前提。
一番最初のボイスは0000.wavになるとする。
このファイル名に、さらに文字速度の情報を盛り込む。
例)0000.wav→0000.123.wav
この二つ目の数字は、NScripter内部でそのまま文字速度として採用されるもので、ボイスファイルの長さ(単位:ミリ秒)を、そのセリフの文字数で割った数値(端数切捨て)になる。
このファイル名にした後、NScripterスクリプト側で、独自のボイス専用命令を作成して対処する。

*define
numalias voice_file,100
numalias voice_speed,101
defsub voice
game
*start
voice "0000.123.wav"
セリフだよっ!\
end

 *voice
getparam $voice_file
split $voice_file,".",%voice_file,%voice_speed
textspeed %voice_speed
dwave 0,$voice_file
return

こうすると、早口のセリフの時は文字速度も速く、のんびり口調の時は文字速度も遅くなる。

結論

ボイスファイルの長さを調べる。
何か特別なプログラムで一気にやりたい。
セリフの長さを調べる。
通常、声優さんに渡すためセリフを抜き出しているはずだから簡単。
長さ(ミリ秒数)とセリフの文字数で文字速度を割り出す。
エクセルかなんか欲しー。

手間の割にはあんまり演出的にすごい訳ではないような気がする。やめやめ。