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 + "\"";
がミソになるので注意です。私だけかもしれませんが地味なハマリどころでした。