AutoRedZone 使用方法

※文章で読むと非常に長いですが、動画でも説明しておりますのでご活用ください。

※本ページの下部には、動画化していない上級者向け機能の説明を記してあります。

- 導入にあたっての注意事項 -
・プログラムを動作させる等にあたって、万が一コンピュータなどにトラブルが生じた場合や、意図しない動作をした場合などについて、ケーラは一切の責任を負えません。
・プログラムがエラーを起こした際などにお問い合わせいただくとなるべく対応しますが、適切な対応を保証できるわけではないことをあらかじめご了承ください。また、不具合の修正等の義務は負いません。
・著作権は、基本的に開発者のケーラが保有しますが、改変したものまたはしていないものの二次配布等を行うことを許可します。ただし、それに起因するトラブル等について責任を負えません。
・一般的な視点から言えば、本ソフトウェアは開発元が明確でない危険なソフトウェアです。学校のコンピュータ等での使用はしばしば、管理者によって禁止されています。本プログラムの仕様によって生じた問題について責任を負えない場合はご使用にならないようにお願いします。
・生成した成果物について、ケーラは著作権を主張しませんが、責任も一切負いません。なお、使用報告は任意としております。

- 動作環境について -
本ソフトウェアはWindows OSのみに対応しています。(本ソフトの利用時に必須となる「AviUtl」がWindows専用ソフトであるためです。)
特殊な計算等はしませんので、一般的なCPUで動作します。(GPUなどは使用しません。)

- 導入方法 -
①exeをダウンロード。
②何もない新規フォルダを作り、そこにexeを移動。
③exeを開く。
④指示に従って「インストール」(初期化)する。
※「インストール」で、必要なファイルが自動生成される。
⑤RPPを開いて、原曲の再生位置などを調整する。
(初期設定完了。ここからお試し生成。)
⑥さっきと同じexeを開いて、自動生成を起動する(Enter押すだけでOK)。
⑦生成が終わったら、「exit」をタイプして終了する。

- 素材を変更する方法 -
①素材をダウンロードして、ffmpegなどでwavファイルに変更する。
②VocalShifterで「単音ボーカル用」で読み込む。
③アイテムを開く。
④Ctrl + Aで全体を選択して、左の「DYN(ダイナミクス編集)」を選ぶ。
⑤Ctrl + Pでコンプレッサーを開き、スレッショルドを-6.0dBに設定して実行する。
⑥Ctrl + Eでノーマライズする
⑦これで完成した非シンセ音声ファイルは、わかりやすいフォルダに「notsynth.wav」の名で出力する。
⑧全体が選択された状態で、「*PIT(ピッチ誤検出修正)」に移動する。
⑨Ctrl + Bで全体のピッチを編集可能にする。
⑩「PIT(ピッチ編集)」に移動する。
⑪Ctrl + Tでピッチ設定を開き、C4に統一する。
⑫右クリックで「アイテム設定」を開いて、「タイムストレッチ」を10倍にする。
⑬非シンセと同じフォルダに「synth.wav」の名で出力する。
⑭Ctrl + Tでピッチ設定を開き、C5に統一する。
⑮非シンセと同じフォルダに「synthC5.wav」の名で出力する。
⑯出力した非シンセファイルのパスをコピーする。
⑰params.txtの「[read-wav]」の真下にあるパスを自分の非シンセファイルのパスに変更する。
⑱notsynth.wavとsynth.wavとsynthC5.wavそれぞれのパスをコピペして、それぞれ「[input-wav]」のパスを変更する。
(マシン起動前に必要な変更操作はこれで完了。)

- exoやrppを編集する方法 -
【注意】最初にインストールされたときに生成されたexoやrppは、アップデートするたびに上書きされるので、変更を加える際にはコピーをとってそちらを編集すること。
①(最初のexoやrppを流用する場合)paramsフォルダ内の「1.exo」と「1.rpp」を任意のフォルダにコピーする。
②exoやrppを編集する。
[編集の際の注意点等の説明は補助資料2へ移動]
③params.txtを開く。
④「[input-rpp]」や「[input-exo]」の真下に自分のrpp、exoのパスを指定する。
⑤必要な場合は「[settings]」を変更する。

- 生成について、カスタマイズできる設定 -
[応用的な内容なので、補助資料1へ移動]

- 生成を開始する方法 -
初回のプログラム実行時にはインストール処理がされたが、次回以降は生成などの操作を行えるようになる。
①プログラム「AutoRedZone.exe」を起動する。
②何も入力せずにEnterキーを押す。
③生成が終わるまで待機して、終わったらそのまま終了する。
これで、exoとrppの自動生成が完了した。
[高速処理モードは補助資料5へ移動]

