2014年12月09日

[Unity] UnityからVOICEROIDの呼び出し

UnityからVOICEROIDを呼び出すテスト。

きっかけ

Unityから外部プログラム(プロセス)を実行する - Neareal
http://neareal.net/index.php?ComputerGraphics%2FUnity%2FTips%2FExternalProgram

上記記事を読んで、それなら「民安Talk」などのVOICEROIDを操作するツールを呼び出す事で、UnityからVOICEROID音声をリアルタイムに喋らせる事ができるんじゃね?というネタが降りてきた。

やってみる

民安Talkは以下のサイトからダウンロード。

publish
http://publish-tool.blogspot.jp/

セットアップ手順は割愛するが、VOICEROIDが正常に起動・再生することを確認しておくこと。

Unityで新規プロジェクトを作成し、空のGameObjectを作成。新規スクリプト「CallVoiceroid.cs」を以下の内容で作成。GameObjectにアタッチする。

using UnityEngine;
using System.Collections;
using System.Diagnostics;

public class CallVoiceroid : MonoBehaviour
{
    //読み上げテキスト
    public string Message = "こんにちは";
    //実行可能間隔(秒)
    public float WaitTime = 1.00F;

    //実行EXEのフルパス
    private string exepath = "C:\\(実行ファイルへのパス)\\vrx.exe";

    private Process exProcess;
    private float exedtime = 0.00F;

    void Update ()
    {
        //キー入力チェック
        if (Input.GetButton("Fire1")) {
            //短時間での連続実行を回避
            //※TIme.timeはtimescaleの影響をうける
            if(Time.time - exedtime > WaitTime) {
                //プロセス作成
                exProcess = new Process ();
                exProcess.StartInfo.FileName = exepath;
                exProcess.StartInfo.Arguments = Message;

                //実行
                exProcess.Start ();
                //実行時間を記録
                exedtime = Time.time;
            }
        }
    }
}

「(実行ファイルへのパス)」は環境に合わせて任意に変更すること。また、見ていただくとわかるが安全のため短時間での連続実行が出来ないように細工してある。デフォルト間隔は1秒。

これで実行すれば、クリックするごとに民安Talkに登録された任意のVOICEROID(結月ゆかりや弦巻マキ)が「こんにちは」としゃべる。とりあえず当初の野望は達成した。

なおこのプログラムはエディタ上のほかWindows用形式でビルド・実行可能。WebPlayer上ではビルドできない(セキュリティ上の問題)。MacやLinux用でも当然実行できない(VOICEROIDと民安Talk自体が動かないため)。なおVOICEROIDではないがMacのsayコマンドを利用して喋らせる方法はこちらの記事が詳しい。

Unity 上に日本語のテキスト読み上げ機能を簡単に実装する(Mac限定) - 強火で進め
http://d.hatena.ne.jp/nakamura001/20140414/1397481439

可能性

まあUnity上でMMDAgentのようなことが出来るかも、という思惑が多少あったのだが、そのためにはUnity上での音声認識や、あるいは外部アプリからのUnityアプリの遠隔操作などの手段を探る必要がありそうだ。前者はそういったライブラリがあれば組み込む、後者はおそらくソケット通信を利用する形になるだろうという想像はしている。

他の用途では、リアルタイムで生成したテキストを音声化というと、Unityでギャルゲーを作った時に入力したプレイヤーの名前を呼んでくれる、くらいかな…。

posted by ちょむ at 19:38| Comment(0) | TrackBack(0) | Unity
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/106248994
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック