「Irodori-TTS-v4.1-Anime」アニメ風音声対応の音声合成モデル:当サイトの生成音声・配布ファイル一覧

2026年10月1日

「Irodori-TTS-v4.1-Anime」アニメ風音声対応の音声合成モデル:当サイトの生成音声・配布ファイル一覧

基本情報

項目 内容
リポジトリ phasefield-audio/Irodori-TTS-v4.1-Anime
公開日 2026-09-04
ライセンス mit
配布形式 safetensors
出典の種類 公開元の一次情報(HF公式リポジトリが一次情報)

情報を集めた時点で、当サイトのコードが確定させた値です。日付はJSTで表示しています。

当サイトで確かめたこと

  • 当サイトのサーバーで、当サイトが書いた固定の文を読ませた音声を、選別・加工せずに載せています。

詳しい値と条件は、下の「当サイトでの実測」の節にあります。

概要

アニメ調の音声データを用いてファインチューニングされた、日本語テキストから音声を生成するTTS(Text-to-Speech)モデル「Irodori-TTS-v4.1-Anime」が公開されました。本モデルは、ベースモデルである「Aratako/Irodori-TTS-v4.1-Small」を基に、アニメスタイルの音声データを用いて調整が行われています。

スペック

  • ベースモデル: Aratako/Irodori-TTS-v4.1-Small
  • ライセンス: MIT License
  • 配布形式: safetensors
  • 量子化バリエーション: int8-weight-only, int8-dynamic, int4-weight-only, float8-weight-only, float8-dynamic

なお、ベースモデルの注釈パイプラインが公開されていないため、本モデルのファインチューニングデータは独自に注釈付けされています。そのため、キャプションによる条件付けや絵文字による制御の挙動がベースモデルとは異なる可能性があります。

性能・品質

本モデルは「Aratako/Irodori-TTS-v4.1-Small」の派生版であり、元モデルの性能は以下のベンチマークによって示されています。

Joyo Kanji Yomi Benchmark

→ 横にスクロールできます

Model Kana-CER ↓ Kana-CER clipped ↓ Sentence Kana-CER ↓ Standard CER ↓
Irodori-TTS-600M-v3-VoiceDesign 8.49 ± 0.21% 5.59 ± 0.09% 2.45 ± 0.02% 4.88 ± 0.21%
Irodori-TTS-v4-Small (original) 7.43 ± 0.17% 5.08 ± 0.03% 2.89 ± 0.03% 5.35 ± 0.18%
Irodori-TTS-v4.1-Small 7.29 ± 0.13% 5.03 ± 0.03% 2.36 ± 0.01% 4.69 ± 0.02%

JSUT BASIC5000

Model Sentence Kana-CER ↓ Standard CER ↓
Irodori-TTS-600M-v3-VoiceDesign 3.62 ± 0.03% 7.19 ± 0.05%
Irodori-TTS-v4-Small (original) 3.49 ± 0.02% 7.32 ± 0.09%
Irodori-TTS-v4.1-Small 3.43 ± 0.01% 7.22 ± 0.12%

元モデルである「Irodori-TTS-v4.1-Small」は、従来の「Irodori-TTS-v4-Small」と比較して、Joyo Kanji Yomi Benchmarkにおける全ての指標(Kana-CER、Kana-CER clipped、Sentence Kana-CER、Standard CER)で数値が改善(低下)しています。また、JSUT BASIC5000においても、Sentence Kana-CERにおいて改善が見られますが、Standard CERについてはわずかに数値が上昇しています。これらは、元モデルにおいてデュレーション予測器(duration predictor)を個別に再学習したことによる改善結果です。

得意なこと・想定用途

本モデルは、アニメスタイルの音声データを用いてファインチューニングされているため、アニメ調のキャラクターボイスを生成することに特化しています。タグには text-to-speech が付与されており、日本語のテキスト入力から音声を生成します。

ベースモデルである「Aratako/Irodori-TTS-v4.1-Small」の機能を引き継いでおり、以下の機能が利用可能です。

  • Voice cloning: リファレンス音声を用いた音声クローニング
  • Voice Design: 声質の設計
  • Long-reference conditioning: 長尺のリファレンス音声による条件付け
  • Emoji-based style control: 絵文字を用いたスタイル制御(ただし、本モデルでは独自の注釈付けが行われているため、ベースモデルとは挙動が異なる可能性があります)

