VOICEPEAK〈末尾無音区間問題〉
※当記事はかんしくんv1.6.0alpha5公開以前に筆者が行っていたVOICEPEAK末尾無音区間の自動消去手法について記載しています。
現在はかんしくんのsettingだけで簡単に無音区間対策ができるようになっています。おおぶ神に最大の感謝を。
現在の方法についての解説と、「それ以前の手法もまだ使い道があるぞ!」という筆者のあがきを記事の最後に追記してありますので是非読んでいって下さい。
前置き
当記事を開いてくださってありがとうございます。
宵結(ゆうゆい)と申します。
当記事は筆者がVOICEPEAKの末尾無音区間を消すためにどのようなことをやっているか?について記述しています。
基本的に「Aviutl」「PSDToolKit」「かんしくん」の利用
及び「ゲーム実況動画」の制作を前提とした話になります。
また、前記事を未読の方は併せて一読くだされ。
末尾無音区間があると何が問題か?
テンポがくっっっっっっそ悪くなるの!!!!!1!
これに尽きます。以上です。
もうちょっと説明しろ?もう仕方ないなぁ~キテレツくんは
VOICEPEAKから出力されたwavファイルの末尾にはだいたい0.3~0.5秒の全く音が入っていない部分が存在します。
なぜそんなのが必要なのか?知りません。AHSさんだけが知っている。
この部分は私以外にもかなり前から苦言を呈してる人がちらほらいます。
にも関わらず未だに消えていないということはおそらく今後もなくなることはないでしょう。
んでこれがあると何が厄介かというと
「超高速掛け合いが作りにくい」
という問題に繋がります。他投稿者様の動画を直接引用するのはスゴイシツレイなので、各々の記憶から事例を引きずり出して頂きたいのですが
昨今のソフトウェアトーク動画って話速が早いんですよ。
コンテンツが溢れかえった情報化社会において時間あたりの情報量はそのまま面白さに直結しているといって過言ではありません。
無論例外はありますが、ネタを畳み掛けるときや目まぐるしく場面が変わる時は必然スピードが早くなります。
となればこれまた必然、台詞と台詞の間が無くなっていきます。
いわゆる台詞の余韻ってやつですね。
で、この余韻ですがVOICEPEAKでは絶対に0.3~0.5秒存在しています。
それに対してゆっくりやVOICEROID+は0秒です。おそらくA.I.VOICEやCeVIOなども。
その違いが何を引き起こすか、実際に聞いていただきましょう。
〈余韻:同〉アイちゃんときりたんの余韻を同じ0.2秒に調整済
https://youtu.be/EijWejTPBXc
(余韻:異)wavファイルを無加工で並べた場合
https://youtu.be/RcgyWQCJHsY
どうでしょう?余韻時間が違うと不自然ではないでしょうか?
このように余韻が異なる、また長すぎるというのは動画の出来にマイナスをもたらしてしまうわけです。
だったら一つ一つの無音部分を削除すればいいだろって?
手動で?膨大な量の音声ファイルを?
ほならね、自分がやってみろって話でしょ?
無茶なこと言わんで下さい。
ただでさえボイロ動画は作業量が多いんです。
まあ私の2本目の動画「【遊戯王マスターデュエル】墓地メタバーンでティアラもビーステッドも焼き尽くせ!【ボイスロイド/ボイスピーク実況】」はAviutl上の音声オブジェクトを手動で調整して作ったわけですが(露骨な宣伝)
もうにどとやりたくない(白目)
VOICEPEAKはキャラ同士の掛け合いをするゲーム実況じゃ使えないのか?
劇場や解説系動画でしか使えないのか?
――――――いや、そんなことはないはずだ
そんな無駄な熱意が生み出した解決法が以下のとおりです
本題
おおぶ氏が提供するAviutlプラグイン「ごちゃまぜドロップス」を利用します。
ごちゃまぜドロップスのディレクトリ内に「psdtoolkit_wav.lua」というファイルがあります。
このluaファイルは同氏が提供するAviutl外部ツール「かんしくん」のAPIとして.wavと.txtが投げ込まれた際に拡張編集にオブジェクトを配置する振る舞いを規定するプログラム…だと思われます。たぶん。めいびー。
で、このファイルをなんらかのエディタで開き、382行目あたりを見るとこんな感じになっています。
![](https://assets.st-note.com/img/1693201236740-88rdDnWpJa.png?width=1200)
このブロックで行っている処理はコメントに書いてありますね。
「かんしくん経由でやってきたwavファイルのフレーム数の計算」をしています。
ここで算出した数値を元に466行目以降の処理で実際にオブジェクトの挿入が行われています。
つまり、ここの処理に一手間加えれば音声オブジェクトの末尾を既定値分だけ自動削除することが可能になるというわけです。
実際に改造したソースコードがこちら
![](https://assets.st-note.com/img/1693202258460-CXRBHw5LbN.png?width=1200)
詳細は省きますが要するに「きりたんのwavファイルが投げ込まれたらオブジェクトの長さを20フレーム引く」処理を追加しました。
これにより60fpsプロジェクト上で約0.33秒の自動末尾削除が行われ、ある程度余韻を気にすることなく使えるようになりました。
…ハイ。これでもある程度です。気が向けばそこらへんについて何故20フレームなのか、何故末尾無音区間が0.3~0.5秒と幅があるのか、このコードの問題点などを兼ねてまた別記事で書こうかと。
またここの記述法は各個人の環境(かんしくんsetting設定)ごとに変わるのでご注意を。
筆者は著作権やらライセンスやらに疎いので直接配布はしません。同じ方法を使いたいという人がいらっしゃいましたら気合でベタ打ちするないし筆者にDMを送るなどしてください。
実はもっとスマートな方法アリ〼
ところでこれを作った当時筆者は意気揚々とTwitterに上げたんですが、その直後におおぶ様からこんなリプをいただきまして
「ファイルを投げ込む前に音声処理をしたい」という用途では、かんしくんの modifier で execute を使うことで処理できるようになっています。https://t.co/qPURZMf7dE
— おおぶ (@oovch) June 11, 2023
これは sox を使って前後の無音区間を除去する例です。
このようにすればかんしくん側だけで処理が完結しますよ。
…マジデスカ?
これがあればフレーム数だのなんだの一切考える必要ないじゃないかヒャッホーイ!圧倒的感謝…!ありがてぇ…ありがてぇ…!!
と意気揚々と導入してみたはいいんですが
![](https://assets.st-note.com/img/1693203830573-letfg7VKaq.png?width=1200)
なんで?(殺意)
色々調べてみた結論、どうにもおま環っぽいです。
なぜか私のWindowsがexeファイルを呼び出す際に待ったをかけてくる謎挙動を起こしてると思われます。
色々やって解消できなかったので私はこちらの利用を諦めました。
皆さんはできるだけSoXを利用した方法を使いましょう、
というのが本記事のオチでごぜぇます。
ちゃんちゃん。(アイリスアウト)
※追記2023/12/08
上記のbat経由のSoXを利用した方法ができた!という人は筆者のツイッターに報告いただければ幸いです。
よろしくお願いします。
------------------------------------------------------------------------------
※追記 2024/01/12 かんしくんだけで完結する時代
かんしくんv1.6.0alpha5、公開。
変更点
modifier の execute 関数に特別な識別子 <IN> と <OUT> を追加
%BEFORE% と %AFTER% のようなファイルでの受け渡しの代わりに、標準入力と標準出力でデータを受け渡します
音声の前後の余白を自動カットしたりできます
おおぶ様が全部やってくれました。
筆者の環境ではなぜか失敗したbatファイル経由でSoXに処理を渡すコマンドをかんしくんのsetting内だけですべて記述できるようになりました。
具体的な手法についてはこちらを参照。
記事名は「A.I.VOICE2とかんしくんの」となっていますがVOICEPEAKやその他連携可能なソフトでも全く同じです。
[[rule]] セクションに以下の一文を付け加えることで自動処理してくれるようになります。
execute("<IN>", "<OUT>", [[C:\Program Files (x86)\sox-14-4-2\sox.exe]], "-t", "wav", "-", "-t", "wav", "-", "silence", "1", "0.1", "0.01%", "fade", "t", "0.01", "reverse", "silence", "1", "0.1", "0.01%", "fade", "t", "0.01", "reverse")
今までと同じく「SoX」のインストールが必須であり、インストール先のパスを正しく記述しなければならないことに注意して下さい。
これを導入して、PSDToolKitの終了マージンを3フレームに設定した上でVOICEPEAKの音声をAviutlタイムラインに並べた結果がこちらです。
SoXでVOICEPEAKの末尾無音を削除させたパターンを何例か pic.twitter.com/rwYneRxEhw
— 宵結 (@yuuyuiyuu) January 9, 2024
(感涙)
ちなみにですが、↑の右上にも表示させている通り
「Aviutl音声波形に変化がない部分」を数えた時、4~10フレームほどの無音区間がまだ存在しています。
ちゃんとした解析ソフトで調べれば音声があるのかもしれませんが、「ほぼ音が存在していない部分である」と言い切ってしまっても良いのではないかと筆者は考えています。
少しでもこの無音部分を消し去りたい、という方は最初に書いた「lua書き換えによるフレーム減算法」も併用してみてはいかがでしょうか?
とまあ、自分が作り上げたあれこれを完全に無意味なものになってしまうと虚無感に襲われてしまいそうな筆者の最後のあがきを叫んだところで今度こそ終わりとさせていただきたく。
ではでは、よきVOICEPEAKライフを~~~!
この記事が気に入ったらサポートをしてみませんか?