VOICEROID2(32bit版)では、インストールされているキャラクターが多いとメモリ不足による問題が発生します。
そこで、今回は、各キャラクターのメモリの使用量を調査しました。
これらの情報がVOICEROID2のメモリ不足で困っている方への手助けになれば幸いです。
また、2020年10月7日にVOICEROID2を64bit版にするアップデータがAHS公式サイトの右上にあるマイページで公開されているため、OSが32bit版ではない限りは、64bit版へのアップデートを推奨します。
<更新履歴_クリックで開く>
- 2020/6/12
VOICEROID2のメモリ使用量について再度調査したところ、メモリ増加に関係する箇所が分かったため、追記しました。
- 2020/6/13
VOICEROID2が読み込み可能なZipファイルを作成するプログラムを公開しました。
下記のリンクにあるImagesZipForV2フォルダのImagesZipForV2.zipファイルをダウンロードして解凍してください。(2020/6/20 Ver 1.0.1)
公開用 - Google ドライブ多少のバグがあると思いますがご了承ください。上記のリンクは余談にあるリンクと同じものです。
- 2020/6/20
- images.datとメモリの使用量の関係について補足を追加しました。
- ImagesZipForV2を更新しました。(Ver 1.0.1)
- 2020/8/24
キャラクターのボイスデータを別のフォルダに移した場合標準のプリセットの値が初期化される件について追記しました。
ユーザーのプリセットについては、消えないと思いますが念のため、バックアップを取ることをお勧めします。
- 2022/10/30
ニコニコのブロマガの画像リンク切れの修正とGoogleドライブの公開URLを更新しました。
- VOICEROID2(32bit版)のメモリサイズの制限について
- 調査環境について
- 調査方法と結果について
- 各キャラクターのメモリ使用量の順位について
- 調査結果のまとめ
- この問題の対策について
- <余談>VOICEROID2が読み込みできるzipファイルについて
VOICEROID2(32bit版)のメモリサイズの制限について
VOICEROID2(32bit版)は、32bitソフトウェアであることから、ソフトウェアが使用できるメモリの最大が2GBまでになっています。
その影響のためかVOICEROID2のコミット※が1GBを超えるとVOICEROID2の動作が不安定になります。
例えば、ファイルを開くときや音声を保存する時に表示されるウィンドウにおいてファイルのアイコンが真っ暗になるなどの症状があります。
※OSがそのソフトウェアが使用できる領域として予約しているサイズ。
ソフトウェアが物理メモリ上で使用しているサイズは、ワーキングセットと言われコミットとは異なります。
調査環境について
環境は以下の通りです。
- VOICEROID2:Ver 2.1.0.0 (2020/4/25時点最新版)
- OS:Windows 10 Pro Ver 1903
VOICEROID2のフレーズ、プリセット等は全て初期化した状態で調査しています。
また、今回の調査に影響は与えないと思いますが、各キャラクターは
ライセンス未認証の状態で行っています。
今回のテストにおいて、フレーズやプリセットをすべて削除する必要があり、
テスト後に元に戻すことが面倒であったため、サブパソコンに各キャラクターを
インストールして調査を行いました。
調査で使用したキャラクターは、以下の計12名になります。
V1:京町セイカ、東北きりたん、東北ずん子
V2:琴葉茜、琴葉葵、結月ゆかり、紲星あかり、桜乃そら
東北イタコ、ついなちゃん(関西)、ついなちゃん(標準)、伊織弓鶴
V2感情値無し V2感情値有り
調査方法と結果について
各キャラクターのメモリの使用量は、4つの方法で調査しました。
メモリの使用量については、タスクマネージャーのリソースモニタを使用しました。
メモリの使用量は、VOICEROID2エディタのウィンドウが表示されてから
2,3秒待った後の値を記録しています。
エディタにインストールされているボイスを1つにして調査
各キャラクターのみインストールした場合のVOICEROID2のメモリ使用量を調べました。
その測定方法だけでは、メモリ使用量にソフトウェア自身とボイスが含まれており、各キャラクターのボイスによるメモリ使用量は分からないため、
次の方法と組み合わることで各キャラクターのメモリ使用量を計算しました。
(A) 12人を4つのグループに分け、その各グループの3人を組み合わせて調査
分け方は、3人の中に感情値ありとなしが入るようにしたのみで
それ以外はランダムに選びました。グループは以下の通りです。
・グループA:京町セイカ、琴葉茜、琴葉葵
・グループB:結月ゆかり、東北きりたん、紲星あかり
・グループC:東北ずん子、桜乃そら、東北イタコ
・グループD:ついなちゃん(関西)、ついなちゃん(標準)、伊織弓鶴
この2つの方法における調査結果は以下の画像になります。
"差分 平均"の項目は、下の画像の"差分"における各キャラクターの平均値になります。
エディタ"の項目は、各キャラクターのみの場合のメモリ使用量の平均から
"差分平均"の項目の値を引くことで、エディタ自身のメモリの使用量を計算しています。
"差分"の項目は、2人または3人の組み合わせにおけるメモリ使用量から対象以外のキャラクターがインストールされている場合のメモリ使用量を引くことで各キャラクターのメモリ使用量を計算しています。
(B) エディタにインストールされているボイスを琴葉姉妹と他1人にして調査
上記2つの方法では、あるキャラクターのメモリ使用量がどのキャラクターと組み合わせられたかによって、メモリ使用量の計算結果にばらつきがありました。
そのため、琴葉姉妹を固定にすることで、そのばらつきが出にくくなるようにしました。
今回の調査では、琴葉姉妹は対象外になります。
(C) エディタが12人のうち、あるキャラクターを除いてインストールされている状態で調査
始めにエディタが12人全てをインストールしている場合のメモリ使用量から
あるキャラクターをインストールされていない場合のメモリ使用量を引くことで
各キャラクターのメモリ使用量を計算しました。
各キャラクターのメモリ使用量の順位について
上記4つの方法で計算した各キャラクターの使用量における順位は以下の通りです。
ワーキングセットよりもコミットの値の方がVOICEORID2のメモリ不足問題に関係するため、そちらの値の順位を出しています。
感情値ありのキャラクターは、感情値なしのキャラクターよりも
コミットサイズが大きいです。
感情値なしのキャラクターは、1人あたり約30MBに対して
感情値有りのキャラクターは、1人あたり約70-120MBと
感情値なしの2~4人分のコミットサイズに相当します。
感情値ありでは、
東北イタコ、琴葉姉妹がそれぞれ感情値なしキャラ4人分とコミットサイズが大きく、
伊織弓鶴は、感情値なしキャラ2人分とコミットサイズが小さいようです。
感情値なしでは、
各キャラクターでコミットサイズに大きな差はありませんが、
東北きりたんのみは例外で他のキャラクターと比べて約半分とコミットサイズが小さいです。
この差について、ボイスデータのファイルのサイズを疑いましたが、
関連性は見つけられませんでした。
[2020/6/12 追記]
メモリ使用量の差は、images.datファイルのサイズが関係します。
各キャラクターのimages.datファイルのサイズを調べました。
キャラクター名 | images.datサイズ(MB) | メモリ使用量(MB) |
---|---|---|
東北イタコ | 13.44 | 122.3 |
琴葉茜 | 12.45 | 121.3 |
琴葉葵 | 11.31 | 117.7 |
結月ゆかり | 9.20 | 97.7 |
伊織弓鶴 | 6.96 | 70.0 |
紲星あかり | 3.09 | 31.7 |
ついなちゃん(標準) | 3.00 | 29.3 |
東北ずん子 | 3.25 | 27.7 |
京町セイカ | 1.58 | 27.3 |
桜乃そら | 2.40 | 26.7 |
ついなちゃん | 4.07 | 26.0 |
東北きりたん | 1.13 | 15.0 |
多少のずれはありますが、images.datファイルのサイズが大きいキャラクターほど
メモリ使用量が大きくなります。
images.datファイルのサイズ×10がメモリ使用量の増加の目安になります。
[2020/6/20追記]
images.datファイルが大きいとメモリ使用量が大きくなると上記で説明しましたが、
正しくは、メモリの使用量は、画像のピクセル数 と 枚数 に依存します。
そのため、画像を全て白色にした場合、images.datが十数kバイトほどまで減りますが
メモリ使用量は減りません。
画像によるメモリ使用量の計算例として、東北イタコは
画像:560×769ピクセル (アイコンを除く)
枚数:48枚 (アイコンを除く)
となります。
画像を扱うにあたり、メモリにはBitmap(ARGB)方式で格納されるため、
1ピクセルを4バイトとして計算すると
560 × 769 × 48 × 4 = 82,682,880 byte = 約82Mバイトになります。
それに対して、伊織弓鶴は
画像:278×775ピクセル (アイコンを除く)
枚数:48枚 (アイコンを除く)
278 × 775 × 48 × 4 = 41,366,400 byte = 約41Mバイトになります。
2人のメモリ使用量の差(53Mバイト)と
画像から計算したメモリ使用量の差(41Mバイト)には
まだ約10Mバイトの差がありますが、その差は音声データの差によるものと思われます。
これらの調査結果について、
エディタ本体のコミットが約140MB
各キャラクターのコミットの合計が約720MB
計860MBに対して
12人がインストールされた時のコミットが900MBと約40MBの差があります。
差の原因は分かりませんが、エディタにインストールされたキャラクターが増えると
エディタ本体のコミットサイズが大きくなるのではないかと思います。
調査結果のまとめ
私がVOICEROIDを使用していて、起動時のコミットのサイズが900MBまでが
最低限安定して動作できるメモリ使用量だと思います。
ただし、起動時のコミットが900MBである場合、テキストファイルの読み込みと
音声の再生を行うとコミットが1GBを超えるため、
定期的なVOICEROID2の再起動とこまめな保存が必要になります。
その起動時コミットが900MBになるまでにどれほどのキャラクターが
インストールできるのかについて、
感情値有りのキャラクターを110MB
感情値なしのキャラクターを30MB
エディタを180MB(不明の40MBを加えた)
と仮定した場合、コミットの余裕は720MBであるため、
感情値有りのキャラクターは、6人分
感情値なしのキャラクターは、24人分
となります。
2020/4/26時点でVOICEROID2(32bit版)にインストールできるボイスロイドの数は
V1が11名、V2感情値なしが4名、V2感情値ありが5名であるため、
合計が330MB+120MB+550MB=1000MB
エディタ180MBと合わせて1180MBとなります。
そのため、全てのボイスロイドのキャラクターをインストールした状態での
安定動作は期待しない方が良いです。
また、これらの調査結果は、フレーズ、プリセット無しの場合で調査しているため、
エディタに登録されているフレーズとプリセットの数によって、
コミットサイズの余裕量が変わります。
参考として、私の環境(フレーズ961個:390KB、プリセット131個:43KB)において
キャラクター12人では、910MBと調査結果よりも約10MBほど多くなっています。
この問題の対策について
現状は、以下の4つあります。
- VOICEROID2を64bit版へアップデートする(最も推奨)
2020年10月7日にAHSからVOICEROID2を64bit版へアップデートするアップデータが公開されました。AHSの公式サイトの右上にあるマイページにて、登録を行った後、そのマイページからアップデータをダウンロードできます。
OSが32bit版ではなければ、VOICEROID2を64bit版へアップデートすることを強くお勧めします。
また、アップデート後、VOICEROID2は32bit版と64bit版の両方が残るため、VOICEROID2の64bit版が標準で起動するか確認することをお勧めします。
通常は、Program FilesにあるVOICEROID2が64bit版、Program Files (x86)にあるVOICEROID2が32bit版になります。
- LAA(Large Address Aware)をONさせる (exeファイルの改造が必要であるため非推奨)
Aviutlを使用している方は、聞いたことがある名前だと思います。
これは、32bitのソフトウェアが使用できるメモリサイズを2GBから4GBに変更する設定になります。
Aviutlでは、LAAをON/OFFできる設定項目がありますが、VOICEROID2にはLAAを設定する項目がありません。
どのようにしてその設定を変更するかと言えば、VoiceroidEditor2のexeファイルのバイナリを編集してONさせます。
しかし、方法としては、あまり推奨できる方法ではないため、この記事では方法を説明しません。
LAAをONさせた場合、コミットが1GBを超えてもVOICEROID2の動作がおかしくなることは、なくなりました。
- 使用しないキャラクターをアンインストールするかボイスデータを別のフォルダに退避させる (注意点あり 2020/8/24追記)
コミットのサイズが大きくなるのは、キャラクターのボイスデータを読み出していることが原因であるため、使用しないキャラクターをアンインストールすることでメモリ使用量を減らすことが出来ます。
ただし、再インストールをすると再度認証が必要になると思われます。
(アンインストールをしたことがないので、再認証が必要かどうかを把握していません。)
また、アクティベート認証には、回数制限があるため、回数制限を超えると公式に問い合わせて、回数をリセットしてもらう必要があります。
アンインストールなしでエディタが読み出すボイスデータを減らす方法として、
C:\Program Files (x86)\AHS\VOICEROID2\Voice
にあるキャラクターのボイスデータを別のフォルダに退避させることでもエディタが読み出すボイスデータを減らすことが出来ます。(今回の調査では、この方法を用いてキャラクターの増減を行っています。)
上の画像では、yukari_emo_44(結月ゆかりV2)のデータを別のフォルダに退避させています。
別のフォルダに移したキャラクターは使用できなくなり、認証済み一覧から無くなります。
今回の場合は結月ゆかりが認証済み一覧から消え、使用できなくなりました。
しかし、そのキャラクターの認証済みが解除されている訳ではないので、そのボイスデータをVoiceフォルダに戻し、VOICEROID2を再起動すれば、使用することが出来ます。
[2020/8/24 追記]
ただし、別のフォルダに移動させたキャラクターは
標準のプリセットの設定が初期化されるため注意が必要です。そのため、標準のプリセットを使用している場合は、下の画像のようにユーザーのプリセット一覧にそのキャラクターの標準用のプリセットを1個作成することをお勧めします。
ユーザーのプリセット一覧に紲星あかりの標準用プリセットとして "紲星あかり_標準"を作成
ユーザーのプリセットについては、キャラクターの移動後にプリセットの保存を行ってもそのキャラクターのプリセットが削除されることはなかったため、大丈夫だと思いますが、念のため、定期的にバックアップを取ることをお勧めします。
下の画像では、紲星あかりを別のフォルダに移した場合におけるユーザーのプリセット一覧の表示例になります。
存在しないキャラクターのプリセットは黒く表示されますが動作に影響はありませんでした。
また、長期の間、ボイスデータを別のフォルダへ退避させたときに認証済みが保持されるかどうかは未検証であるため、注意が必要です。もし、認証済みが解除されることがあった場合は、この方法は、あまり行わない方が良いと思います。
ボイスデータを別のフォルダへ退避 =>
VOICEORID2の起動退避したデータを元に戻す =>
VOICEORID2の起動
上記の動作を5回繰り返しても、認証済みが切れることはなくアクティベートの回数制限を超えたなどのエラーは出ませんでした。
[2020/6/12追記] - images.datファイルを改造 または 読み込まないようにする。(改造が必要であるため、非推奨。ただし、効果は大きい)
この方法について、実施する場合は、自己責任になります。ご了承ください。
images.datファイルが各キャラクターのメモリ使用量に大きく影響を与えているため
そのファイルを改造、または読み込まないようにすることでメモリ使用量を大きく減らすことが出来ます。- images.datファイルを読み込まないようにする
VOICEROID2のVOICEフォルダの各キャラクターのフォルダにあるimages.datファイルを別名(images2.datなど)に変更することで、VOICEROID2はimage.datファイルを読み込まないようになります。
ただし、以下の画像の様にキャラクターのアイコンとキャラクター画像が
表示されなくなるため、とても不便になります。それを改善するためにdatファイルを改造します。
- images.datファイルを改造する
この改造のよって、キャラクター画像は表示されなくなりますが、アイコンは表示されるため、不便にはなりません。
- images.datファイルをコピーする(重要)
images.datファイルの改造に失敗した時に元に戻すために
バックアップを作成します。 - images.datファイルをimages.zipファイルに変更する。
このdatファイルはzipファイルであるため、拡張子をzipファイルにすると開くことが出来ます。
- images.zipファイルを開く
(注意)ファイルを開くは、解凍するという意味ではありません。
VOICEROID2は、7-zipやWindows OS標準の機能でzipに圧縮したファイルを読み込みません。
そのため、解凍して再度zip化、datファイルに変更してもVOICEROID2はそのdatファイルを読み込まないため、注意が必要です。
もし、7zipなどのソフトが自動でzipファイルを解凍してしまう場合は以下の様に行います。<3-1> images.zipを右クリックして、"プログラムから開く"を選択する
<3-2> エクスプローラーを選択する
このようにすることでzipファイルを解凍せずにzipファイルの中身を
開くことが出来ます。 - icon.pngファイル以外のフォルダを削除する
images.zipの中には、
・スタイルがあるキャラクターは、フォルダA, J, N, S
・スタイルがないキャラクターは、フォルダN
があります。それらのフォルダをすべて削除し、imagesフォルダの中にはicon.pngのみになるようにします。
- images.zipをimages.datに戻す
- VOICEROID2を起動する
以下の様にキャラクター画像は表示されませんが、アイコンのみは表示されるようになります。
- images.datファイルをコピーする(重要)
- images.datファイルを読み込まないようにする
(B)の方法を12名のキャラクター全員に行ったところ、
メモリ使用量は、約900Mbyteから360Mbyteまで減ることが確認できました。
<images.datファイル改造前>
<images.datファイルを12名全員改造した後>
VOICEROID2のメモリ使用量の調査と対策については以上になります。
<余談>VOICEROID2が読み込みできるzipファイルについて
VOICEROID2が読み込み可能なzipファイルを作成する方法として私が見つけているのは、以下の方法になります。
.NET FrameworkのZipFileクラス(System.IO.Compression)の
メソッドCreateFromDirectoryを使用してzipファイルを作成する。
[URL] https://docs.microsoft.com/ja-jp/dotnet/api/system.io.compression.zipfile?view=netcore-3.1
検証では、.NET Framework 4.6.1を使用しましたが
ZipFileクラスが存在する4.5以降であれば問題ないと思います。
また、.NET Frameworkを使用している圧縮・解凍フリーソフトがあれば、
それを使用しても問題なく作成することが出来ると思います。
しっかり検証した訳ではないので、他にも色々な方法があると思います。
[2020/6/13追記, 2022/10/30 URL修正]
VOICEORID2が読み込み可能なZipファイルを作成するプログラムを
グーグルドライブ上で公開しました。
下記のリンクにあるImagesZipForV2.zipファイルをダウンロードしてください。
VOICEROID2が読み込み可能なzipファイルが作成できるようになると
下の画像の様にキャラクターの画像の差し替えが可能になります。
上の画像の立ち絵は、ゲソの極みDAS様の立ち絵を使用させて頂きました。
試していませんが、アイコンについても差し替えが可能だと思います。