How to make unity-chan sing songs #2 (Realtime mode)
2015年12月に公開された VOCALOID SDK for Unity とそれに付属するランタイム版ユニティちゃん歌声ライブラリを使うと ゲームエンジンUnity3D(以下Unity)でユニティちゃんを歌わせることができます。
前回は VOCALOID SDK for Unity でvsqxファイルを歌わせるPlayback モードについてブログを書きました。
VOCALOID SDK for Unityでユニティちゃんにvsqxを歌わせる方法
今回はRealtime モードで歌わせる方法を試してみました。
環境
・Windows8.1・Unity 5.3.1f1 Personal版
VOCALOID SDK for Unityをダウンロードする
「Unity with VOCALOID」特設サイトhttp://business.vocaloid.com/unitysdk/
からVOCALOID SDK for Unityをダウンロードします。
ファイルはunitypackage形式です。
UnityのプロジェクトにVOCALOID SDKをインポートする
Unityを起動して適当なプロジェクトを作ります。ダウンロードしたunitypackage形式のVOCALOID SDK for Unityをダブルクリックしてインポートします。
エラーが発生したら
動作確認のためVOCALOID SDKのインポート直後にゲームを開始してみたら次のエラーが起きました。Assets/Editor/PostProcessBuild.cs(14,19): error CS0234:
The type or namespace name `iOS' does not exist in the namespace `UnityEditor'. Are you missing an assembly reference?
UnityDownloadAssistant の最新版を公式サイトからダウンロードして起動し
iOS.Build.Support
の追加オプションをインストールしたらエラーがなくなりました。
SceneにAudioSourceとスクリプトを追加する
VOCALOID SDK for Unity でユニティちゃんに歌わせるには最低でも次の2つのコンポーネントが必要です。- Audio Source
- VOCALOID SDK for Unity のAPIを呼び出すスクリプト
- Audio Listner
今回はSceneにEmptyオブジェクトに配置してこれらのコンポーネントをアタッチします。
メニューの
GameObject - Create Empty
を実行してEmptyオブジェクトを追加します。
HierarchyにGameObjectが追加されるのでInspectorからAudio Sourceをアタッチします。
次にスクリプトを追加してGameObjectにアタッチします。
ProjectにC#のスクリプトを MyScript2.cs というファイル名で 追加し、GameObjectにアタッチします。
今回はレイテンシー(遅延)がわかりやすいようにマウスのクリックで発音するようにしました。
MyScript2.cs
これでゲームを実行すると、Gameウィンドウをクリックするたびにユニティちゃんが「ゆにゆににしてやんよ」と歌います。(「ミクミクにしてあげる」の替え歌)
Realtimeモードでは、歌声が流れる間スクリプトのInspectorにオーディオのレベルメーターが表示されます。
APIを扱う際の注意点
VOCALOID API for Unity は全て YVFクラス を通して扱います。YVF.YVFRealtimeStart() を実行したらそのアプリが終了するまでに YVF.YVFShutdown() を実行してシャットダウンする必要があります。
YVFOpenSong() を実行したらそのアプリが終了するまでに YVF.YVFRealtimeStop() を実行してリアルタイム合成を停止する必要があります。
シャットダウンや停止を忘れるとリソースが解放されないようで、Unityを再起動するまで挙動がおかしくなります。
YVFクラスのメソッドが正常に実行できなくなったらUnityを再起動してください。
Realtimeモードの留意点
Playbackモードと違い、vsqxファイルは不要です。高度な歌声を合成するにはMIDIデータフォーマットの知識が必要です。
バッファーサイズによってレイテンシーが大きく変わります。
YVF.YVFRealtimeSetStaticSetting(YVF.YVFRealtimeMode.Mode1);
でバッファー最小・低レイテンシ、高負荷
YVF.YVFRealtimeSetStaticSetting(YVF.YVFRealtimeMode.Mode5);
でバッファー最大・高レイテンシ、低負荷
ボーカロイドは歌詞の「は」は常に「は」と発音します。助詞の「は」は「わ」に文字を置き換える必要があります。
「こんにちは」と歌わせるなら歌詞を「こんにちわ」に設定する必要があります。
関連ブログ
VOCALOID SDK for Unityでユニティちゃんにvsqxを歌わせる方法[Unity3D] オーディオの音量が小さく再生されるトラブルと直し方
[Unity3D] 透視投影と平行投影を合成するには [ユニティちゃん]
[Unity3D] サイドバイサイドで立体視できるゲームを作るには [クエリちゃん][ユニティちゃん]
[Unity3D] ユニティちゃんたちのアニメーションを分離するスクリプト
Blenderで作ったアニメーションがUnity3Dで違う動きをする原因と直し方
[Unity3D] 画面表示を左右反転させる方法
[Unity3D] 二つのscene(シーン)を一つにまとめる方法
[Unity3D] Unity5のアプリをAndroid Studioにインポートする方法
[Unity3D] ゲーム画面をキャプチャしてMovie Studioで動画に編集する
以上、参考になれば幸いです。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。