なお、ベースモデルの制約として、現在は日本語のテキスト入力のみをサポートしています。また、音声クローニングの精度を安定させるためには、30秒以上の十分にクリーンなリファレンス音声が推奨されています。

動作環境

動作環境の目安(Local Model Watch 算出) — パラメータ数 766M

手持ちのVRAM 選べる量子化 ファイルサイズ 必要メモリの目安
4GB(ノートPCの内蔵GPU・スマートフォンなど) F32 2.9GB 3.4GB

必要メモリは配布ファイルの実サイズに実行時のオーバーヘッド(KVキャッシュ等)を20%見込んだ概算で、文脈長・バッチサイズ・推論エンジンによって増減します。公開元の公称値ではなく、当サイトがファイルサイズから機械的に算出した値です。 表のファイルは F32(32bit)で配布されたものの実サイズです。BF16 や量子化など低い精度で読み込めば必要なメモリは小さくなるため、最低条件ではなく配布そのままの大きさとして読んでください。低い精度での値は当サイトでは測っていません。 他のモデルとの比較はVRAM別の早見表を参照してください。 量子化の名前の読み方は用語集にあります。

手元で動かせるか

公開元の配布形式は safetensors です。

ライセンス mit(商用利用可): 商用利用を含めて自由に利用・改変・再配布できます。再配布時に著作権表示とライセンス文を残すことが条件です。

配布形式とライセンス表記から当サイトのコードが組み立てた判定です。ライセンスの要約は法的助言ではないため、実際の利用にあたっては公開元の原文を確認してください。

当サイトでの実測

当サイトのサーバー(GPUなし)で、このモデルのファイルを実際に読み込み・動かして確かめた値です。モデルカードの記載ではなく、当サイトが測った結果です。測り方と全モデルの一覧は観測データにまとめています。

当サイトで生成した音声

GPU の無い当サイトのサーバー(Neoverse-N1 の3スレッド)で、phasefield-audio/Irodori-TTS-v4.1-Anime(mit ライセンス)を配布元の推論コード(Irodori-TTS のコミット 89f9d8f)で動かし、ネットワークから切り離した環境で生成しました。読ませたのは当サイトが書いた固定の文で、参照音声は使っていません(特定の人の声を真似たものではありません)。ここに並べた音声は、声の説明(キャプション)も付けず文だけから生成しています。40ステップ・シード 0・2026-09-30生成。加工や選別はしておらず、読み間違いも含めて文ごとに1回目の出力をそのまま載せています。音声には、配布元のコードが入れる聞こえない電子透かし(SilentCipher)がそのまま入っています。

日本語の文

「今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。」(音声の長さ 6.0秒・生成に87秒)

「次の会議は3月15日の午後2時から、会議室Bで行います。」(音声の長さ 5.8秒・生成に85秒)

「えっ、もう終わったんですか?思っていたよりずっと早かったですね。」(音声の長さ 5.8秒・生成に93秒)

英語の文(参考: 試しに読ませた結果)

このモデルは日本語向けに配布されていて、英語への対応をうたっていません。本当に英語を出力できないのかを確かめるため、同じ文の英訳を同じ条件で読ませました。発音が正しいかは当サイトでは判定せず、1回目の出力を加工も選別もせずに載せています。聞いて判断してください。

「It had been raining since the morning, but it gradually cleared up in the afternoon.」(音声の長さ 7.1秒・生成に112秒)

「The next meeting will be held from 2 p.m. on March 15 in meeting room B.」(音声の長さ 6.8秒・生成に97秒)

「Oh, it’s already finished? That was much quicker than I expected.」(音声の長さ 6.5秒・生成に89秒)

声の説明(キャプション)で話者を指定した例

Irodori-TTS は、読ませる文とは別に声の説明(キャプション)を日本語で与えると、話者の年齢・性別・話し方を指定できます(配布元の Voice Design)。同じ文(「今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。」)を同じシードで、当サイトが決めた3つの説明で読ませました。比較のため、派生元の Irodori-TTS-v4.1-Small でも同じ条件で生成しています。参照音声は使っていません。声の高さは当サイトのコードが音声から推定した中央値(自己相関による概算)です。選別はしておらず、いずれも1回目の出力です。

