<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>DubGuild Tech Blog on 株式会社DubGuild</title>
		<link>https://blog.higurashi.ai/</link>
		<description>Recent content in DubGuild Tech Blog on 株式会社DubGuild</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Thu, 15 Oct 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://blog.higurashi.ai/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Making Neural Speech Codecs Robust to Noise with Denoising Training</title>
				<link>https://blog.higurashi.ai/melte/noise-robust-codec/</link>
				<pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://blog.higurashi.ai/melte/noise-robust-codec/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Related Posts&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Overview：&lt;a href=&#34;https://blog.higurashi.ai/melte/llm-tts-scaling/&#34;&gt;日本語音声基盤モデルをスケーリングさせ、TTS性能を見てみる&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Preprocessing：&lt;a href=&#34;https://blog.higurashi.ai/melte/preprocessing-pipeline/&#34;&gt;音声データを処理する前処理パイプラインと実行基盤を作った話&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Pre-training：&lt;a href=&#34;https://blog.higurashi.ai/melte/pretrain/&#34;&gt;日本語音声基盤モデルの事前学習&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Post-training：&lt;a href=&#34;https://blog.higurashi.ai/melte/posttrain/&#34;&gt;日本語音声基盤モデルの事後学習：TTSに強化学習を適用する&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Codec：This post&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Discrete speech tokens have become a popular choice for spoken language models (SLMs) in recent years. In this article, “SLMs” means language models that can understand human speech and respond in speech to hold a conversation; they are often adapted from text LLMs. Because discrete speech tokens work like text tokens, they make it relatively easy to adapt existing LLMs to speech and train them &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;. Neural audio codecs (NACs) are commonly used to convert speech waveforms into such tokens. Although NACs were originally developed for audio compression, they have quickly grown beyond this purpose and become one of the most fundamental components of the SLM ecosystem.&lt;/p&gt;</description>
			</item>
			<item>
				<title>日本語音声基盤モデルの事後学習：TTSに強化学習を適用する</title>
				<link>https://blog.higurashi.ai/melte/posttrain/</link>
				<pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://blog.higurashi.ai/melte/posttrain/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://blog.higurashi.ai/melte/llm-tts-scaling/&#34;&gt;概要編&lt;/a&gt;では、モデルサイズと学習データ量を拡大した日本語音声基盤モデル（LLM-TTS）を構築し、Text-to-Speech（TTS）性能を紹介しました。&#xA;&lt;a href=&#34;https://blog.higurashi.ai/melte/pretrain/&#34;&gt;事前学習編&lt;/a&gt;では、このモデルがテキストと音声のトークン列を生成できるようになるまでの設計を扱いました。&lt;/p&gt;&#xA;&lt;p&gt;本記事では、このモデルを出発点として、生成結果に報酬を与えて学習する &lt;strong&gt;強化学習（Reinforcement Learning; RL）&lt;/strong&gt; をTTSへ適用し、発話内容の正しさを事後学習によって改善できるか検証します。&lt;/p&gt;&#xA;&lt;p&gt;前半では、話者情報を入力せず、テキストだけから音声を生成するモデルにRLを適用します。音声認識モデルを用いた発話内容の評価と音声長へのペナルティを組み合わせた3種類の報酬設計を比較します。さらに、各設計が発話内容、音声長、話者性に与える影響を調べます。&#xA;後半では、参照音声から話者性を引き継ぎ、任意の話者のTTSを実現するゼロショットTTSにも対象を広げます。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;関連記事&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;概要編：&lt;a href=&#34;https://blog.higurashi.ai/melte/llm-tts-scaling/&#34;&gt;日本語音声基盤モデルをスケーリングさせ、TTS性能を見てみる&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;前処理編：&lt;a href=&#34;https://blog.higurashi.ai/melte/preprocessing-pipeline/&#34;&gt;音声データを処理する前処理パイプラインと実行基盤を作った話&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;事前学習編：&lt;a href=&#34;https://blog.higurashi.ai/melte/pretrain/&#34;&gt;日本語音声基盤モデルの事前学習&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;事後学習編：この記事&lt;/li&gt;&#xA;&lt;li&gt;コーデック編：&lt;a href=&#34;https://blog.higurashi.ai/melte/noise-robust-codec/&#34;&gt;Making Neural Speech Codecs Robust to Noise with Denoising Training&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;具体的には、次の4点を紹介します。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;音声を用いた報酬計算を強化学習フレームワークへどのように組み込んだか&lt;/li&gt;&#xA;&lt;li&gt;音声認識モデルを用いた報酬設計が、発話内容、音声長、話者性へどう影響するか&lt;/li&gt;&#xA;&lt;li&gt;推論エンジンと数値精度によって、生成結果やRL中の確率計算がどのように変わるか&lt;/li&gt;&#xA;&lt;li&gt;ここまでに得た知見をもとに3BモデルをゼロショットTTS向けに事後学習し、日本語TTSベンチマークで評価した結果&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;1-tts向け強化学習の全体構成&#34;&gt;1. TTS向け強化学習の全体構成&lt;/h2&gt;&#xA;&lt;p&gt;学習基盤には、言語モデル向けの強化学習フレームワークであるverlを利用しました&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;。&#xA;verlの生成・学習処理に、音声の復号と音声認識による報酬計算を接続しています。&#xA;音声トークンの生成から報酬計算までは、次の流れで行います。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;入力テキストをもとに、LLM-TTSモデルが音声トークンを生成する&lt;/li&gt;&#xA;&lt;li&gt;Neural Audio Codecを用いて、音声トークンを波形へ復号する&lt;/li&gt;&#xA;&lt;li&gt;音声認識モデルで生成音声を評価し、報酬を計算する&lt;/li&gt;&#xA;&lt;li&gt;評価値をverlへ返し、モデルを更新する&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;1-1-llm向けrlとの違い&#34;&gt;1-1. LLM向けRLとの違い&lt;/h3&gt;&#xA;&lt;p&gt;LLM向けRLでは、生成したテキストをルールまたは報酬モデルで評価できます。&#xA;一方、LLM-TTSが生成する音声トークン列だけを見ても、入力文を正しく発話できているかは評価できません。&#xA;そこで、音声トークンをNeural Audio Codecで波形へ復号し、さらに音声認識モデルで評価します。&#xA;つまり、生成から報酬計算までの間に、Neural Audio Codecと音声認識モデルによる二段階の推論が加わります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-2-報酬計算を別の実行環境へ分離する&#34;&gt;1-2. 報酬計算を別の実行環境へ分離する&lt;/h3&gt;&#xA;&lt;p&gt;報酬計算では、学習対象とは別に音声認識モデルを動かす必要があり、その実行環境には学習側とは異なる依存関係が含まれます。&#xA;そこで、学習処理と報酬計算を独立した実行環境に分けました。&#xA;実際の実行にはコンテナを用い、両者を同一ノード上のHTTP APIで接続しています。&lt;/p&gt;&#xA;&lt;p&gt;この構成により、報酬側のモデルや依存関係を変更しても学習環境を作り直す必要がありません。&#xA;また、生成音声をキューに集め、専用GPU上でまとめて評価することで、音声認識の推論をバッチ化できます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.higurashi.ai/images/4/rl_reward_flow.png&#34; alt=&#34;TTS向け強化学習の全体構成&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-事前学習済みモデルの報酬設計を検討する&#34;&gt;2. 事前学習済みモデルの報酬設計を検討する&lt;/h2&gt;&#xA;&lt;p&gt;まず、事前学習済みモデルに対してRLを行い、発話内容を評価する報酬を検討しました。&#xA;このモデルには話者性を制御する仕組みがなく、生成される声質はサンプリングごとに変わり得ます。&#xA;TTSのRLでは、音声認識モデルを用いて発話内容の正しさを評価する方法が提案されています。&#xA;Liuらは、生成音声の認識結果と正解文から計算する文字誤り率と、生成音声を入力した音声認識モデルが正解文に割り当てた確率から計算する負の対数尤度を組み合わせた報酬を使用しています&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;&#xA;&lt;p&gt;本記事でも、Whisperの認識結果と正解文から計算する文字誤り率（Character Error Rate; CER）と、Whisperが正解文に割り当てた確率から計算する負の対数尤度（Negative Log-Likelihood; NLL）を報酬の構成要素として使用しました。&#xA;CERは最終的な認識結果の誤りを表しますが、認識結果が1文字変わるたびに離散的に変化します。&#xA;一方、NLLはWhisperが正解テキストへどの程度確信を持っているかを連続値として表します。&lt;/p&gt;</description>
			</item>
			<item>
				<title>日本語音声基盤モデルの事前学習</title>
				<link>https://blog.higurashi.ai/melte/pretrain/</link>
				<pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://blog.higurashi.ai/melte/pretrain/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://blog.higurashi.ai/melte/preprocessing-pipeline/&#34;&gt;前処理編&lt;/a&gt; では、50万時間規模の音声を学習用トークン列に変換するパイプラインを紹介しました。&#xA;本記事では、得られたトークン列を用いてTTSモデルをどのように事前学習させたかを述べます。&#xA;&lt;a href=&#34;https://blog.higurashi.ai/melte/llm-tts-scaling/&#34;&gt;概要編&lt;/a&gt;を読了済みの読者を想定しています。&lt;/p&gt;&#xA;&lt;p&gt;日本語音声基盤モデルの事前学習では、既存のテキスト LLM を出発点にして音声トークンを扱えるよう拡張する、いわゆる継続事前学習の形を取ります。&#xA;これは Spirit-LM&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; や LLaSA&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; など、近年の LLM-TTS でもしばしば採られているアプローチです。&#xA;本記事では、この継続事前学習における次の3つの論点を扱います。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;ベーステキストLLMの選択&lt;/strong&gt;: インストラクションチューニング済みかそうでないどちらのLLMを出発点とするか&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Token formulation&lt;/strong&gt;: TTSやASRといった音声タスクを、テキストトークンと音声トークンを連結した系列としてどのように並べるか&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;事前学習知識の忘却防止&lt;/strong&gt;: 忘却防止のためのテキストデータをどの程度学習データに含めるか&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;以上の論点について我々がどう判断したかを説明します。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;関連記事&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;概要編：&lt;a href=&#34;https://blog.higurashi.ai/melte/llm-tts-scaling/&#34;&gt;日本語音声基盤モデルをスケーリングさせ、TTS性能を見てみる&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;前処理編：&lt;a href=&#34;https://blog.higurashi.ai/melte/preprocessing-pipeline/&#34;&gt;音声データを処理する前処理パイプラインと実行基盤を作った話&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;事前学習編：この記事&lt;/li&gt;&#xA;&lt;li&gt;事後学習編：&lt;a href=&#34;https://blog.higurashi.ai/melte/posttrain/&#34;&gt;日本語音声基盤モデルの事後学習：TTSに強化学習を適用する&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;コーデック編：&lt;a href=&#34;https://blog.higurashi.ai/melte/noise-robust-codec/&#34;&gt;Making Neural Speech Codecs Robust to Noise with Denoising Training&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;1-事前学習における本記事で扱う論点&#34;&gt;1. 事前学習における、本記事で扱う論点&lt;/h2&gt;&#xA;&lt;p&gt;LLMをベースに音声を扱う事前学習では、テキストトークンと音声トークンをどのように単一の系列とし学習させるかという、テキスト単独の事前学習にはない設計上の選択肢が新たに発生します。&#xA;今回は、学習をスケールさせやすいことを重視し、テキストトークンと音声トークンを単一の系列として並べる方針を採用しています。&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-ベースllmの選択&#34;&gt;2. ベースLLMの選択&lt;/h2&gt;&#xA;&lt;p&gt;テキスト事前学習だけがされた base モデルから始めるか、インストラクションチューニング済みのモデル (指示に従う挙動を後付けで学習させたモデル) から始めるかを選び、選んだLLMをどのように音声トークンを扱えるよう拡張するかを決める必要があります。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-1-インストラクションチューニング済みかそうでないものか&#34;&gt;2-1. インストラクションチューニング済みかそうでないものか&lt;/h3&gt;&#xA;&lt;p&gt;ベースとなるテキストLLMの候補としては、テキスト事前学習のみがされた &lt;strong&gt;base モデル&lt;/strong&gt; と、その上で &lt;strong&gt;インストラクションチューニング&lt;/strong&gt; (テキスト追従性を高めるために事前学習後に行われる学習ステップ) が施されたモデルの2系統があります。&#xA;今回は、1B / 3B ともに &lt;strong&gt;Llama 3.2-1B / Llama 3.2-3B の base 版&lt;/strong&gt;&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; を出発点とすることにしました。&lt;/p&gt;</description>
			</item>
			<item>
				<title>音声データを処理する前処理パイプラインと実行基盤を作った話</title>
				<link>https://blog.higurashi.ai/melte/preprocessing-pipeline/</link>
				<pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate>
				<guid>https://blog.higurashi.ai/melte/preprocessing-pipeline/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://blog.higurashi.ai/melte/llm-tts-scaling/&#34;&gt;概要編&lt;/a&gt; では、日本語の大規模音声基盤モデル(LLM-TTS)をスケールさせ、TTS性能を検証した結果を紹介しました。これを実現するためには、50万時間規模(wav換算で約80TB)の日本語音声を学習データとして用意する必要があります。&lt;/p&gt;&#xA;&lt;p&gt;しかし、収集した音声は書き起こしを持たず、多くは雑音を含むため、そのまま学習に用いることは難しく、この規模の前処理には、以下の課題があります。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;書き起こし・雑音除去・トークン化という性質の異なる複数の変換工程を、コスト制約の中で効率よく回す必要がある&lt;/li&gt;&#xA;&lt;li&gt;逐次処理では現実的な時間で完了しないため、大規模な並列実行基盤が求められる&lt;/li&gt;&#xA;&lt;li&gt;数百TBに及ぶデータの管理自体がボトルネックになりやすい&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;本記事では、まず前処理パイプラインの全体像と各処理の内容を説明し、次にステージ1を効率よく回す工夫、最後にそれを大規模に実行するための基盤について述べます。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;関連記事&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;概要編：&lt;a href=&#34;https://blog.higurashi.ai/melte/llm-tts-scaling/&#34;&gt;日本語音声基盤モデルをスケーリングさせ、TTS性能を見てみる&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;前処理編：この記事&lt;/li&gt;&#xA;&lt;li&gt;事前学習編：&lt;a href=&#34;https://blog.higurashi.ai/melte/pretrain/&#34;&gt;日本語音声基盤モデルの事前学習&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;事後学習編：&lt;a href=&#34;https://blog.higurashi.ai/melte/posttrain/&#34;&gt;日本語音声基盤モデルの事後学習：TTSに強化学習を適用する&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;コーデック編：&lt;a href=&#34;https://blog.higurashi.ai/melte/noise-robust-codec/&#34;&gt;Making Neural Speech Codecs Robust to Noise with Denoising Training&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;1-前処理パイプライン&#34;&gt;1. 前処理パイプライン&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-1-全体像&#34;&gt;1-1. 全体像&lt;/h3&gt;&#xA;&lt;p&gt;LLM-TTSの学習には、テキストトークン列と音声トークン列の2種類の入力が必要です。&lt;/p&gt;&#xA;&lt;p&gt;テキストトークン列とは、文字列を離散的なトークン列に変換したものです。音声トークン列とは、ニューラルオーディオコーデックで、音声波形を離散的なトークン列として表現したものです。事前学習では、この2種類のトークン列を学習させます。&lt;/p&gt;&#xA;&lt;p&gt;収集した音声を2つのトークン列に変換するまでにGPUを用いる処理として、&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;言語識別・書き起こし（ASR）&lt;/li&gt;&#xA;&lt;li&gt;雑音除去（音声強調）&lt;/li&gt;&#xA;&lt;li&gt;音声トークン化&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;の3つがあります。これらを以下の2つのステップに分けて実行しました。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;ステージ1（言語識別・書き起こし + 雑音除去）&lt;/strong&gt;: 収集した音声を入力として、書き起こしと雑音除去済み音声を出力する&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ステージ2（音声トークン化）&lt;/strong&gt;: ステージ1の音声を入力として、音声トークン列を生成し、ステージ1の書き起こしとともに出力する&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;2段に分けることで、音声トークナイザの突然の変更等に対応できるようにしました。ステージ1後の雑音除去済み音声＋書き起こしがあれば、異なる音声トークナイザを用いる場合であっても手戻りが小さくなります。&lt;/p&gt;&#xA;&lt;p&gt;以下にパイプライン全体の流れを示します。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.higurashi.ai/images/2/preprocessing_pipeline.svg&#34; alt=&#34;前処理パイプラインの全体像&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-2-ステージ1-言語識別書き起こし雑音除去&#34;&gt;1-2. ステージ1: 言語識別・書き起こし、雑音除去&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;言語識別・書き起こし&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;言語識別・書き起こし（ASR: Automatic Speech Recognition）では、収集した音声に対して言語判定と書き起こしを行います。&lt;/p&gt;&#xA;&lt;p&gt;書き起こしのためのASRとして、&lt;a href=&#34;https://github.com/SYSTRAN/faster-whisper&#34;&gt;faster-whisper&lt;/a&gt;の&lt;code&gt;large-v3-turbo&lt;/code&gt;モデルを使用しました。&#xA;faster-whisperは、OpenAIのWhisperモデルをCTranslate2で再実装したもので、精度の低下を抑えて推論速度を向上させています。&#xA;また、Whisperは書き起こしだけでなく、言語識別タスクでも学習されています。そのため今回は言語識別でもfaster-whisperで行っています。&lt;/p&gt;&#xA;&lt;p&gt;まず、収集した音声は、言語識別を用いて言語を判定し、日本語・英語以外と判定された音声を除外しました。&#xA;収集した音声のファイル数の約8割が日本語・英語の音声でした。その後、音声に対して書き起こしを行い、結果は発話単位で分割し、各発話単位にタイムスタンプとテキストを付与します。&#xA;発話単位で分割されたそれぞれを、以降セグメントと呼びます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;雑音除去&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;雑音除去では、音声強調の枠組みで、あらゆる劣化が含まれる音から音声（人間の発声器官から生成される音）を抽出することで、学習データとしての品質向上を図っています。これにより、学習したモデルが元の音声に含まれるような雑音を生成することを防げる他、学習データのドメインが可聴音全体から音声までドメインを狭めることが可能となり学習が容易になります。&lt;/p&gt;&#xA;&lt;p&gt;今回は、言語識別やASRを掛けた後に音声強調を適用しました。ASRや言語識別では他言語や無音区間など一部のサンプルが除去されます。そのため先に音声強調を掛けると一部のサンプルに対する強調結果が無駄になってしまうからです。&lt;/p&gt;&#xA;&lt;p&gt;音声強調には&lt;a href=&#34;https://arxiv.org/abs/2509.17052&#34;&gt;Sidon&lt;/a&gt;を使用しました。Sidonは、大規模データセット作成のための音声強調モデルで、ストリーミング推論に対応しています。出力は48kHzの音声ですが、データ容量削減のため24kHzにリサンプリングして保存しています。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-3-ステージ1を効率よく回す工夫&#34;&gt;1-3. ステージ1を効率よく回す工夫&lt;/h3&gt;&#xA;&lt;p&gt;ステージ1のGPUにはNVIDIA L4（VRAM 24GB）を使用しています。モデルや入力音声によってVRAMが足りなくなるので、処理の各所でメモリ制約を考慮した工夫が必要になりました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;言語識別・書き起こし: 入力音声の30分チャンク分割&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;faster-whisperのバッチ推論は、音声全体を固定長の断片に分割してからまとめて推論するため、入力音声が長いほどバッチサイズが増大し、VRAMを圧迫します。長時間音声をそのまま入力するとOut of Memoryが発生するため、入力音声を30分ごとの断片に分割して逐次的に書き起こしを行っています。&lt;/p&gt;</description>
			</item>
			<item>
				<title>日本語音声基盤モデルをスケーリングさせ、TTS性能を見てみる</title>
				<link>https://blog.higurashi.ai/melte/llm-tts-scaling/</link>
				<pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate>
				<guid>https://blog.higurashi.ai/melte/llm-tts-scaling/</guid>
				<description>&lt;p&gt;大規模言語モデルでは、モデルサイズ、学習データ量、計算量を増やすことで性能が向上することが広く知られています。&#xA;こうしたスケーリングの流れは、音声にも及びつつあります。&lt;/p&gt;&#xA;&lt;p&gt;我々は、より高性能な音声基盤モデルを実現するために、モデルサイズとデータ量を拡大し、その効果を検証しました。&#xA;本記事では、1Bおよび3Bの日本語音声を用いた音声基盤モデルを構築し、スケーリングによってText-To-Speech (TTS)においてどのような性能差が現れるかを紹介します。&#xA;前処理、事前学習、事後学習の各段階についての詳細は、続編で詳しく扱う予定です。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;関連記事&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;概要編：この記事&lt;/li&gt;&#xA;&lt;li&gt;前処理編：&lt;a href=&#34;https://blog.higurashi.ai/melte/preprocessing-pipeline/&#34;&gt;音声データを処理する前処理パイプラインと実行基盤を作った話&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;事前学習編：&lt;a href=&#34;https://blog.higurashi.ai/melte/pretrain/&#34;&gt;日本語音声基盤モデルの事前学習&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;事後学習編：&lt;a href=&#34;https://blog.higurashi.ai/melte/posttrain/&#34;&gt;日本語音声基盤モデルの事後学習：TTSに強化学習を適用する&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;コーデック編：&lt;a href=&#34;https://blog.higurashi.ai/melte/noise-robust-codec/&#34;&gt;Making Neural Speech Codecs Robust to Noise with Denoising Training&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;1-なぜ大規模音声基盤モデルを作るのか&#34;&gt;1. なぜ大規模音声基盤モデルを作るのか&lt;/h2&gt;&#xA;&lt;p&gt;大規模言語モデルの発展は、モデルサイズ、学習データ量、計算量を増やすことで性能が着実に向上することを示してきました。&#xA;初期の Scaling Law 研究では、言語モデルの損失がモデルサイズ、データサイズ、計算量に対してべき則的に改善することが示され&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;、その後の Chinchilla では、一定の計算予算のもとでモデル規模と学習トークン数を適切に両立させることの重要性が示されました&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;&#xA;&lt;p&gt;このスケーリングによる性能向上は、音声というモダリティでも起きています。&#xA;例えば、VALL-E (2023) は 300Mのモデルパラメタを6 万時間の英語音声で学習し&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;、SoundStorm (2023) は 350Mパラメータの Conformer を10 万時間の対話音声で学習しています&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;。&#xA;さらに、Moshi (2024) は 7B パラメータの Helium をバックボーンとし、700 万時間の音声を用いて事前学習されています&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;。&#xA;直近では、Qwen3-TTS でも 1.7B へのモデル拡大と、10 言語・500 万時間超の学習データが報告されており&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;、音声合成や音声対話でも、モデルサイズとデータ規模を押し広げる方向が主流になりつつあります。&lt;/p&gt;&#xA;&lt;p&gt;したがって、音声においても、モデルサイズとデータ量によるスケーリングは有力な戦略と期待できます。&#xA;ただし、音声はテキストよりも扱う系列長が長いです。例えば、1秒の音声でも1万6000の系列長を持ちます。(16kHzを仮定)&#xA;そのため系列長に対して計算量が2乗に膨れ上がるLLMの学習においては、どのような表現を用い、どのような学習レシピを使用するかによって、スケーリングの効き方は大きく変わると考えられます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-スケールのためのアプローチ&#34;&gt;2. スケールのためのアプローチ&lt;/h2&gt;&#xA;&lt;p&gt;音声には、発話内容そのものに対応する&lt;strong&gt;言語情報&lt;/strong&gt;だけでなく、感情、話速、抑揚、話し方といった&lt;strong&gt;パラ言語情報&lt;/strong&gt;、さらに話者性や周辺音響環境のような&lt;strong&gt;非言語情報&lt;/strong&gt;が含まれています。&#xA;したがって、音声を扱うモデルを作るためには、「何を喋っているか？」を扱うことに加えて「誰が喋っているか？」「どのような抑揚で喋っているか」などの、音声に含まれる情報全体を扱う必要があります。&lt;/p&gt;&#xA;&lt;p&gt;従来の音声合成では、音声に含まれる情報を分解し、各問題を解くモジュールを組み合わせる構成が一般的でした&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.higurashi.ai/images/g2p_tts_new.svg&#34; alt=&#34;G2PベースのTTSモデル&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;例えば、書記素音素変換（G2P）、アクセント推定、音響モデル、ボコーダを組み合わせて音声合成モデルを作ることになります。&#xA;この構成では、地名等の不規則な読みや新語、テキストに対応した感情、抑揚を実現する際に限界があります。&lt;/p&gt;&#xA;&lt;p&gt;こうした課題に対して、近年ではG2Pを排除しテキストから音声特徴量を直接推定する枠組みが注目されています．&#xA;特に、豊富な言語知識や文脈理解能力を有するLLMをTTSタスクへ適用することで高品質な音声合成が実現されることがわかってきました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.higurashi.ai/images/llm_tts_new.svg&#34; alt=&#34;LLM-TTSモデル&#34;&gt;&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
