😊
テキストファイルからVOICEPEAKでwavファイル変換
voicepeakをターミナルからオプションを使って実行すると変換できます。
下記ソースは対象入力フォルダにある*.txtを対象出力フォルダに*.wavとして出力します。
このあたりが感情パラメータです。
happy=60,fun=60,angry=30,sad=30
using System;
using System.Diagnostics;
using System.IO;
namespace UnityCmdTools
{
internal class Txt2Wav
{
public static void Main(string[] args)
{
// VoicePeakのパスpath
string voicepeakPath = @"D:\Program Files\VOICEPEAK\voicepeak.exe";
// 入力先パス
string folderPath =
@"D:\Lab\input";
// 出力先パス
string outputFolderPath =
@"D:\Lab\output";
foreach (var file in Directory.EnumerateFiles(folderPath, "*.txt"))
{
string text = File.ReadAllText(file);
string outputFilePath = Path.Combine(outputFolderPath, Path.GetFileNameWithoutExtension(file) + ".wav");
var startInfo = new ProcessStartInfo
{
FileName = voicepeakPath,
Arguments =
$"--say \"{text}\" --out \"{outputFilePath}\" --narrator \"Japanese Female 1\" --emotion \"happy=60,fun=60,angry=30,sad=30\" --speed 110 --pitch -20",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
};
using (var process = Process.Start(startInfo))
{
process.WaitForExit();
}
Console.WriteLine($"Generated audio file: {outputFilePath}");
}
}
}
}
Discussion