指定なし(文だけ)

Irodori-TTS-v4.1-Anime(声の高さ 約205Hz・長さ 6.0秒)

Irodori-TTS-v4.1-Small(声の高さ 約268Hz・長さ 5.2秒)

「年老いた女性が、穏やかでゆっくりとした口調で話している。」

Irodori-TTS-v4.1-Anime(声の高さ 約177Hz・長さ 7.0秒)

Irodori-TTS-v4.1-Small(声の高さ 約203Hz・長さ 6.0秒)

「明るく元気な女子高生。アニメのキャラクターのような、高めの声で楽しそうに話している。」

Irodori-TTS-v4.1-Anime(声の高さ 約392Hz・長さ 5.9秒)

Irodori-TTS-v4.1-Small(声の高さ 約265Hz・長さ 5.2秒)

「落ち着いた低い声の中年男性。会社の課長が、会議で部下に説明するように話している。」

Irodori-TTS-v4.1-Anime(声の高さ 約189Hz・長さ 6.2秒)

Irodori-TTS-v4.1-Small(声の高さ 約143Hz・長さ 5.7秒)

環境構築と実行の手順(当サイトで実行したもの)

以下は当サイトのサーバー(Linux aarch64・Python 3.12.3)で、1つの作業フォルダから実際に実行したコマンドです。当サイトでは配布元のコードを隔離した環境で動かしているため、1と2はネットワークあり、3はネットワークなしで行っています。1の実行環境は一度作ったものを使い回しています。

# 1. 実行環境を作る(CPU 版の PyTorch・依存・配布元のコードをコミットを固定して入れる)
python3 -m venv venv
venv/bin/pip install --index-url https://download.pytorch.org/whl/cpu -c constraints.txt torch torchaudio
venv/bin/pip install -c constraints.txt torchao safetensors huggingface-hub transformers sentencepiece soundfile pyyaml peft numpy einops argbind descript-audiotools librosa pydub scipy tqdm
venv/bin/pip install --no-deps 'irodori-tts @ git+https://github.com/Aratako/Irodori-TTS@89f9d8fbd4d51ea019867ee1197725ede1df13c5' 'dacvae @ git+https://github.com/facebookresearch/dacvae@414c20785fc3a28373073ea8ef7a1316eeeaca6e' 'silentcipher @ git+https://github.com/SesameAILabs/silentcipher.git@d46d7d0893a583d8968ab3a6626e2289faec9152'

# 2. 重みを取得する(版を固定)
venv/bin/hf download phasefield-audio/Irodori-TTS-v4.1-Anime --revision 6b259f5baa5e236b3d14cbd1f8555ca87d92b530 --include model.safetensors --include 'tokenizer/*'
venv/bin/hf download Aratako/Irodori-TTS-v4.1-Small --revision 2b28324dc263ed5e6638b3cf3dd94c82ead07b4b --include model.safetensors --include 'tokenizer/*'
venv/bin/hf download Aratako/Semantic-DACVAE-Japanese-32dim --revision 47376ee24834d7a05a48ebabfe3cde29b3c5e214 --include weights.pth
venv/bin/hf download Sony/SilentCipher --revision a1c4d021905e0dc5b24be5f68db5fc4dba410ee1 --include 44_1_khz/73999_iteration/enc_c.ckpt --include 44_1_khz/73999_iteration/dec_c.ckpt --include 44_1_khz/73999_iteration/dec_m_0.ckpt --include 44_1_khz/73999_iteration/hparams.yaml

# 3. 生成する
venv/bin/python irodori_tts.py job.json out

constraints.txt は依存の版の一覧で、当サイトの実行環境で pip freeze した結果です(全文は下に)。NVIDIA の GPU がある環境では、最初の pip install の --index-url を、お使いの CUDA の版に合った PyTorch の配布先に置き換えてください。

生成に使ったスクリプト(irodori_tts.py、当サイトが書いたもの。配布元の推論コード irodori_tts.inference_runtime を呼んでいます):

