Parakeet
更新日:
定義
Parakeetは、NVIDIAのオープンソース音声認識モデルのファミリーです。トランスデューサ構造で、音声が届くそばから言葉を出力できます。そのため、リアルタイム音声入力ツールのエンジンとしてよく使われます。Whisperは、まとまりを読み終えてから処理する作りです。
ParakeetのモデルはWhisperと同じ目的で訓練されていますが、形が異なります。まとまりを読み終えてから書くのではなく、トランスデューサはトークンを連続して出力するので、話している最中でもテキストが表示されます。Apple siliconでは、小さめのParakeetは余裕をもってリアルタイムで動きます。キーを離した時点で言葉が入るべき音声入力には、うってつけです。
代わりに犠牲になるのは対応言語の幅です。ParakeetのモデルはWhisperより少ない言語で訓練されているので、ストリーミングにParakeetを使うツールは、それ以外の言語にはバッチモデルを組み合わせます。
トランスデューサとエンコーダ・デコーダ
Whisperのようなエンコーダ・デコーダモデルは、読み手と書き手の組み合わせです。エンコーダが音声の一定区間を消化し、そのあとでデコーダが文字起こしを書きます。トランスデューサはこの2つをつなぎ、区間が閉じるのを待たずに、新しい音声の断片ごとに新しいトークンを出せるようにしています。これがストリーミングに必要な仕組みであり、トランスデューサが長い音声で安定しやすい理由でもあります。文章全体を「考え直して」繰り返すことがないからです。
音声入力ツールでの役割
Parakeetは、キーを押している間に動かしておきたいエンジンです。ノッチやピル型の表示にライブの文字起こしを出し、聞き取れていることを確認させ、キーを離した時点でやることをほとんど残しません。最終的なテキストの品質は、どのASRモデルでも同じく、そのあとに続く整形の段階と、名前のための辞書に左右されます。
Parakeet v2とv3:それぞれのバージョンでできること
いまParakeetといえば、たいていTDT 0.6Bの2つのリリースのことです。どちらもパラメータ数は6億で、句読点と大文字・小文字を付け、タイムスタンプを返し、CC BY 4.0ライセンスで公開されています。
違いは言語です。バージョン2は英語専用で、約12万時間の英語音声で学習されています。バージョン3はこれを25のヨーロッパ言語に広げ、どの言語が話されているかを指定なしで検出します。NVIDIAが報告するHugging Face Open ASR Leaderboardでの平均単語誤り率は、v2が6.05%、v3が6.34%です。
- 西ヨーロッパ・北ヨーロッパ:デンマーク語、オランダ語、英語、フィンランド語、フランス語、ドイツ語、スウェーデン語。
- 南ヨーロッパ:ギリシャ語、イタリア語、マルタ語、ポルトガル語、スペイン語。
- 中央ヨーロッパ:クロアチア語、チェコ語、ハンガリー語、ポーランド語、スロバキア語、スロベニア語。
- バルト:エストニア語、ラトビア語、リトアニア語。
- 東ヨーロッパ:ブルガリア語、ルーマニア語、ロシア語、ウクライナ語。
自分のオーディオでParakeetを実行する方法
NVIDIAは、Python用のNeMoツールキットを通じてParakeetを公開しています。モデルカードでは対応OSはLinuxとされ、モデルはNVIDIAのグラフィックカード向けに最適化されているとあるので、Macで実行するのは実験と考えてください。読み込みには少なくとも2GBのメモリが必要で、メモリが多いほど長い音声を扱えます。
- 最近のバージョンのPyTorchをインストールしてから、ツールキットをインストールします:pip install -U nemo_toolkit['asr']
- 録音を、モデルが想定する16kHzモノラルのwavまたはflac形式に変換します。ffmpegの場合:ffmpeg -i input.m4a -ar 16000 -ac 1 audio.wav
- Pythonを起動して実行します:import nemo.collections.asr as nemo_asr
- モデルを読み込みます:asr_model = nemo_asr.models.ASRModel.from_pretrained(model_name="nvidia/parakeet-tdt-0.6b-v3")
- 文字起こしします:output = asr_model.transcribe(['audio.wav'])
- テキストを表示します:print(output[0].text)
- 単語単位とセグメント単位のタイムスタンプが必要な場合は、transcribeの呼び出しにtimestamps=Trueを追加します。
ParakeetとWhisper:公開されている事実で比べる
どちらもダウンロードできるオープンな音声認識モデルで、どちらも句読点付きのテキストを出力します。違うのは、サイズ、対応範囲、ライセンス、そして何のために設計されたかです。NVIDIAはParakeet TDT 0.6B v3を高スループットの文字起こし向けに設計されたと説明しており、そのモデルカードには、数秒ずつのチャンクで音声を処理するストリーミングモードも記載されています。
- 言語:Parakeet TDT 0.6B v3は25のヨーロッパ言語に対応しています。Whisperは英語とほかの98言語で学習されています。
- サイズ:Parakeet TDT 0.6Bのパラメータ数は6億です。Whisperは3,900万(tiny)から15億5,000万(large)まであります。
- ライセンス:ParakeetはCC BY 4.0で、クレジット表記が必要です。WhisperはMITです。
- 翻訳:Whisperはほかの言語を英語に翻訳できます。Parakeet TDTのモデルカードに記載されているのは文字起こしだけです。
- 長い音声:Parakeetは1回で最大24分、ローカルアテンションを使えば最大3時間まで処理できます。Whisperはファイル全体に30秒の窓をずらしていきます。
- 入力:Parakeetは16kHzモノラルのwavかflacを想定しています。Whisperはffmpegを使って一般的なオーディオ形式を読み込みます。
よくある質問。
音声認識におけるParakeetとは?
NVIDIAによるオープンソースのASRモデルのファミリーで、ストリーミングのために作られています。音声が入ると同時に言葉が出てきます。より多くの言語に対応するもののバッチで動くWhisperと、組み合わせて使われることがよくあります。
ParakeetはWhisperより優れていますか?
対応言語でのリアルタイム音声入力なら、話している間にテキストが表示されるので、使い心地はよく感じられます。対応言語の幅やファイルの文字起こしでは、Whisperのほうが幅広く対応しています。優れたツールは、それぞれを得意なことに使います。
Parakeetはどの言語に対応していますか?
Parakeet TDT 0.6B v2は英語のみに対応しています。バージョン3は、英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、オランダ語、ポーランド語、ロシア語、ウクライナ語を含む25のヨーロッパ言語に対応し、言語を自動で検出します。
Parakeetは商用利用できますか?
はい。NVIDIAはParakeet TDT 0.6BをCC BY 4.0ライセンスで公開しており、商用・非商用のどちらにも利用できるとしています。ライセンス上、クレジット表記が必要です。
Parakeetはどのくらいの長さのオーディオファイルを文字起こしできますか?
NVIDIAによると、Parakeet TDT 0.6B v3は、A100 80GBグラフィックカード上でフルアテンションなら最大24分、ローカルアテンションなら最大3時間のオーディオを処理できます。