- exoの使い方 -
exoファイルは、長い場合にはいくつかに分割される。一度に複数読み込ませようとするとエラーとなるので、必ず一つずつ単体で読み込ませる。
①AviUtlを開き、何もプロジェクトファイルを開いていない(閉じた)状態で、拡張編集のタイムラインにexoを一つだけ読み込ませる。
②AviUtlがexoを読み込み終わるのを待つ(長いと10分以上かかることもあります)。
③読み込みが終わったら、「Scene 1」に移動し、素材の動画ファイルを読み込ませる。※これまでに読み込ませた非シンセ音声ファイルはこの動画ファイルとリンクしていなければならない。
④「Root」に戻り、そのまま動画の出力をする。

- rppの使い方 -
rppファイルは一つだけ生成される。
①REAPERを開いて、rppファイルを読み込ませる。
②Ctrl + A、Ctrl + Shift + Nの順に押して全体をノーマライズする。※しばしば応答なしになるが、待てば問題ない。
③Ctrl + Alt + Rで、そのまま音声の出力をする。

- 困ったときは -
・エラーを吐いたときは、とりあえず日本語の案内文を読んでみる。「開発者へご連絡ください。」や「Please contact the developer.」などが出力された場合は問い合わせする。
※問い合わせの際、「log.txt」の送信を求めることがある。「log.txt」には、エラーの原因究明に役立つ情報が大量に格納されているが、開発者以外はおそらく解読できない。
・「AutoRedZone.exe」を開くと、すぐにコマンド入力ができます。アップデートした際に関連ファイルのアップデートを自動で行うためには、このコマンド機能を使用する必要があります。コマンドライン引数も使えます。[詳しくは補助資料4へ移動]


[補助資料1 settingsの変更について]
・演算フレームレート・演算ビットレートは、PCで演算を始める前に音声ファイルを任意のフレームレート・ビットレートに変更してから処理をするための設定であるが、変更するとかえって動作が遅くなるためおすすめされない。
・「最低周波数」は、雑音を除いて自分が素材になることを想定したい音声の周波数のうち最低値を指定する。この設定は、素材から使用する部分を自動で切り取る「kiritol」に渡される数値である。この値は、できるだけ大きいほうが精密な処理がされて高品質になることが期待できるが、素材の音声の周波数を上回る周波数が指定されると正常に認識されない(開発サイドの想定としては、指定した周波数より低い周波数の音は無視される)。なおデフォルトでは、「これ以上低い音ではそもそも作りづらい」と想定される周波数として、おおざっぱに「50Hz」が指定されている。
・「子音の長さ」は、kiritolが「使いやすい非シンセ区間」として指定した区間を前の方向へ引き延ばすことで、子音をより拾いやすくするものである。シンセではそもそも不要であるし、非シンセにおいてもほとんど必要ないことが実験によって判明しているため、0でよかろう。よって、詳しい解説はしないので、調整したい人はややこしい単位[(演算フレームレート/最低周波数)/ms]という単位を理解して調整せよ。
・「BPM」は、全体のBPMを変更することができる。これを変更すると、rppやexoの構成の区切り目を判定する際に、違うBPMでも正常に判定される(なお、判定の際には時間を用いていて、プロジェクトファイルのBPM設定等は参照しない)。
・「各構成の小節数」。これを変更すると、rppやexoの構成の区切り目を任意の小節ごとにすることができる。なお、構成ごとに個別に小節数を定義することはできず、統一する必要がある。
・「音量の基準点」では、kiritolが使用する素材区間を検出する際に、音量の基準として使用する値を変更することができる。大きすぎると、自然な音のほとんどが検出されなくなる。また、小さすぎると人の声などの使用に適した音と、雑音のような使用に適さない音との区別がつきにくくなり、制度が低くなる。
・「切り取り区間の長さの最低基準値」では、kiritolが「音量の基準」以上の音量が持続する区間を取り出すときに、その区間が短すぎるものを自動的に除外する基準値を設定できる。長すぎると長い音しか選択されなくなり、短すぎると拍手や衝撃音、破裂音などを拾いやすくなり品質が落ちる。なお、「0」を指定するとプログラム内で尋ねられるようになって、生成のし直しを素早く行える。
・「切り取り区間を聴覚的に示す音声の出力」では、kiritolが切り取った音声の出力を設定できる。この音声の出力にもある程度時間がかかるので、どうしても負荷が大きいときや、ストレージ容量がぎりぎりの場合などに生成をしないように設定する。なお、出力先のファイル名も変更することができる。