"""
Irodori-TTS で、固定の文を読ませて WAV を作る(Local Model Watch の実測。記事にこのファイルの全文を載せている)。

    python irodori_tts.py <job.json> <出力フォルダ>

job.json の runs に、モデル(リポジトリと版)ごとに読ませる文(text)と、話者の指定(caption、声の説明。
無ければ文だけから生成)を書く。downloads にはコーデックと透かしの重みの版、seed・steps・threads も書く。
重みは先に hf download で同じ版を取っておく(当サイトではこのスクリプトをネットワークの無い環境で動かすので、
ここでは取りに行かない)。参照音声(声のクローン)は使わない。
出力は <id>.wav(16bit PCM・モノラル)と result.json(生成にかかった秒数など)。
"""
import json
import os
import sys
import time
import wave

def main() -> int:
    with open(sys.argv[1], encoding="utf-8") as f:
        job = json.load(f)
    out_dir = sys.argv[2]
    os.makedirs(out_dir, exist_ok=True)
    import torch
    from huggingface_hub import hf_hub_download

    torch.set_num_threads(int(job["threads"]))
    extra = {d["repo"]: d for d in job["downloads"]}
    codec = extra["Aratako/Semantic-DACVAE-Japanese-32dim"]
    codec_path = hf_hub_download(codec["repo"], "weights.pth", revision=codec["revision"])
    mark = extra["Sony/SilentCipher"]
    mark_config = hf_hub_download(mark["repo"], "44_1_khz/73999_iteration/hparams.yaml", revision=mark["revision"])

    # 透かし(SilentCipher)の重みは、配布元のコードが既定ではネットワークから取りに行く。先に取ったものを渡す
    import silentcipher
    original_get_model = silentcipher.get_model

    def get_model(model_type="44.1k", device="cpu", **_):
        return original_get_model(model_type=model_type, ckpt_path=os.path.dirname(mark_config),
                                  config_path=mark_config, device=device)
    silentcipher.get_model = get_model

    from irodori_tts.inference_runtime import InferenceRuntime, RuntimeKey, SamplingRequest

    items = []
    load_sec = []
    watermark = True
    for run in job["runs"]:
        model = run["model"]
        checkpoint = hf_hub_download(model["repo"], "model.safetensors", revision=model["revision"])
        started = time.time()
        runtime = InferenceRuntime.from_key(RuntimeKey(checkpoint=checkpoint, model_device="cpu",
                                                       codec_repo=codec_path, codec_device="cpu"))
        load_sec.append(round(time.time() - started, 1))
        watermark = watermark and bool(runtime.watermarker.ready)
        for item in run["items"]:
            t = time.time()
            result = runtime.synthesize(SamplingRequest(text=item["text"], caption=item.get("caption"), no_ref=True,
                                                        seed=int(job["seed"]), num_steps=int(job["steps"])))
            audio = result.audio.detach().to(dtype=torch.float32, device="cpu").reshape(-1)
            pcm = (audio.clamp(-1.0, 1.0) * 32767.0).round().to(torch.int16).numpy().tobytes()
            with wave.open(os.path.join(out_dir, item["id"] + ".wav"), "wb") as w:
                w.setnchannels(1)
                w.setsampwidth(2)
                w.setframerate(int(result.sample_rate))
                w.writeframes(pcm)
            items.append({"id": item["id"], "seconds": round(time.time() - t, 1)})
            print(f"[generate] {item['id']}: {items[-1]['seconds']} s", flush=True)
        runtime.unload()
        del runtime
    with open(os.path.join(out_dir, "result.json"), "w", encoding="utf-8") as f:
        json.dump({"items": items, "load_sec": load_sec[0] if load_sec else None,
                   "watermark": watermark,
                   "torch": torch.__version__}, f)
    return 0

if __name__ == "__main__":
    sys.exit(main())

スクリプトが読む job.json の項目(実際に使った値):

