動画編集ソフトとかVOICEROID、Cevioをプログラムで動かすお話


はじめに

この記事ではボイロ動画を作るときに使っていたソフトや、今使っているソフトについて話そうと思います。(ボイロゲーと関係ない?みんなゲームを作ったら宣伝用の動画作るんだから関係あるんだよ……きっと

あとオマケにボイロゲーでも使えそうな、VOICEROID、Cevioを動かすソフトについて紹介します。

今までの動画編集ソフトの遷移

皆さん、VOICEROID、ゆっくり、Cevioで動画を作る際にどういった環境で作業しますか?
私の場合、

Aviutl + VOICEROID(手動出力)
 
目パチ口パクが欲しくなり

YMM3 + VOICEROID(マクロ出力)

エンコード時間が辛くなり

Premiere Pro + VOICEROID(自作アドオン)

といった感じで遷移していきました。

Aviutl + VOICEROID(手動出力)

画像1

https://seiga.nicovideo.jp/seiga/im1696493

Aviutlは皆さん知ってますよね?日本で動画を作ろうとしたときに真っ先に上がってくるのがこのソフトだと思います。フリー拡張がいっぱいな素晴らしいソフトです。
ただ、開発が2008年に終了しており(※つい最近64bit化)、GPUなどを使った処理には対応しておりません。その他、読み込める画像に限界があったりなど色々と最新の動画事情にはツライものがありました。また、目パチ口パクには色々と大変な作業があり、途中で挫折してしまいました。

YMM3 + VOICEROID(マクロ出力)

そこで、YMM3に移り目パチ口パクを自動化(本当に素晴らしい!!当時は感動しました)。また、VOICEROIDの音声保存の自動化もしました。その際に使ったものがこちらです。

こちらのものをCevioでも使えたり、色々自分の都合のいいように改造して使っていました。

ただ、これで発覚した問題が私を苦しめました。

・YMM3がAviutl出力のため、プロジェクトのロードに数時間かかる
・Aviutlからのエンコードであるため、エンコードに数時間かかる
・YMM連携マクロがマクロであるため、安定性がなく、ウィンドウが出現してすぐに消える動作を大量に行うため大変ストレス
・YMM3のプレビューが安定しない

お金をかけてもいいからこの問題を解決したいと決心し、私は次の環境に落ち着きました。

Premiere Pro + VOICEROID(自作アドオン)
まずは、編集ソフトを考えるとき、世界で一番有名であろうソフトのPremiere Proが候補に浮かびました。
・プロジェクトの読み込みは高速
・エンコードも高速
・プレビューも非常に安定している

なかなかに良い環境でした。

しかし、Premiere ProはVOICEROIDやCevioの連携、立ち絵の管理などの拡張がなかったのです

なので、自分で作りました。

目パチ口パクや細かい設定などはまだ未実装ですが、概ね自分の好きな機能は追加できました。


VOICEROID、Cevioをプログラムで動かすお話

上のJIMAKUと呼んでいる拡張では、VOICEROIDに加えCevioも動かしています。音声保存もしているのに保存ウィンドウが立ち上がったりもしません。

肝となるのはSeikaCenterと呼ばれるソフトです。

このSeikaCenterでは音声デバイスをキャプチャし、内容を保存をするため全ての動作がバックグラウンドで行えます。ウィンドウのアクティブを奪うこともないため、マクロ動作のような気持ち悪い動作を強制的に見せつけられる事はありません。

また、VOICEROIDとCevioを同じ環境で操作できるため、API(Cevioのみ)を叩くコードやウィンドウマクロを別々に書く必要がありません。

例えば利用可能な話者のリストを得るために、SeikaCenter(正確にはTinySeikaServer)にGETを投げると、Jsonファイルで話者のリストが帰ってきます。

public static async Task<List<SeikaACTOR>> GetActor(string url)
       {
           var client = new HttpClient();
           var request = new HttpRequestMessage
           {
               Method = HttpMethod.Get,
               RequestUri = new Uri(url + "/AVATOR2")
           };

           //認証ヘッダーの追加
           request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(
           "Basic",
           Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", "SeikaServerUser", "SeikaServerPassword"))));


           var response = await client.SendAsync(request);
           string result = await response.Content.ReadAsStringAsync();
           return Deserialize<List<SeikaACTOR>>(result);
       }


音声保存の時はPOSTですね。wavファイルがそのまま帰ってくるので、Streamで受け取るなどして保存すればファイルとして扱えるようになります。

public static async Task<Stream> SAVE(string url, int cid, string pram)
       {
           var client = new HttpClient();
           var request = new HttpRequestMessage
           {
               Method = HttpMethod.Post,
               RequestUri = new Uri(url + $"/SAVE2/{cid}"),
               Content = new StringContent(pram, Encoding.UTF8, "application/json")
           };

           //認証ヘッダーの追加
           request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(
           "Basic",
           Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", "SeikaServerUser", "SeikaServerPassword"))));

           var response = await client.SendAsync(request);
           return await response.Content.ReadAsStreamAsync();
       }

SeikaCenterはhttpでやり取りをするため、dllを必要としない素晴らしいソフトです。
詳しく見たい時はGitHubにソースを上げてるので見てください。


皆様も興味が出たら是非触ってみてください。

色々と言いたいこと(個人的な意見なので読み飛ばし推奨)

日本でボイロ実況動画を作ろうと思うと、AviutlかYMM3,4あたりになるかと思います。私個人の意見としては、お金をかけて楽をしたいユーザーもいると思います。というか私自身がそれです。
AviutlかYMMで作業するのもいいですが、少し不便だなぁと感じたら新しい環境にチャレンジして見てください。その環境の人口が増えると誰かしら便利な拡張やらアドオンやらを書いてくれると思います。なのでみなさん、色々な動画編集環境を試してみましょう。そして、もっと動画編集環境の多様性を高め、ボイロ沼を増やしましょう。

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