[補助資料2 exoやrppを編集する方法]
①共通の注意事項
・settingsで決めた小節数ごとに構成が変わるように組むこと。
・settingsで決めたBPMにピッタリ合わせること。特に最初や最後がずれていると構成を誤って認識される。
②exoの注意事項
・素材は必ず「Scene 1」から読み込まれるようにすること。シーンオブジェクトの再生位置のみ変更する仕組みなので、通常の動画ファイルで読み込んでも再生位置が変わらないどころか、そもそも素材が置換されないので使い物にならない。
・シーン機能は素材を読み込む以外に基本的に使用しないこと。シーンの中身をいじるプログラムはない。例えば、素材を拡大させるのが欲しくてシーンを使って実現したとすると、そのシーンを使用した部分は素材が置換されなくなる。必ずすべて「Root」内での編集のみで実現すること。
③rppの注意事項
・VSTの値が構成によって変わるようにするとか、うねりを入れたいとかの要望はあるだろうけども、ピッチやVST値などのエンベロープをいじらないこと。中間点などを複製する機能が未実装のため、それをやっても複製されない。
・非シンセファイルを使うのか、シンセファイルを使うのか、C5シンセを使うのかによって、アイテム名を変更する必要がある。アイテム名を用いて変更するべきアイテムを検出して自動で変更するシステムになっている。なお、この3種の音声でなく、別のもの(例えばフォルマントを落としたシンセ)などを追加して使い分けたい場合は、settingsの「[input-wav]」を追記する必要がある。[input-wavの変更については補助資料3へ移動]

[補助資料3 input-wavの編集について]
「[input-wav]」を編集すると、非シンセ、シンセ(10倍)、C5シンセ(10倍)のほかに、フォルマントを変更したものなど、新たに別の音声ファイルを活用する手も出現する。各設定について解説する。
・「RPPでのアイテム名称」では、RPPの音声アイテムの素材を置き換えるときに、アイテム名を参照してファイルを置き換える際に、なんという名のアイテムを置き換えるのか指定することができる。初期設定では、例えば「非シンセ」という名のファイルを非シンセ音声ファイルに置換している。
・「置き換え後のファイルの場所」では、置き換え先の音声ファイル(初期設定では非シンセファイル、シンセファイルなど)のパスを指定する。上記で指定したアイテム名のアイテムを、ここで指定したパスの音声ファイルに置換する。
・「シンセ伸ばし量」では、シンセのタイムストレッチを何倍にするか指定できる。現時点では整数しか許容されない。非シンセのときは当然音を伸ばしていないので1倍である。
・「モード」では、非シンセかシンセか選ぶ。この設定は、ピッチをすでに統一している場合とそうでない場合に動作が変わるために設定の必要がある。非シンセモードにすると、まだピッチの統一がされていない前提なので、プログラムでピッチを検出して自動調整する。また、シンセモードにすると、ピッチが統一されているのが前提になるので、特に補正することはない。

[補助資料4 コマンドについて]
コマンドはスペース区切りで入力できる。使い方については「help」を入力し、出力内容を参照されたし。
例として、初期化をしたり、アップデートをしたり、初期生成ファイルを個別に初期化したりすることができる。
なお、コマンドライン引数が使える。コマンドプロンプト等で、「cd」コマンドでAutoRedZone.exeファイルのある場所へ移動し、「AutoRedZone 〇〇」と入力することでコマンドライン引数を使用できる。コマンドライン引数には、実行時に入力するコマンドをそのまま打ち込むことができる(例:「AutoRedZone install」)。

[補助資料5 高速処理モードについて]
本プログラムは本来、一つのプロセスとして、CPUを分割せずに処理している。しかしながら、それだとexoファイルの生成に膨大な時間を要するため、プロセスを自動で分割してなるべく多くのコア・スレッドで同時に処理するモードを用意した。
◯メリット
処理が早く完了する。開発環境での実験では、たとえば8分かかる処理を3分に短縮する効果が観測された。
◯デメリット
・処理の経過を見られなくなる。処理がどれだけ終わってるか、その状況を確認することができない。
・特に長い動画を処理する場合、コアを全て使うので、PCが非常に重くなる。
・トラブルが起きやすい。またエラーが出てもサポートがしにくい。予期せぬ動作の可能性が高まる。
・生成するexoの数が少ないと大して早くならない。1つだとほぼ変わらない。
◯利用方法
生成を開始するとき、ただEnterを押すのではなく、「run hispeed1」をタイプする。なおソフトでは、「help」を表示してもこの利用方法は案内されない。