{
  "runs": [
    {
      "model": {
        "repo": "phasefield-audio/Irodori-TTS-v4.1-Anime",
        "revision": "6b259f5baa5e236b3d14cbd1f8555ca87d92b530"
      },
      "items": [
        {
          "id": "weather",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。"
        },
        {
          "id": "numbers",
          "text": "次の会議は3月15日の午後2時から、会議室Bで行います。"
        },
        {
          "id": "surprise",
          "text": "えっ、もう終わったんですか?思っていたよりずっと早かったですね。"
        },
        {
          "id": "persona-old_woman",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。",
          "caption": "年老いた女性が、穏やかでゆっくりとした口調で話している。"
        },
        {
          "id": "persona-hs_girl_anime",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。",
          "caption": "明るく元気な女子高生。アニメのキャラクターのような、高めの声で楽しそうに話している。"
        },
        {
          "id": "persona-kacho",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。",
          "caption": "落ち着いた低い声の中年男性。会社の課長が、会議で部下に説明するように話している。"
        },
        {
          "id": "weather-en",
          "text": "It had been raining since the morning, but it gradually cleared up in the afternoon."
        },
        {
          "id": "numbers-en",
          "text": "The next meeting will be held from 2 p.m. on March 15 in meeting room B."
        },
        {
          "id": "surprise-en",
          "text": "Oh, it's already finished? That was much quicker than I expected."
        }
      ]
    },
    {
      "model": {
        "repo": "Aratako/Irodori-TTS-v4.1-Small",
        "revision": "2b28324dc263ed5e6638b3cf3dd94c82ead07b4b"
      },
      "items": [
        {
          "id": "base-none",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。"
        },
        {
          "id": "base-persona-old_woman",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。",
          "caption": "年老いた女性が、穏やかでゆっくりとした口調で話している。"
        },
        {
          "id": "base-persona-hs_girl_anime",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。",
          "caption": "明るく元気な女子高生。アニメのキャラクターのような、高めの声で楽しそうに話している。"
        },
        {
          "id": "base-persona-kacho",
          "text": "今日は朝から雨が降っていましたが、午後になって少しずつ晴れてきました。",
          "caption": "落ち着いた低い声の中年男性。会社の課長が、会議で部下に説明するように話している。"
        }
      ]
    }
  ],
  "downloads": [
    {
      "repo": "phasefield-audio/Irodori-TTS-v4.1-Anime",
      "revision": "6b259f5baa5e236b3d14cbd1f8555ca87d92b530",
      "files": [
        "model.safetensors",
        "tokenizer/*"
      ]
    },
    {
      "repo": "Aratako/Irodori-TTS-v4.1-Small",
      "revision": "2b28324dc263ed5e6638b3cf3dd94c82ead07b4b",
      "files": [
        "model.safetensors",
        "tokenizer/*"
      ]
    },
    {
      "repo": "Aratako/Semantic-DACVAE-Japanese-32dim",
      "revision": "47376ee24834d7a05a48ebabfe3cde29b3c5e214",
      "files": [
        "weights.pth"
      ]
    },
    {
      "repo": "Sony/SilentCipher",
      "revision": "a1c4d021905e0dc5b24be5f68db5fc4dba410ee1",
      "files": [
        "44_1_khz/73999_iteration/enc_c.ckpt",
        "44_1_khz/73999_iteration/dec_c.ckpt",
        "44_1_khz/73999_iteration/dec_m_0.ckpt",
        "44_1_khz/73999_iteration/hparams.yaml"
      ]
    }
  ],
  "seed": 0,
  "steps": 40,
  "threads": 3
}
constraints.txt(全文)
absl-py==2.5.0 accelerate==1.15.0 annotated-doc==0.0.5 anyio==4.15.1 argbind==0.3.9 asttokens==3.0.2 certifi==2026.7.22 cffi==2.1.1 charset-normalizer==3.5.1 click==8.5.0 cloudpickle==3.1.2 contourpy==1.4.0 cycler==0.12.1 decorator==5.3.1 descript-audiotools==0.7.2 docstring_parser==0.18.0 einops==0.8.2 executing==2.2.1 ffmpy==1.0.0 filelock==3.32.3 fire==0.7.1 flatten-dict==0.5.0 fonttools==4.66.0 fsspec==2026.7.0 grpcio==1.84.0 h11==0.16.0 hf-xet==1.6.0 httpcore==1.0.9 httpx==0.28.1 huggingface_hub==1.33.0 idna==3.20 importlib_resources==7.1.0 ipython==9.17.1 ipython_pygments_lexers==1.1.1 jedi==0.20.0 Jinja2==3.1.6 joblib==1.6.0 julius==0.2.8 kiwisolver==1.5.1 lazy-loader==0.6 librosa==1.0.0 llvmlite==0.49.0 Markdown==3.11 markdown-it-py==4.2.0 markdown2==2.5.5 MarkupSafe==3.0.3 matplotlib==3.11.2 matplotlib-inline==0.2.2 mdurl==0.1.2 mpmath==1.3.0 msgpack==1.2.3 narwhals==2.26.0 networkx==3.6.1 numba==0.67.0 numpy==2.5.3 packaging==26.3 parso==0.8.7 peft==0.21.1 pexpect==4.9.0 pillow==12.3.0 platformdirs==4.12.1 pooch==1.9.0 prompt_toolkit==3.0.53 protobuf==3.19.6 psutil==7.2.2 ptyprocess==0.7.0 pure_eval==0.2.4 pycparser==3.0 pydub==0.25.1 Pygments==2.21.0 pyloudnorm==0.2.0 pyparsing==3.3.3 pystoi==0.4.1 python-dateutil==2.9.0.post0 PyYAML==6.0.3 randomname==0.2.1 regex==2026.9.29 requests==2.34.2 rich==15.0.0 safetensors==0.8.0 scikit-learn==1.9.1 scipy==1.18.1 sentencepiece==0.2.2 setuptools==78.1.0 shellingham==1.5.4 six==1.17.0 soundfile==0.14.0 soxr==1.1.0 stack-data==0.6.3 sympy==1.14.0 tensorboard==2.20.0 tensorboard-data-server==0.7.2 termcolor==3.3.0 threadpoolctl==3.7.0 tokenizers==0.23.2 torch==2.10.0+cpu torch-stoi==0.2.3 torchao==0.16.0 torchaudio==2.10.0+cpu tqdm==4.70.1 traitlets==5.16.1 transformers==5.17.0 typer==0.27.2 typing_extensions==4.16.0 urllib3==2.8.0 wcwidth==0.9.1 Werkzeug==3.1.9

