UnityでVoicePeakを使う時のサンプルコード(コマンドプロンプト経由)

タイトル通りです。口パクとの連携等は割愛。以下参照記事。

http://chomstudio.sblo.jp/article/106248994.html

voicepeak_test.cs

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

public class voicepeak_test : MonoBehaviour
{
    //読み上げテキスト
    string Message = "読み上げテスト中";
    //実行可能間隔(秒)
    public float WaitTime = 1F;

    //実行EXEのフルパス
    private string exepath = "C:/Program Files/VOICEPEAK/voicepeak.exe";

    //wav出力先
    string outpath = "D:/Documents/voicepeak_wav/output.wav";

    //ナレーター選択
    string narrator = "Japanese Male 2";
    private Process exProcess;
    private float exedtime = 0.00F;

    public void Start()
    {
        outpath = "\"" + outpath + "\"";
        narrator = "\"" + narrator + "\"";
        Message = "\"" + Message + "\"";
    }

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

                //実行
                exProcess.Start();
                exProcess.WaitForExit();

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

VoicePeakの場合、
outpath = "\"" + outpath + "\"";
narrator = "\"" + narrator + "\"";
Message = "\"" + Message + "\"";
がミソになるので注意です。私だけかもしれませんが地味なハマリどころでした。

この記事が気に入ったらサポートをしてみませんか?