{"id":114,"date":"2026-09-07T17:15:59","date_gmt":"2026-09-07T08:15:59","guid":{"rendered":"https:\/\/localmodelwatch.tsuchitsuchi.com\/2026\/09\/07\/irodori-tts-v41-anime-released\/"},"modified":"2026-10-01T08:12:38","modified_gmt":"2026-09-30T23:12:38","slug":"irodori-tts-v41-anime-released","status":"publish","type":"post","link":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/07\/irodori-tts-v41-anime-released\/","title":{"rendered":"Irodori-TTS-v4.1-Anime: Our Generated Audio, File List"},"content":{"rendered":"<p><!-- lmw:facts --><\/p>\n<h2>At a Glance<\/h2>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Item<\/th>\n<th>Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Repository<\/td>\n<td><a href=\"https:\/\/huggingface.co\/phasefield-audio\/Irodori-TTS-v4.1-Anime\">phasefield-audio\/Irodori-TTS-v4.1-Anime<\/a><\/td>\n<\/tr>\n<tr>\n<td>Published<\/td>\n<td>2026-09-04<\/td>\n<\/tr>\n<tr>\n<td>License<\/td>\n<td>mit<\/td>\n<\/tr>\n<tr>\n<td>Formats<\/td>\n<td><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/format-safetensors-en\/\">safetensors<\/a><\/td>\n<\/tr>\n<tr>\n<td>Source type<\/td>\n<td>Primary source (the publisher itself)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><em>Values determined by this site&#8217;s code when the information was collected. Dates are JST.<\/em><\/p>\n<p><!-- \/lmw:facts --><\/p>\n<p><!-- lmw:lab-summary --><\/p>\n<p><strong>What we checked ourselves<\/strong><\/p>\n<ul>\n<li>We generated speech on our own server from our own fixed text and show it unedited.<\/li>\n<\/ul>\n<p>Details and conditions are in \u201cOur Own Measurements\u201d below.<\/p>\n<p><!-- \/lmw:lab-summary --><\/p>\n<h2>Overview<\/h2>\n<p>Irodori-TTS-v4.1-Anime, a Text-to-Speech (TTS) model that generates speech from Japanese text fine-tuned using anime-style voice data, has been released. This model is adjusted based on the base model &#8220;Aratako\/Irodori-TTS-v4.1-Small&#8221; using anime-style voice data.<\/p>\n<h2>Specifications<\/h2>\n<ul>\n<li>Base model: Aratako\/Irodori-TTS-v4.1-Small<\/li>\n<li>License: MIT License<\/li>\n<li>Distribution format: safetensors<\/li>\n<li>Quantization variants: int8-weight-only, int8-dynamic, int4-weight-only, float8-weight-only, float8-dynamic<\/li>\n<\/ul>\n<p>Note that because the base model&#8217;s annotation pipeline has not been published, the fine-tuning data for this model was independently annotated. Therefore, the behavior of caption-based conditioning and emoji-based control may differ from the base model.<\/p>\n<h2>Performance and Quality<\/h2>\n<p>This model is a derivative of &#8220;Aratako\/Irodori-TTS-v4.1-Small&#8221;, and the performance of the original model is demonstrated by the following benchmarks.<\/p>\n<h3>Joyo Kanji Yomi Benchmark<\/h3>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<p class=\"lmw-table-hint\" style=\"margin:0 0 4px;font-size:0.85em;opacity:0.7;\">\u2192 Scroll horizontally to see all columns<\/p>\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th style=\"text-align: left;\">Model<\/th>\n<th style=\"text-align: right;\">Kana-CER \u2193<\/th>\n<th style=\"text-align: right;\">Kana-CER clipped \u2193<\/th>\n<th style=\"text-align: right;\">Sentence Kana-CER \u2193<\/th>\n<th style=\"text-align: right;\">Standard CER \u2193<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Irodori-TTS-600M-v3-VoiceDesign<\/td>\n<td style=\"text-align: right;\">8.49 \u00b1 0.21%<\/td>\n<td style=\"text-align: right;\">5.59 \u00b1 0.09%<\/td>\n<td style=\"text-align: right;\">2.45 \u00b1 0.02%<\/td>\n<td style=\"text-align: right;\">4.88 \u00b1 0.21%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Irodori-TTS-v4-Small (original)<\/td>\n<td style=\"text-align: right;\">7.43 \u00b1 0.17%<\/td>\n<td style=\"text-align: right;\">5.08 \u00b1 0.03%<\/td>\n<td style=\"text-align: right;\">2.89 \u00b1 0.03%<\/td>\n<td style=\"text-align: right;\">5.35 \u00b1 0.18%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Irodori-TTS-v4.1-Small<\/strong><\/td>\n<td style=\"text-align: right;\"><strong>7.29 \u00b1 0.13%<\/strong><\/td>\n<td style=\"text-align: right;\"><strong>5.03 \u00b1 0.03%<\/strong><\/td>\n<td style=\"text-align: right;\"><strong>2.36 \u00b1 0.01%<\/strong><\/td>\n<td style=\"text-align: right;\"><strong>4.69 \u00b1 0.02%<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>JSUT BASIC5000<\/h3>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th style=\"text-align: left;\">Model<\/th>\n<th style=\"text-align: right;\">Sentence Kana-CER \u2193<\/th>\n<th style=\"text-align: right;\">Standard CER \u2193<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Irodori-TTS-600M-v3-VoiceDesign<\/td>\n<td style=\"text-align: right;\">3.62 \u00b1 0.03%<\/td>\n<td style=\"text-align: right;\"><strong>7.19 \u00b1 0.05%<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Irodori-TTS-v4-Small (original)<\/td>\n<td style=\"text-align: right;\">3.49 \u00b1 0.02%<\/td>\n<td style=\"text-align: right;\">7.32 \u00b1 0.09%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Irodori-TTS-v4.1-Small<\/strong><\/td>\n<td style=\"text-align: right;\"><strong>3.43 \u00b1 0.01%<\/strong><\/td>\n<td style=\"text-align: right;\">7.22 \u00b1 0.12%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Compared to the traditional &#8220;Irodori-TTS-v4-Small&#8221;, the original model &#8220;Irodori-TTS-v4.1-Small&#8221; shows improved (lower) scores across all metrics in the Joyo Kanji Yomi Benchmark (Kana-CER, Kana-CER clipped, Sentence Kana-CER, and Standard CER). In addition, for JSUT BASIC5000, improvements are seen in Sentence Kana-CER, while Standard CER shows a slight increase. These improvements result from retraining the duration predictor individually in the original model.<\/p>\n<h2>Strengths and Use Cases<\/h2>\n<p>Since this model is fine-tuned using anime-style voice data, it specializes in generating anime-style character voices. It is tagged with <code>text-to-speech<\/code> and generates speech from Japanese text input.<\/p>\n<p>Inheriting the features of the base model &#8220;Aratako\/Irodori-TTS-v4.1-Small&#8221;, the following capabilities are available:<\/p>\n<ul>\n<li>Voice cloning: Voice cloning using reference audio<\/li>\n<li>Voice Design: Designing voice quality<\/li>\n<li>Long-reference conditioning: Conditioning using long-duration reference audio<\/li>\n<li>Emoji-based style control: Style control using emojis (however, because this model uses independent annotations, behavior may differ from the base model)<\/li>\n<\/ul>\n<p>Additionally, as a constraint of the base model, only Japanese text input is currently supported. Furthermore, to stabilize voice cloning accuracy, clean reference audio of 30 seconds or longer is recommended.<\/p>\n<p><!-- lmw:hardware --><\/p>\n<h2>Hardware Requirements<\/h2>\n<p><strong>Estimated requirements (calculated by Local Model Watch)<\/strong> \u2014 766M parameters<\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Your VRAM<\/th>\n<th>Quantization<\/th>\n<th>File size<\/th>\n<th>Est. memory needed<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>4GB (laptop iGPU \/ phone class)<\/td>\n<td>F32<\/td>\n<td>2.9GB<\/td>\n<td>3.4GB<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><em>Memory estimates add a 20% runtime overhead (KV cache, etc.) to the actual size of the distributed files. Actual usage varies with context length, batch size and inference engine. These figures are computed by this site from file sizes, not published by the model&#8217;s authors. The listed files are distributed in F32 (32-bit). Loading in a lower precision (BF16 or quantized) needs less memory, so treat this as the size of the files as distributed, not a minimum. This site has not measured the lower-precision figures. Compare with other models in our <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/vram-guide-en\/\">VRAM quick reference<\/a>. What the quantization names mean: <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/glossary-quantization-en\/\">glossary<\/a>.<\/em><\/p>\n<p><!-- \/lmw:hardware --><\/p>\n<p><!-- lmw:runnability --><\/p>\n<h2>Can You Run It Locally?<\/h2>\n<p>The publisher distributes this model as safetensors.<\/p>\n<p><strong>License \u2014 <code>mit<\/code> (Commercial use allowed):<\/strong> Permits commercial use, modification and redistribution, provided the copyright notice and license text are retained.<\/p>\n<p><em>Compiled by this site&#8217;s code from the published formats and the license field. License summaries are not legal advice \u2014 check the publisher&#8217;s original terms before relying on them.<\/em><\/p>\n<p><!-- \/lmw:runnability --><\/p>\n<p><!-- lmw:lab --><\/p>\n<h2>Our Own Measurements<\/h2>\n<p>Values we measured ourselves on our server (no GPU) by actually reading and running this model&#8217;s files \u2014 not figures copied from the model card. How we measure, and the results for every model: <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/observations-en\/\">Our Measurements<\/a>.<\/p>\n<h3>Audio We Generated<\/h3>\n<p>Generated on our CPU-only server (Neoverse-N1, 3 threads) by running <a href=\"https:\/\/huggingface.co\/phasefield-audio\/Irodori-TTS-v4.1-Anime\">phasefield-audio\/Irodori-TTS-v4.1-Anime<\/a> (mit license) with the publisher&#8217;s inference code (<a href=\"https:\/\/github.com\/Aratako\/Irodori-TTS\">Irodori-TTS<\/a>, commit <code>89f9d8f<\/code>), inside an isolated environment with no network access. We read out fixed sentences we wrote ourselves with no reference audio, so this is not a clone of anyone&#8217;s voice; the clips here use the text only, with no voice description. 40 steps, seed 0, generated 2026-09-30 (JST). Not edited or selected \u2014 this is the first output for each sentence, including any misreadings. The publisher&#8217;s code embeds an inaudible SilentCipher watermark in the audio, and we left it in place.<\/p>\n<p><strong>Japanese sentences<\/strong><\/p>\n<p>\u201c\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002\u201d (It had been raining since the morning, but it gradually cleared up in the afternoon.) \u2014 6.0 s of audio, 87 s to generate<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-weather-3.wav\"><\/audio><\/p>\n<p>\u201c\u6b21\u306e\u4f1a\u8b70\u306f3\u670815\u65e5\u306e\u5348\u5f8c2\u6642\u304b\u3089\u3001\u4f1a\u8b70\u5ba4B\u3067\u884c\u3044\u307e\u3059\u3002\u201d (The next meeting will be held from 2 p.m. on March 15 in meeting room B.) \u2014 5.8 s of audio, 85 s to generate<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-numbers-3.wav\"><\/audio><\/p>\n<p>\u201c\u3048\u3063\u3001\u3082\u3046\u7d42\u308f\u3063\u305f\u3093\u3067\u3059\u304b\uff1f\u601d\u3063\u3066\u3044\u305f\u3088\u308a\u305a\u3063\u3068\u65e9\u304b\u3063\u305f\u3067\u3059\u306d\u3002\u201d (Oh, it&#8217;s already finished? That was much quicker than I expected.) \u2014 5.8 s of audio, 93 s to generate<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-surprise-3.wav\"><\/audio><\/p>\n<p><strong>English sentences (a trial)<\/strong><\/p>\n<p>The publisher distributes this model for Japanese and does not claim English support. To see whether it really cannot output English, we read the English translations of the same sentences under the same conditions. We did not judge whether the pronunciation is correct; each clip is the first output, unedited, so please listen and judge for yourself.<\/p>\n<p>\u201cIt had been raining since the morning, but it gradually cleared up in the afternoon.\u201d \u2014 7.1 s of audio, 112 s to generate<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-weather-en.wav\"><\/audio><\/p>\n<p>\u201cThe next meeting will be held from 2 p.m. on March 15 in meeting room B.\u201d \u2014 6.8 s of audio, 97 s to generate<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-numbers-en.wav\"><\/audio><\/p>\n<p>\u201cOh, it&#8217;s already finished? That was much quicker than I expected.\u201d \u2014 6.5 s of audio, 89 s to generate<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-surprise-en.wav\"><\/audio><\/p>\n<h4>Specifying the Speaker with a Voice Description (Caption)<\/h4>\n<p>Besides the text to read, Irodori-TTS accepts a free-form Japanese description of the voice (a caption; the publisher calls this Voice Design) to set the speaker&#8217;s age, gender and manner. We read the same sentence (\u201cIt had been raining since the morning, but it gradually cleared up in the afternoon.\u201d) with the same seed using three fixed descriptions we wrote. For comparison, we also generated the same set with the model it was fine-tuned from, <a href=\"https:\/\/huggingface.co\/Aratako\/Irodori-TTS-v4.1-Small\">Irodori-TTS-v4.1-Small<\/a>. No reference audio was used. Pitch is the median our code estimated from each clip (autocorrelation; approximate). Not selected \u2014 the first output each time.<\/p>\n<p><strong>No description (text only)<\/strong><\/p>\n<p>Irodori-TTS-v4.1-Anime (pitch \u2248 205 Hz, 6.0 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-weather-3.wav\"><\/audio><\/p>\n<p>Irodori-TTS-v4.1-Small (pitch \u2248 268 Hz, 5.2 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-base-none-1.wav\"><\/audio><\/p>\n<p><strong>\u201cAn elderly woman speaking in a calm, slow manner.\u201d<\/strong><\/p>\n<p>Irodori-TTS-v4.1-Anime (pitch \u2248 177 Hz, 7.0 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-persona-old_woman-1.wav\"><\/audio><\/p>\n<p>Irodori-TTS-v4.1-Small (pitch \u2248 203 Hz, 6.0 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-base-persona-old_woman-1.wav\"><\/audio><\/p>\n<p><strong>\u201cA bright, cheerful high-school girl speaking happily in a high voice, like an anime character.\u201d<\/strong><\/p>\n<p>Irodori-TTS-v4.1-Anime (pitch \u2248 392 Hz, 5.9 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-persona-hs_girl_anime-1.wav\"><\/audio><\/p>\n<p>Irodori-TTS-v4.1-Small (pitch \u2248 265 Hz, 5.2 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-base-persona-hs_girl_anime-1.wav\"><\/audio><\/p>\n<p><strong>\u201cA middle-aged man with a calm, low voice, like a section manager explaining something to his team in a meeting.\u201d<\/strong><\/p>\n<p>Irodori-TTS-v4.1-Anime (pitch \u2248 189 Hz, 6.2 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-persona-kacho-1.wav\"><\/audio><\/p>\n<p>Irodori-TTS-v4.1-Small (pitch \u2248 143 Hz, 5.7 s)<\/p>\n<p><audio controls preload=\"none\" src=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/wp-content\/uploads\/2026\/09\/lmw-lab-202609070815_hf_model-phasefield-audio-Irodori-TTS-v4-1-Anime-base-persona-kacho-1.wav\"><\/audio><\/p>\n<h4>Setup and Run Steps (What We Actually Ran)<\/h4>\n<p>These are the exact commands we ran from one working folder on our server (Linux aarch64, Python 3.12.3). Because we run the publisher&#8217;s code in an isolated environment, steps 1 and 2 had network access and step 3 had none. We built the environment in step 1 once and reuse it.<\/p>\n<pre><code class=\"language-bash\"># 1. Build the environment (CPU PyTorch, dependencies, and the publisher's code pinned to a commit)\npython3 -m venv venv\nvenv\/bin\/pip install --index-url https:\/\/download.pytorch.org\/whl\/cpu -c constraints.txt torch torchaudio\nvenv\/bin\/pip install -c constraints.txt torchao safetensors huggingface-hub transformers sentencepiece soundfile pyyaml peft numpy einops argbind descript-audiotools librosa pydub scipy tqdm\nvenv\/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'\n\n# 2. Download the weights (pinned revisions)\nvenv\/bin\/hf download phasefield-audio\/Irodori-TTS-v4.1-Anime --revision 6b259f5baa5e236b3d14cbd1f8555ca87d92b530 --include model.safetensors --include 'tokenizer\/*'\nvenv\/bin\/hf download Aratako\/Irodori-TTS-v4.1-Small --revision 2b28324dc263ed5e6638b3cf3dd94c82ead07b4b --include model.safetensors --include 'tokenizer\/*'\nvenv\/bin\/hf download Aratako\/Semantic-DACVAE-Japanese-32dim --revision 47376ee24834d7a05a48ebabfe3cde29b3c5e214 --include weights.pth\nvenv\/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\n\n# 3. Generate\nvenv\/bin\/python irodori_tts.py job.json out\n<\/code><\/pre>\n<p><code>constraints.txt<\/code> pins every dependency to the versions installed in our environment (<code>pip freeze<\/code>, full text below). On a machine with an NVIDIA GPU, replace the <code>--index-url<\/code> of the first <code>pip install<\/code> with the PyTorch index for your CUDA version.<\/p>\n<p>The generation script (<code>irodori_tts.py<\/code>, written by us; it calls the publisher&#8217;s inference code in <code>irodori_tts.inference_runtime<\/code>). Comments are in Japanese as in our repository:<\/p>\n<pre><code class=\"language-python\">&quot;&quot;&quot;\nIrodori-TTS \u3067\u3001\u56fa\u5b9a\u306e\u6587\u3092\u8aad\u307e\u305b\u3066 WAV \u3092\u4f5c\u308b(Local Model Watch \u306e\u5b9f\u6e2c\u3002\u8a18\u4e8b\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5168\u6587\u3092\u8f09\u305b\u3066\u3044\u308b)\u3002\n\n    python irodori_tts.py &lt;job.json&gt; &lt;\u51fa\u529b\u30d5\u30a9\u30eb\u30c0&gt;\n\njob.json \u306e runs \u306b\u3001\u30e2\u30c7\u30eb(\u30ea\u30dd\u30b8\u30c8\u30ea\u3068\u7248)\u3054\u3068\u306b\u8aad\u307e\u305b\u308b\u6587(text)\u3068\u3001\u8a71\u8005\u306e\u6307\u5b9a(caption\u3001\u58f0\u306e\u8aac\u660e\u3002\n\u7121\u3051\u308c\u3070\u6587\u3060\u3051\u304b\u3089\u751f\u6210)\u3092\u66f8\u304f\u3002downloads \u306b\u306f\u30b3\u30fc\u30c7\u30c3\u30af\u3068\u900f\u304b\u3057\u306e\u91cd\u307f\u306e\u7248\u3001seed\u30fbsteps\u30fbthreads \u3082\u66f8\u304f\u3002\n\u91cd\u307f\u306f\u5148\u306b hf download \u3067\u540c\u3058\u7248\u3092\u53d6\u3063\u3066\u304a\u304f(\u5f53\u30b5\u30a4\u30c8\u3067\u306f\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u7121\u3044\u74b0\u5883\u3067\u52d5\u304b\u3059\u306e\u3067\u3001\n\u3053\u3053\u3067\u306f\u53d6\u308a\u306b\u884c\u304b\u306a\u3044)\u3002\u53c2\u7167\u97f3\u58f0(\u58f0\u306e\u30af\u30ed\u30fc\u30f3)\u306f\u4f7f\u308f\u306a\u3044\u3002\n\u51fa\u529b\u306f &lt;id&gt;.wav(16bit PCM\u30fb\u30e2\u30ce\u30e9\u30eb)\u3068 result.json(\u751f\u6210\u306b\u304b\u304b\u3063\u305f\u79d2\u6570\u306a\u3069)\u3002\n&quot;&quot;&quot;\nimport json\nimport os\nimport sys\nimport time\nimport wave\n\ndef main() -&gt; int:\n    with open(sys.argv[1], encoding=&quot;utf-8&quot;) as f:\n        job = json.load(f)\n    out_dir = sys.argv[2]\n    os.makedirs(out_dir, exist_ok=True)\n    import torch\n    from huggingface_hub import hf_hub_download\n\n    torch.set_num_threads(int(job[&quot;threads&quot;]))\n    extra = {d[&quot;repo&quot;]: d for d in job[&quot;downloads&quot;]}\n    codec = extra[&quot;Aratako\/Semantic-DACVAE-Japanese-32dim&quot;]\n    codec_path = hf_hub_download(codec[&quot;repo&quot;], &quot;weights.pth&quot;, revision=codec[&quot;revision&quot;])\n    mark = extra[&quot;Sony\/SilentCipher&quot;]\n    mark_config = hf_hub_download(mark[&quot;repo&quot;], &quot;44_1_khz\/73999_iteration\/hparams.yaml&quot;, revision=mark[&quot;revision&quot;])\n\n    # \u900f\u304b\u3057(SilentCipher)\u306e\u91cd\u307f\u306f\u3001\u914d\u5e03\u5143\u306e\u30b3\u30fc\u30c9\u304c\u65e2\u5b9a\u3067\u306f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304b\u3089\u53d6\u308a\u306b\u884c\u304f\u3002\u5148\u306b\u53d6\u3063\u305f\u3082\u306e\u3092\u6e21\u3059\n    import silentcipher\n    original_get_model = silentcipher.get_model\n\n    def get_model(model_type=&quot;44.1k&quot;, device=&quot;cpu&quot;, **_):\n        return original_get_model(model_type=model_type, ckpt_path=os.path.dirname(mark_config),\n                                  config_path=mark_config, device=device)\n    silentcipher.get_model = get_model\n\n    from irodori_tts.inference_runtime import InferenceRuntime, RuntimeKey, SamplingRequest\n\n    items = []\n    load_sec = []\n    watermark = True\n    for run in job[&quot;runs&quot;]:\n        model = run[&quot;model&quot;]\n        checkpoint = hf_hub_download(model[&quot;repo&quot;], &quot;model.safetensors&quot;, revision=model[&quot;revision&quot;])\n        started = time.time()\n        runtime = InferenceRuntime.from_key(RuntimeKey(checkpoint=checkpoint, model_device=&quot;cpu&quot;,\n                                                       codec_repo=codec_path, codec_device=&quot;cpu&quot;))\n        load_sec.append(round(time.time() - started, 1))\n        watermark = watermark and bool(runtime.watermarker.ready)\n        for item in run[&quot;items&quot;]:\n            t = time.time()\n            result = runtime.synthesize(SamplingRequest(text=item[&quot;text&quot;], caption=item.get(&quot;caption&quot;), no_ref=True,\n                                                        seed=int(job[&quot;seed&quot;]), num_steps=int(job[&quot;steps&quot;])))\n            audio = result.audio.detach().to(dtype=torch.float32, device=&quot;cpu&quot;).reshape(-1)\n            pcm = (audio.clamp(-1.0, 1.0) * 32767.0).round().to(torch.int16).numpy().tobytes()\n            with wave.open(os.path.join(out_dir, item[&quot;id&quot;] + &quot;.wav&quot;), &quot;wb&quot;) as w:\n                w.setnchannels(1)\n                w.setsampwidth(2)\n                w.setframerate(int(result.sample_rate))\n                w.writeframes(pcm)\n            items.append({&quot;id&quot;: item[&quot;id&quot;], &quot;seconds&quot;: round(time.time() - t, 1)})\n            print(f&quot;[generate] {item['id']}: {items[-1]['seconds']} s&quot;, flush=True)\n        runtime.unload()\n        del runtime\n    with open(os.path.join(out_dir, &quot;result.json&quot;), &quot;w&quot;, encoding=&quot;utf-8&quot;) as f:\n        json.dump({&quot;items&quot;: items, &quot;load_sec&quot;: load_sec[0] if load_sec else None,\n                   &quot;watermark&quot;: watermark,\n                   &quot;torch&quot;: torch.__version__}, f)\n    return 0\n\nif __name__ == &quot;__main__&quot;:\n    sys.exit(main())\n<\/code><\/pre>\n<p>The values in <code>job.json<\/code> that the script reads (as used):<\/p>\n<pre><code class=\"language-json\">{\n  &quot;runs&quot;: [\n    {\n      &quot;model&quot;: {\n        &quot;repo&quot;: &quot;phasefield-audio\/Irodori-TTS-v4.1-Anime&quot;,\n        &quot;revision&quot;: &quot;6b259f5baa5e236b3d14cbd1f8555ca87d92b530&quot;\n      },\n      &quot;items&quot;: [\n        {\n          &quot;id&quot;: &quot;weather&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;numbers&quot;,\n          &quot;text&quot;: &quot;\u6b21\u306e\u4f1a\u8b70\u306f3\u670815\u65e5\u306e\u5348\u5f8c2\u6642\u304b\u3089\u3001\u4f1a\u8b70\u5ba4B\u3067\u884c\u3044\u307e\u3059\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;surprise&quot;,\n          &quot;text&quot;: &quot;\u3048\u3063\u3001\u3082\u3046\u7d42\u308f\u3063\u305f\u3093\u3067\u3059\u304b\uff1f\u601d\u3063\u3066\u3044\u305f\u3088\u308a\u305a\u3063\u3068\u65e9\u304b\u3063\u305f\u3067\u3059\u306d\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;persona-old_woman&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;,\n          &quot;caption&quot;: &quot;\u5e74\u8001\u3044\u305f\u5973\u6027\u304c\u3001\u7a4f\u3084\u304b\u3067\u3086\u3063\u304f\u308a\u3068\u3057\u305f\u53e3\u8abf\u3067\u8a71\u3057\u3066\u3044\u308b\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;persona-hs_girl_anime&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;,\n          &quot;caption&quot;: &quot;\u660e\u308b\u304f\u5143\u6c17\u306a\u5973\u5b50\u9ad8\u751f\u3002\u30a2\u30cb\u30e1\u306e\u30ad\u30e3\u30e9\u30af\u30bf\u30fc\u306e\u3088\u3046\u306a\u3001\u9ad8\u3081\u306e\u58f0\u3067\u697d\u3057\u305d\u3046\u306b\u8a71\u3057\u3066\u3044\u308b\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;persona-kacho&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;,\n          &quot;caption&quot;: &quot;\u843d\u3061\u7740\u3044\u305f\u4f4e\u3044\u58f0\u306e\u4e2d\u5e74\u7537\u6027\u3002\u4f1a\u793e\u306e\u8ab2\u9577\u304c\u3001\u4f1a\u8b70\u3067\u90e8\u4e0b\u306b\u8aac\u660e\u3059\u308b\u3088\u3046\u306b\u8a71\u3057\u3066\u3044\u308b\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;weather-en&quot;,\n          &quot;text&quot;: &quot;It had been raining since the morning, but it gradually cleared up in the afternoon.&quot;\n        },\n        {\n          &quot;id&quot;: &quot;numbers-en&quot;,\n          &quot;text&quot;: &quot;The next meeting will be held from 2 p.m. on March 15 in meeting room B.&quot;\n        },\n        {\n          &quot;id&quot;: &quot;surprise-en&quot;,\n          &quot;text&quot;: &quot;Oh, it's already finished? That was much quicker than I expected.&quot;\n        }\n      ]\n    },\n    {\n      &quot;model&quot;: {\n        &quot;repo&quot;: &quot;Aratako\/Irodori-TTS-v4.1-Small&quot;,\n        &quot;revision&quot;: &quot;2b28324dc263ed5e6638b3cf3dd94c82ead07b4b&quot;\n      },\n      &quot;items&quot;: [\n        {\n          &quot;id&quot;: &quot;base-none&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;base-persona-old_woman&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;,\n          &quot;caption&quot;: &quot;\u5e74\u8001\u3044\u305f\u5973\u6027\u304c\u3001\u7a4f\u3084\u304b\u3067\u3086\u3063\u304f\u308a\u3068\u3057\u305f\u53e3\u8abf\u3067\u8a71\u3057\u3066\u3044\u308b\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;base-persona-hs_girl_anime&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;,\n          &quot;caption&quot;: &quot;\u660e\u308b\u304f\u5143\u6c17\u306a\u5973\u5b50\u9ad8\u751f\u3002\u30a2\u30cb\u30e1\u306e\u30ad\u30e3\u30e9\u30af\u30bf\u30fc\u306e\u3088\u3046\u306a\u3001\u9ad8\u3081\u306e\u58f0\u3067\u697d\u3057\u305d\u3046\u306b\u8a71\u3057\u3066\u3044\u308b\u3002&quot;\n        },\n        {\n          &quot;id&quot;: &quot;base-persona-kacho&quot;,\n          &quot;text&quot;: &quot;\u4eca\u65e5\u306f\u671d\u304b\u3089\u96e8\u304c\u964d\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5348\u5f8c\u306b\u306a\u3063\u3066\u5c11\u3057\u305a\u3064\u6674\u308c\u3066\u304d\u307e\u3057\u305f\u3002&quot;,\n          &quot;caption&quot;: &quot;\u843d\u3061\u7740\u3044\u305f\u4f4e\u3044\u58f0\u306e\u4e2d\u5e74\u7537\u6027\u3002\u4f1a\u793e\u306e\u8ab2\u9577\u304c\u3001\u4f1a\u8b70\u3067\u90e8\u4e0b\u306b\u8aac\u660e\u3059\u308b\u3088\u3046\u306b\u8a71\u3057\u3066\u3044\u308b\u3002&quot;\n        }\n      ]\n    }\n  ],\n  &quot;downloads&quot;: [\n    {\n      &quot;repo&quot;: &quot;phasefield-audio\/Irodori-TTS-v4.1-Anime&quot;,\n      &quot;revision&quot;: &quot;6b259f5baa5e236b3d14cbd1f8555ca87d92b530&quot;,\n      &quot;files&quot;: [\n        &quot;model.safetensors&quot;,\n        &quot;tokenizer\/*&quot;\n      ]\n    },\n    {\n      &quot;repo&quot;: &quot;Aratako\/Irodori-TTS-v4.1-Small&quot;,\n      &quot;revision&quot;: &quot;2b28324dc263ed5e6638b3cf3dd94c82ead07b4b&quot;,\n      &quot;files&quot;: [\n        &quot;model.safetensors&quot;,\n        &quot;tokenizer\/*&quot;\n      ]\n    },\n    {\n      &quot;repo&quot;: &quot;Aratako\/Semantic-DACVAE-Japanese-32dim&quot;,\n      &quot;revision&quot;: &quot;47376ee24834d7a05a48ebabfe3cde29b3c5e214&quot;,\n      &quot;files&quot;: [\n        &quot;weights.pth&quot;\n      ]\n    },\n    {\n      &quot;repo&quot;: &quot;Sony\/SilentCipher&quot;,\n      &quot;revision&quot;: &quot;a1c4d021905e0dc5b24be5f68db5fc4dba410ee1&quot;,\n      &quot;files&quot;: [\n        &quot;44_1_khz\/73999_iteration\/enc_c.ckpt&quot;,\n        &quot;44_1_khz\/73999_iteration\/dec_c.ckpt&quot;,\n        &quot;44_1_khz\/73999_iteration\/dec_m_0.ckpt&quot;,\n        &quot;44_1_khz\/73999_iteration\/hparams.yaml&quot;\n      ]\n    }\n  ],\n  &quot;seed&quot;: 0,\n  &quot;steps&quot;: 40,\n  &quot;threads&quot;: 3\n}\n<\/code><\/pre>\n<details>\n<summary>constraints.txt (full text)<\/summary>\n<pre><code>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<\/code><\/pre>\n<\/details>\n<p><!-- \/lmw:lab --><\/p>\n<p><!-- lmw:files --><\/p>\n<h2>Distributed Files<\/h2>\n<p><em>Weight files published in <a href=\"https:\/\/huggingface.co\/phasefield-audio\/Irodori-TTS-v4.1-Anime\/tree\/main\">phasefield-audio\/Irodori-TTS-v4.1-Anime<\/a>, listed by this site from the Hugging Face API. Sizes are the actual file sizes.<\/em><\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>File<\/th>\n<th>Size<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>float8-dynamic\/model.safetensors<\/code><\/td>\n<td>950MB<\/td>\n<\/tr>\n<tr>\n<td><code>float8-weight-only\/model.safetensors<\/code><\/td>\n<td>916MB<\/td>\n<\/tr>\n<tr>\n<td><code>int4-weight-only\/model.safetensors<\/code><\/td>\n<td>852MB<\/td>\n<\/tr>\n<tr>\n<td><code>int8-dynamic\/model.safetensors<\/code><\/td>\n<td>914MB<\/td>\n<\/tr>\n<tr>\n<td><code>int8-weight-only\/model.safetensors<\/code><\/td>\n<td>914MB<\/td>\n<\/tr>\n<tr>\n<td><code>model.safetensors<\/code><\/td>\n<td>3.06GB<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/lmw:files --><\/p>\n<h2>How to Get It<\/h2>\n<p>This model is distributed in a Hugging Face repository.<\/p>\n<ul>\n<li>Repository: <a href=\"https:\/\/huggingface.co\/phasefield-audio\/Irodori-TTS-v4.1-Anime\">phasefield-audio\/Irodori-TTS-v4.1-Anime<\/a><\/li>\n<li>Distribution format: safetensors<\/li>\n<li>Quantized versions: Available in the <code>int8-weight-only<\/code>, <code>int8-dynamic<\/code>, <code>int4-weight-only<\/code>, <code>float8-weight-only<\/code>, and <code>float8-dynamic<\/code> directories within the repository.<\/li>\n<\/ul>\n<p>For inference code and installation instructions, please refer to the original &#8220;Irodori-TTS&#8221; repository. <a href=\"https:\/\/github.com\/Aratako\/Irodori-TTS\">GitHub: Aratako\/Irodori-TTS<\/a><\/p>\n<p><!-- lmw:same-task --><\/p>\n<h2>Other Models for the Same Task<\/h2>\n<p><em>Recent audio models covered by Local Model Watch, newest first. Grouped by the task each publisher declares on Hugging Face (pipeline_tag); the smallest VRAM tier is this site&#8217;s estimate.<\/em><\/p>\n<ul>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/10\/01\/phonon-2-open-weight-english-asr-model\/\">Phonon-2 Speech Recognition Model: 4GB+ VRAM<\/a> (627M, 4GB)<\/li>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/24\/edge0-audio8-asr-infinite-2\/\">Audio8-ASR-Infinite Speech Recognition Model: 12GB+ VRAM, File List<\/a> (4.1B, 12GB)<\/li>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/10\/yue2-3b-music-generation-model\/\">YuE2-3B Music Generation Model for Lyrics and Style: 12GB+ VRAM<\/a> (3.6B, 12GB)<\/li>\n<\/ul>\n<p><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/models-by-task-en\/#task-audio\">See all audio models \u2192<\/a><\/p>\n<p><!-- \/lmw:same-task --><\/p>\n<p><!-- lmw:next-steps --><\/p>\n<h2>What to Read Next<\/h2>\n<ul>\n<li><strong>Find models by VRAM<\/strong> (This model runs from the 4GB tier) \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/vram-guide-8gb-en\/\">Other models that run on a 8GB GPU<\/a><\/li>\n<li><strong>Formats this model is available in<\/strong> \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/format-safetensors-en\/\">Safetensors format guide and models<\/a><\/li>\n<li><strong>How to read CER<\/strong> \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/glossary-benchmarks-en\/\">Benchmark glossary<\/a><\/li>\n<\/ul>\n<p><!-- \/lmw:next-steps --><\/p>\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/huggingface.co\/phasefield-audio\/Irodori-TTS-v4.1-Anime\">phasefield-audio\/Irodori-TTS-v4.1-Anime<\/a><\/li>\n<\/ul>\n<p><!-- lmw:updates --><\/p>\n<h2>Update History<\/h2>\n<ul>\n<li>2026-09-20: Rewrote the article from re-collected sources and restored it from draft to published.<\/li>\n<li>2026-09-24: Rebuilt the article: Added a &#8220;can you run it locally?&#8221; verdict from the distribution formats, converted builds, engine registries, license terms and measured compression<\/li>\n<li>2026-09-25: Changed the title to show what the article covers (VRAM requirements, file list, etc.).<\/li>\n<li>2026-09-29: Added our own measurements: audio we generated.<\/li>\n<li>2026-09-30: Changed the title to show what the article covers (VRAM requirements, file list, etc.).<\/li>\n<\/ul>\n<p><!-- \/lmw:updates --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Discover Irodori-TTS-v4.1-Anime, an anime-style fine-tuned Text-to-Speech model based on Aratako\/Irodori-TTS-v4.1-Small. Available now with quantization op<\/p>\n","protected":false},"author":1,"featured_media":7635,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[203],"tags":[1761,209,211,1547,1764,234],"class_list":["post-114","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-image-video-and-audio","tag-irodori-tts-v4-1-anime-en","tag-safetensors-en","tag-tts-en","tag-verified","tag--en"],"lang":"en","translations":{"en":114,"ja":113},"_links":{"self":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/comments?post=114"}],"version-history":[{"count":34,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/114\/revisions"}],"predecessor-version":[{"id":8475,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/114\/revisions\/8475"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/media\/7635"}],"wp:attachment":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/media?parent=114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/categories?post=114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/tags?post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}