配布ファイル

phasefield-audio/Irodori-TTS-v4.1-Anime で配布されている重みファイルを、Hugging FaceのAPIから当サイトが並べたものです。サイズは実ファイルの値です。

ファイル サイズ
float8-dynamic/model.safetensors 950MB
float8-weight-only/model.safetensors 916MB
int4-weight-only/model.safetensors 852MB
int8-dynamic/model.safetensors 914MB
int8-weight-only/model.safetensors 914MB
model.safetensors 3.06GB

入手方法

本モデルは Hugging Face のリポジトリにて配布されています。

  • リポジトリ: phasefield-audio/Irodori-TTS-v4.1-Anime
  • 配布形式: safetensors
  • 量子化版: リポジトリ内の int8-weight-only, int8-dynamic, int4-weight-only, float8-weight-only, float8-dynamic ディレクトリに用意されています。

推論コードやインストール手順については、元の「Irodori-TTS」リポジトリを参照してください。 GitHub: Aratako/Irodori-TTS

同じ用途の既報モデル

当サイトが取り上げた音声のモデルを新しい順に並べています。用途は配布元がHugging Faceに付けたタスク(pipeline_tag)から機械的に分けたもので、最小のVRAM階層は当サイトの概算です。

音声のモデルをすべて見る →

次に読むなら

出典

更新履歴

  • 2026-09-20: 下書きに戻していた記事を、材料を集め直して書き直し、公開に戻しました。
  • 2026-09-24: 記事の組み立てを更新しました: 「手元で動かせるか」の判定(配布形式・変換版・推論エンジンの登録表・ライセンス・実測の圧縮率)を追加
  • 2026-09-25: タイトルを、記事で分かる内容(必要VRAM・配布ファイル等)を示す形に変更しました。
  • 2026-09-29: 当サイトでの実測(当サイトで生成した音声)を追加しました。
  • 2026-09-30: タイトルを、記事で分かる内容(必要VRAM・配布ファイル等)を示す形に変更しました。