SoLA2-TechBlog

退屈な作業はプログラムに任せましょう!日々の作業に少し工夫を足すだけであなたの時間はもっとクリエイティブになる。

nicotalkを自分用にカスタマイズしてみよう! 【Part 1】

追加機能①「感情表現の簡易化」

VOICEROIDを利用した動画を作成するならば、やはり感情表現はこだわりたい所ですよね。とはいえ一つ一つの台詞を調整するとなると相当骨の折れる作業です。という訳で、何とか簡略化できないものか考えました。

VOICEROID2の新機能に着目

そこでVOICEROID2の新機能「感情パラメータ」に着目しました。従来のVOICEROIDで感情を表現する場合はまず「音量」「話速」「高さ」「抑揚」のパラメータを調整していました。これをVOICEROID2では「喜び」「怒り」「悲しみ」といった直感的なパラメータで調整可能になってます。

藤本健の“DTMステーション”にて紹介されているデモ動画を見る限り、「感情パラメータ」と「音声効果パラメータ(音量、話速、高さ、抑揚)」とに関連は無さそうですが、感情パラメータという概念は充分応用できそうですね。

感情パラメータをVOICEROID+に応用してみよう

上記でも述べた通り、VOICEROID+までのバージョンでは直接感情を反映するようなパラメータは無く「音声効果パラメータ」の組み合わせで擬似的に再現しておりました。

であれば、nicotalk側で「感情パラメータ」を新規追加し、「音声効果パラメータ」の組み合わせを「感情パラメータ」に紐付けてあげれば、VOICEROID2のように直感的な感情の調整が出来そうですね。

早速nicotalkをカスタマイズして「感情パラメータ」で感情を表現できるようにしていきましょう!

「感情パラメータ」と「音声効果パラメータ」のマッピング表を作成する

 まずはstep1のnicotalkを開いて、「感情パラメータ」と「音声効果パラメータ」のマッピングを行うためのシート「調整シート」を作成します。

f:id:gootor3030:20170806164759p:plain

 VOICEROIDの性格に合わせて感情の変化に特徴を持たせたいので、キャラクターごとにマッピングしたいですね。

なのでまずA列にはキャラクタ名を入力する欄を設けましょう。設定シートのE列と同じ記述にすると後々VLOOKUPで活用できそうですね。

B列には感情の名前を入力する欄を設けることにします。後々台本シートの感情パラメータで選択肢の内容となる部分ですので、自分が迷わないような内容を入力すると良いでしょう。

またユニークキーが欲しいので、C列はキャラクタ名と感情名を組み合わせて検索用の文字列が生成される欄にしておきましょう。なので当たり前ですが、同一のキャラ名で同一の感情名を2行以上登録する事はNGです。

D列以降には音声効果パラメータの値を設定していきましょう。ここで重要なのですが、紐付ける値は絶対値ではありません。設定シートで設定したキャラクタ毎の共通設定値からの差分を入力することにします。

nicotalkは音声効果パラメータ以外に、「間」「感情」「跳ね」も調整できるので、それらもついでに紐付けておきましょう。(今すぐ活用できそうなのは跳ねのみですが、今後の拡張性を踏まえておきます。)

上記内容を元にマッピング表を作成すると、こんな感じになると思います。

f:id:gootor3030:20170806170510p:plain

ではこれをコピペして各キャラクター毎のマッピング表を作っていきましょう。
・・・いやちょっと待ってください!もう少し、もう少しだけ効率化しましょう!

「感情パラメータ」に紐づく「音声効果パラメータ」、この2点には、相関関係があると思いませんか?例えば人は基本的に怒れば声が大きくなりますし、嬉しければ声のトーンが上がるはずです。であれば2人目以降に紐付ける音声効果パラメータは1人目に紐付けた音声効果パラメータの変化量の倍率だけ指定すればより簡易的にキャラクタの性格に基づいた感情の特徴付けが出来ます。
※細かな調整が必要なキャラもいると思うので、手入力できるフォーマットは残しておきます。

キャラクタ毎に感情パラメータと紐付けを行うと以下のようになります。同一のキャラ名が結合されてないのはキャラクターの追記を楽にするためです。多少見難いですが許してください・・・

f:id:gootor3030:20170806173324p:plain

※表を作っているときはまったく気付かなかったのですが、キャラクタを追加するなら表は横に伸ばすべきでした・・・

台本シートに調整シートの内容を反映する

さてここまでの作業が完了しましたら後は台本シートにちょこっと追記するだけです。まずは「台本シート」を開き、J~N列にキャラ名と感情名の組み合わせ(調整シートのC列)に紐づくパラメータを取得するような数式を入力します。

例)
 =IF(ISERROR(VLOOKUP($E5&$O5,調整シート!$C$3:$J$1000,★,FALSE)),"",VLOOKUP($E5&$O5,調整シート!$C$3:$J$1000,★,FALSE))
※★は参照する場所

 続いてO列を利用して感情名を入力する欄を造ります。利便性を考えると、調整シートの感情名をリストとして登録し、それをO列の入力欄にプルダウン形式で表示するようにしました。

実践!

まずはいつもどおり、「キャラ」と「台詞」を入力します。

f:id:gootor3030:20170806182357p:plain

続いてO列の感情名を選択します。

f:id:gootor3030:20170806182633p:plain

後は「間」を調整して台本の出力するだけ!
非常に簡単に感情表現が出来るようになりました。これで本来の台本作りにより集中できるようになりましたね。

次回は「プレビュー機能」を追加して行きます。お楽しみに!