[さらに上級者向けの機能]
通常の方向けには公開しない情報というのは、基本的には直接尋ねていただけるとありがたいです。しかしながら、ほかのソフトウェアとの連携をしやすくするための機能等について解説が一切ないのでは、プラグイン等を作ろうとしてくださる方がいたときに簡単に諦められてしまいそうなので、概要だけは示しておくこととしました。細かいことはぜひ聞いてください。すでにここに書いてあることを質問していただいてもかまいません。
※コマンドライン引数については[補助資料4]へ移動

〇AutoRedZoneの自動生成を起動する際のオプション
「run」で自動生成を開始すると、自動的に自分のディレクトリにある「params.txt」を開こうとします。しかしながら、それでは連携がしづらいと感じられることもあろうかと思います。そこで、パラメータテキストを指定して実行することができるようになっています。
・できること
「params.txt」以外の名前がついたパラメータファイルを読み込ませる。
・本機能の目的
例えばパラメータを自動生成するソフトウェアもしくはパラメータを編集しやすくするGUIなどを開発した際に、そのパラメータをファイルに書き出してAutoRedZoneに読み込ませられるようにすることで、連携を図りやすくする。
・使用方法
「run -i [ファイルパス]」のように入力する(ファイルパスはパラメータファイルのものを指定します)。

〇バッチファイル的なものの使用
AutoRedZoneでは「.arzb」という拡張子を定めており、AutoRedZone専用のバッチファイル的なものとして位置付けています。
・できること
バッチファイルのようにコマンドを羅列することで、順番通りに自動で実行される。
・本機能の目的
いっぺんに複数の処理をしたいときに、何度もAutoRedZoneを開く必要なく一気に処理をすることができるので、高速化が期待できる。
・使用方法
AutoRedZoneに入力するコマンドと同様のものを「*.arzb」というファイルに記述する(文字コードはutf-8)。ただし、都度改行する。
※先頭に「// 」と入力すると以降の文が無視されるので、コメントを書く際などに使用する。スラッシュ2つの後に空白必須。
・注意事項
例えばarzbファイルが自分自身を呼び出したとしたら、無限に処理が続くことになります。それを防ぐため、arzbファイルが「bat」コマンドを実行することは禁じています。
〇ケーラから譲渡されたexo, RPPのパス等を効率的に置換するツール
ケーラからexoやRPPが譲渡されたとき、通常はパスを自分で変更する手間が生じるが、それを効率的に実現できる。
・できること
本プログラムの「install」や「update」の時と同じように、聞かれたパスを指定するとそのパスに自動で変更される。さらに、原曲などAutoRedZone導入時と設定が共通する場合にはその情報を再利用できる。
・本機能の目的
例えばRPPが大量に渡されたときなどに、パスの再指定の手間をほとんどなくして簡単に開くことができる。
・使用方法
ケーラから「*.arzf」が渡されたら、「kclone -i *.arzf」を実行する。なお、「--notask」を指定することで、過去にパスを指定したことがあるもの(例えば原曲など)はパスを聞かれることなく勝手に置換するのでかなりすばやく生成できる。

〇メッセージの出力
・できること
arzbファイルで実行する際に、必要なタイミングでメッセージを出力できる。
・本機能の目的
arzbファイルを誰かに渡したときに、その人に知らせたい事柄を知らせたいタイミングで見せることができる。
・使用方法
「print [メッセージ]」と入力する。空白使用可。改行する際はprint文を分けて記述する。

〇指定時間待機
・できること
arzbファイルで実行する際に、任意の秒数待機することができる。
・本機能の目的
arzbファイルの使用がすこし便利になりそう。
・使用方法
「sleep [時間]」と入力する。時間は秒単位で指定する。


〇今後の更新等の計画について
・exoの生成が遅すぎるので、c言語で書き直す計画をしています。ただし、あまり経験がないため失敗する可能性もあります。
・私以外が開発したソフトウェアを併用してrppやexo以外のものの生成にも対応させられるように、プロジェクトファイル生成に有用な情報だけを自動で出力できるような仕組みを作ろうと考えています。

〇その他
・突如として更新を終了する可能性があります。
・ソースコードの公開は現時点で予定しておりませんが、開発に関わりたい方からの連絡を募集したいと思っています。また、使用されている技術について直接教えるようなこともぜひしたいと思っております。どうぞ遠慮なくご連絡ください。
・開発者は、プログラミングに関してそこまで知識のない18歳男性です。なお、通常の高校生などよりも情報系の教育を多く受けておりますが、実務経験等はありません。ソフトウェアの公開も今回が初めてです。