nemotron-asr-finetune について
nemotron-asr-finetune は、Nemotron Speech/Riva ASR のドメイン適応を計画するオーケストレーションスキルです。データ、指標、リソースを確認して適切な手法を選び、実行を関連するサブスキルに委ねます。
主な機能
- 01ドメイン、言語、指標、リソースの確認
- 02ブースティング、言語モデル、ファインチューニングの比較
- 03データ準備、学習、評価の計画
- 04学習前のデータと環境の確認
- 05デプロイと反復作業の調整
活用シーン
- 01特定ドメインの ASR 精度向上を計画
- 02データ量に応じた適応手法の選択
- 03WER 評価と忘却チェックの手配
- 04モデルのファインチューニングとデプロイの計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia/ skills --skill nemotron-asr-finetuneインストール後、Claude Code で/nemotron-asr-finetuneを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigassets/experiment-ledger-template.mdevals/EVAL.mdevals.jsonreferences/path-selection.mdplanning-answers.mdsub-skills.mdworkflow.mdscripts/link-nemo-subskill.shmain.py詳細
Nemotron Speech ASR のカスタマイズ — オーケストレーションスキル
注:「Nemotron Speech」は、NVIDIA が現在 Riva/Riva NIM としてドキュメント化している製品の一般向け名称です。音響モデルは NVIDIA NeMo で学習およびファインチューニングされています。コマンド、設定パス、インポート、ドキュメントの URL では引き続き 「Riva」/「NeMo」 が使われます。この変更はブランド名のみです。名称を変更しないでください。
このスキルについて
これは高レベルのオーケストレーションスキルであり、手順を追った学習マニュアルではありません。*「自分のドメイン/言語向けに ASR をファインチューニングしたい」*といった目標に対して、次の役割を担います。
- 問題の範囲を定めます(実音声の量、評価対象のデータセット、レイテンシ/ハードウェアの予算、言語/ドメイン)。
- 必要十分な最も低コストの方法を選択します――単語ブースティング、n-gram LM 融合、またはファインチューニングを選び、品質が不十分な場合にのみ次の段階へ進みます。
- 各段階を適切なサブスキル(データ生成、学習、評価、デプロイ/最適化)に委任します。
- その過程でコスト/所要時間/データに関する質問(X% の WER を達成するために必要な時間、合成データと実データの比較、L40S と H100 の比較、予想コスト)に回答します。
計画の策定と振り分けはこのスキルが担当し、実行はサブスキルが担当します。必要なサブスキルがまだ存在しない場合、このスキルはそれをプレースホルダーとして示し、暫定的なガイダンスを提供します。
使用するタイミング
特定のドメインや言語で Nemotron Speech/Riva の ASR モデルを改善するためのリクエスト全般(精度の向上、WER の削減、言語の追加、ファインチューニングの計画)に使用します。ユーザーが具体的な手法を指定している場合も、まずここから始めてください。オーケストレーションの段階で必要十分な最も低コストの方法だと確認されるまでは、その手法を候補として扱い、その後、適切なサブスキルを順番に実行します。
オーケストレーションワークフロー
以下のループを実行します。各ステージには、呼び出すサブスキルが記載されています。詳細は references/workflow.md をご覧ください。
| # | ステージ | 内容 | サブスキル |
|---|---|---|---|
| 1 | 目標を明示する | 対象(ドメイン/言語)、エラー、指標を把握します。 | オーケストレーション(このスキル) |
| 2 | 確認して範囲を定める | 調査のための質問をします。実際の音声はどの程度あるか、評価用データセットは何か、レイテンシー/ハードウェアの予算はどれくらいか、デプロイ先はどこか、などです。 | オーケストレーション |
| 3 | 進め方を選ぶ | 必要十分な最小コストの段階(ブースティング → n-gram LM → ファインチューニング)を選びます。品質が不足する場合にのみ段階を上げ、全体計画を提案しながら実験します。 | オーケストレーション → リサーチ/トレーニング |
| 4 | データを整える | データが少ない/ノイズが多い場合は、合成データ(TTS)、TTS に適した形式への整形、ノイズのプロファイリング/収集、データのブレンド、ベンダー提供サンプルの評価を行います。顧客データをトレーニング形式に合わせ、不足している実データがあれば明示します。 | SDG/データ |
| 5 | トレーニングする | レシピ(設定、ハイパーパラメーター、リプレイ/カリキュラム、GPU/OOM の事前確認)を適用して実行します。 | リサーチ/トレーニング |
| 6 | 評価する | ドメイン用データセットで正規化 WER を評価し、汎用データセットで A/B 忘却チェックを実施します。エラーに基づいて分析し、次に試す方法を見つけます。 | 評価 |
| 7 | 反復するかリリースする | 目標に届かない場合は、対象を絞ったデータを用いてステージ 4/5 に戻ります。目標に達した場合は、チェックポイントを選択/平均化します。次のサイクルに進む前にユーザーに確認します。 | オーケストレーション |
| 8 | デプロイする | NIM/HF にエクスポートし、チェックポイントをホットスワップして、サービングします。 | デプロイ/最適化 |
ステージ 4~8 はファインチューニングの経路です(data → NeMo train → NeMo eval → Riva deploy)。より低コストの段階(ブースティング、カスタム語彙、n-gram LM)は、単一のサブスキルが担当する短い分岐を進みます。無理に全工程を通さないでください。references/workflow.md の段階別分岐表(§3b)をご覧ください。
トレーニング(ステージ 5)の前に、データセット品質の事前チェック(§4a)を実施します。音声が 16 kHz であることを確認し、必要に応じて変換します。また、ユーザーから依頼があった場合は、参照用の事前トレーニング済みモデルを実行し、提供された正解データに対する WER を確認して、トランスクリプトの品質を監査します。references/workflow.md §4a をご覧ください。
トレーニング(ステージ 5)の前に、環境/依存関係の事前チェック(§4b)も実施します。NeMo が提供されていない場合は、最新の main(ローカル実行の場合)または最新の公開済みコンテナタグ(コンテナ実行の場合)を取得します。NeMo のチェックアウト/インストールがすでに提供されている場合は、そのバージョンを確認します。ただし、古いバージョンを使うリスクがあるため、最新の main への切り替えを引き続き推奨し、ユーザーに確認します。提供されたバージョンを使いたいとユーザーが希望する場合は、そのバージョンで進め、サポートされていない機能など、具体的なバージョンの問題が実際に発生した場合にのみ再検討します。references/workflow.md §4b をご覧ください。
全体を通して、途中で出てくる質問(データ量、合成データと実データのどちらを使うか、WER 目標の達成に必要な時間、コスト、GPU の選択)にも回答します。references/planning-answers.md をご覧ください。
このスキルが呼び出すサブスキル
詳細な一覧、呼び出し方法、引き継ぎの仕様については references/sub-skills.md をご覧ください。
| 役割(アーキテクチャ上の位置づけ) | 目的 | 呼び出すサブスキル |
|---|---|---|
| リサーチ/トレーニング | NeMo の設定、レシピ、ファインチューニング、チェックポイントの平均化。また、NeMo 側の単語ブースティングおよび n-gram LM の試験も担当します。 | nemo-speech-asr-finetune |
| SDG/データ設計 | 合成トランスクリプト/テキスト、ノイズのプロファイリング、ベンダーデータの影響、データのブレンド | data-designer(合成 テキスト。音声は nemotron-speech の TTS で生成)。プレースホルダー: asr-data-profiling |
| 評価 | 正規化 WER、A/B 忘却、エラー分析 | オフラインのファイル WER → nemo-speech-asr-finetune。サービング済みエンドポイントの WER → nemotron-speech |
| デプロイ/最適化 | NIM/Riva へのエクスポート、チェックポイントの切り替え、NIM ビルドの最適化、サービング | nemotron-speech |
サブスキルを利用できない場合は、その旨を伝え、参考資料に記載された暫定的なガイダンスを提示して、計画を続行してください。
選択する方針(低コスト順)
Stage 3 のスコープ設定では、目標を達成できる中で最も低コストの段階を選択します。概要については、ドキュメントに基づく全体の選択肢を references/path-selection.md で確認してください。
- 単語ブースティング — 既知の単語、名前、専門用語の範囲が限られている場合に適しています。成果物が異なる2つの方法があります。
パイロット(NeMo) では、GPU-PB のコンテキストバイアス調整(
nemo-speech-asr-finetune)を使ってオフラインで改善を実証します。一方、デプロイ(Riva) では、ランタイムのboosted_lm_score(nemotron-speech)を使って運用環境に導入します。スコア体系が異なるため、成果物を相互に流用しないでください。どちらもトレーニングは不要で、ランタイムで動作します。詳細はreferences/path-selection.mdを参照してください。 - カスタム語彙/発音 — OOV の用語や、発音が一貫して誤認識される用語に適しています。デプロイ時に適用します。→ デプロイのサブスキル。
- N-gram(KenLM)LM — 音声データは少ないもののテキストがある場合の、ドメイン特有の言い回しや単語列に適しています。構築方法は同じでも、アーキテクチャによってデプロイ方法が異なる2つの方法があります。 パイロット(NeMo、NGPU-LM) では、
nemo-speech-asr-finetuneを使ってオフラインで改善を実証します。一方、デプロイ(Riva) では、nemotron-speechを使って運用環境に導入します。CTC の場合は、パイロット用コーパスを Riva の単語レベル LM 用に再構築してください。パイロットの成果物をそのまま導入しないでください。RNN-T/TDT の場合は逆で、パイロットの.nemo成果物を再構築せず、そのまま Riva に渡します。詳細はreferences/path-selection.mdを参照してください。 - ファインチューニング — 実際の音響的なギャップ(アクセント、ノイズ、チャネル)があり、文字起こし済みの音声データが十分にある場合に適しています(NIM ガイドでは 100 時間以上。壊滅的忘却を避けるためにデータを混合する場合でも、最低約 10 時間が必要です)。約 10 時間未満の場合は、ファインチューニングを推奨せず、代わりに単語ブースティングを推奨してください(壊滅的忘却/過学習のリスクが深刻です)。→ 調査/トレーニング。
- スクラッチからのトレーニング/言語間転移 — 適切なチェックポイントがない新しい言語向けの最終手段です。→ 調査/トレーニング。
選択肢の順序とモデルごとのサポート状況は、NVIDIA Speech NIM の ASR カスタマイズガイドに従います。 https://docs.nvidia.com/nim/speech/latest/asr/customization/customization.html。
重要な原則
- 選ぶ前にスコープを定める。 検討時の質問を行い、ベースラインを測定する前に、ファインチューニングを推奨しないでください。
- 必要十分な中で最も低コストの方法を選ぶ。 現在の段階では目標を達成できないことが明らかな場合に限り、次の段階に進んでください。ファインチューニングの全体計画を提示しつつ、低コストの段階で実験してもかまいません。
- 評価方法を定めて測定する。 ドメインデータセットでの正規化 WER と、汎用データセットでの A/B 忘却チェックを報告してください。トレーニング中のログだけで判断しないでください。
- トレーニング前に検証する。 Stage 5 の前に、データセットの品質を事前にチェックしてください。音声を 16 kHz に変換または検証し、ユーザーから依頼があった場合は、参照モデルの WER と比較して正解の文字起こしを監査してください。リサンプリングされていないデータセットや、依頼された監査が済んでいないデータセットでトレーニングしないでください。詳細は
references/workflow.md§4a を参照してください。 - トレーニング前に環境を把握する。 NeMo が提供されていない場合は、最新の
main(または最新の公開済みコンテナタグ)を取得してください。NeMo が提供されている場合は、そのバージョンを確認したうえで、最新のmainを推奨し、まずユーザーに確認してください。提供されたチェックアウトには常に古いバージョンであるリスクが伴います。ユーザーがそのまま使うことを希望する場合は、先回りして取得せず、未対応の機能など具体的なバージョン上の問題が実際に発生したときにのみ再検討してください。解決した内容を記録簿に残してください。詳細はreferences/workflow.md§4b を参照してください。 - 再実装せず、委任する。 実行はサブスキルに委ね、このスキルでは計画、手順、コスト・時間・データに関する回答に集中してください。
- 通常、ボトルネックとなるのは実際の対象ドメインの音声データです。 実データを優先し、測定で判明した不足を補うために合成データを使う場合は、アブレーションできるよう、重み付けを分けて管理してください。
- 追加の調整サイクルを行う前にユーザーに確認してください。また、必要なサブスキルがプレースホルダーの場合も確認してください。
信頼できる情報源
| トピック | 場所 |
|---|---|
| NIM Speech ドキュメントのホーム | https://docs.nvidia.com/nim/speech/latest/index.html |
| ASR カスタマイズガイド(手法、モデルごとのサポート) | https://docs.nvidia.com/nim/speech/latest/asr/customization/customization.html |
| ASR サポートマトリクス(モデルと機能) | https://docs.nvidia.com/nim/speech/latest/reference/support-matrix/asr.html |
| NeMo ファインチューニング(フラグ/設定) | docs/source/asr/fine_tuning.rst、および nemo-speech-asr-finetune サブスキル |
| Riva ASR チュートリアル(ブースティング、LM、ファインチューニング) | https://github.com/nvidia-riva/tutorials |
| 新しい言語へのトークナイザー拡張 + 音響モデルのファインチューニング | https://github.com/nvidia-riva/tutorials/blob/main/asr-extend-tokenizer-to-newlang-ft-acoustic-model.ipynb |
制限事項
- オーケストレーションのみ — 実行はサブスキル内で行われます。サブスキルがプレースホルダーである場合、ガイダンスはそれが存在するまでの暫定的なものとなります。
- トレーニングの段階には GPU が必要です。デプロイ/サービングは
nemotron-speechサブスキルが担当します。 - モデル名、設定パス、フラグ、およびモデルごとの機能サポートは NeMo/Riva のリリース間で変動します — サポートマトリクスと現在のチェックアウトに対して確認してください。
- 公開ブランディングは 「Nemotron Speech」 です。コマンド、インポート、設定パス、およびドキュメント URL は依然として 「Riva」 / 「NeMo」 を使用しています — 名前を変更しないでください。