ちょっと、タイトル言いすぎかもしれないので、すみません🙇
IBMが2025年にリリースした革新的な音声AIモデルGranite Speech 3.3(以下、Granite Speech)をご存知でしょうか?
このオープンソースモデルは、Hugging Face Open ASR Leaderboardで業界トップクラスの性能を記録し、無料で商用利用も可能です。性能としても商用システムと比較しても競合レベルの精度とのこと。
今回は、高性能なGPUを持っていない方でも、Google Colabを使って無料で試せる方法も紹介しようと思います。OllamaではGranite 3.3は使用できるのですが、Granite Speechがないので、Google Colabを使用せざるを得なかった🥲
IBM Granite Speech 3.3入門!高性能音声AIをGoogle Colabで動かそう
Granite Speechって何ができるの?
Granite Speechは、IBMが開発した最先端のオープンソース音声言語モデルです。主な機能は2つあり、人間の話した言葉をテキストに変換する自動音声認識(ASR)、そしてある言語の音声を別の言語のテキストに変換する自動音声翻訳(AST)となります。
Granite Speechの特徴
音声処理の2パス設計
従来の音声AIは音声処理とテキスト理解を同時に行うため、どちらかの性能が犠牲になりがちでした。
Granite Speechは以下の2段階処理で高精度を実現
この設計により、それぞれでパフォーマンスを発揮できます。
気になるベンチマークは?
Hugging Face Open ASR Leaderboardでの主要な成果
詳細はモデルのページより
ベンチマークでは、NVIDIAのParakeetのような強力なオープンモデルや、一部の商用システムを上回る結果が出ているようです。IBM曰く、データの量よりも質を重視したトレーニング戦略を採用しているとのことで、これが高い精度につながっているのかもしれません。
個人的にはベンチマークよりも、実際に使ってみたときの精度が一番重要だと思うので、後ほど実際に動かしてみることにしましょう😎
Parakeet参考
https://zenn.dev/kun432/scraps/96928cf8f4a516
多言語対応
Granite Speechは英語の音声認識に最適化されていますが、フランス語、ドイツ語、スペイン語、ポルトガル語(日本語が無い😭)の音声入力にも対応しています。さらに音声翻訳の出力先として日本語🤩を含む多様な言語をサポートしています。できれば早く日本語にも対応してほしいですね。
長時間音声処理
多くのモデルが短い時間の音声しか一度に処理できないのに対し、Granite Speechは任意の長さの音声を扱うことができる点も見逃せません。会議の録音や講演の文字起こしなど、実際のビジネスシーンでは長時間の音声処理が必要になることが多いので、この機能は非常に実用的です。ただし、最高の精度を保つには1分以内のセグメントに分割することが推奨されているようです。
多くのASRモデル(OpenAIのWhisperなど)の場合、セグメントは30秒くらいにするのが良いということがよく書かれていますが、これのもとの情報がどこからの話なのか知りたいが見つけられなかった🥲
実際にどう動くのか
Granite Speechの処理の流れを、具体例で見てみましょう。
たとえば、英語の音声で "Hello, my name is Alice." が入力されたとします。
- パス1では、この音声が忠実にテキスト化されます(英語文字起こし)。
- パス2では、このテキストに対して"What is her name?"という質問を投げかけると、LLMが "Alice." と回答してくれます。
このように、文字起こしだけではなく、内容の理解と返答の処理を1つのLLMで処理できるのが、2パスの動作となります。(もちろんプロンプトは2回送信することになります)
いままでいいことしか書いていないので、自分も書いていてホントかなと思ってしまうくらいには疑ってしまいます🤔
Google Colabで実際に動かしてみよう
疑っていても仕方ないので、実際に動かしてみることにしましょう。
Granite Speechは高性能な分、コンピュータリソース、特にGPUやVRAMを要求します。Google Colabを使えば無料でも試すことができます。以下では、起動するインスタンスをT4 GPU(VRAM 約15GB)で動作させる前提で手順を説明します。

環境の準備
Colabノートブックはこちら
上記のリンクを開くことで、実行できるようにしました。Google Colabでノートブックを開き、ランタイムのタイプをT4 GPUに変更します。次に必要なライブラリをインストールしますが、ここでポイントとなるのがbitsandbytesとaccelerateです。これらはモデルを量子化するために必要で、VRAMの使用量を大幅に削減してくれます。特に8Bモデルを動かすにはVRAMがギリギリなので必須となります。
# 必須ライブラリのインストール !pip install transformers>=4.52.4 torchaudio peft soundfile huggingface_hub !pip install bitsandbytes>=0.41.0 accelerate>=0.20.0 !pip install ipywidgets
実装コードの準備
次に、GraniteSpeechProcessorクラスを実装します。このクラスが音声処理の中核となります。
import os import gc import torch import torchaudio from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq, BitsAndBytesConfig from google.colab import files import ipywidgets as widgets from IPython.display import display import warnings warnings.filterwarnings("ignore") # PyTorchメモリ管理の最適化設定 os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'expandable_segments:True'
モデルの選択と読み込み
2Bモデルと8Bモデルから選択できるようにします。8Bモデルは4bit量子化を使用してメモリ効率を向上させています。
# モデル選択UI model_selector = widgets.RadioButtons( options=[ ('2Bモデル(軽量・高速)', '2b'), ('8Bモデル(高品質・4bit量子化)', '8b') ], description='モデル:', disabled=False )
8Bモデルを使用する場合は、以下のような量子化設定を適用します:
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.float16
)
音声ファイルの処理
音声ファイルをアップロードして、16kHzのモノラル音声に変換します:
# 音声ファイルの読み込みと前処理 wav, sr = torchaudio.load(filename, normalize=True) # モノラルに変換 if wav.shape[0] > 1: wav = wav.mean(dim=0, keepdim=True) # 16kHzにリサンプリング target_sr = 16000 if sr != target_sr: resampler = torchaudio.transforms.Resample(orig_freq=sr, new_freq=target_sr) wav = resampler(wav) sr = target_sr
長時間音声の分割処理
5分以上の長い音声は、今回は2分ごとのチャンクに分割して処理しています。
def split_audio(wav, chunk_duration=120): """長時間音声を分割(2分間隔)""" sr = 16000 chunk_samples = chunk_duration * sr total_samples = wav.shape[1] if total_samples <= chunk_samples: return [wav] chunks = [] for start in range(0, total_samples, chunk_samples): end = min(start + chunk_samples, total_samples) chunk = wav[:, start:end] chunks.append(chunk) return chunks
タスクの実行
実際のタスクは以下の3つを順番に実行します:
1. 英語音声文字起こし(ASR)
task_prompt = "<|audio|>" # 音声認識用プロンプト
2. 英語→日本語翻訳(AST)
文字起こし結果を使って翻訳を実行
3. 英語要約生成
文字起こし結果から要約を生成
実行方法
準備ができたら、以下のステップで実行します。※順番のセルを実行すればOKです。
Step 1: ライブラリのインストール

Step 2: コードのセルを実行
実行するとボタンのついたGUIが表示されます。

あとはボタンを押していくだけです!
Step 3: モデル選択と読み込み
使用するモデルを選択して【モデル読み込み】ボタンをクリックします。 ここが時間がかかります。2bモデルの方が軽いので、まずはそこから始めるとよいでしょう。

モデルのダウンロードはプログレスバーが表示されます。

モデルのロードが終わるとボタンが【モデル読み込み完了】と緑色に変わります。

Step 2: 音声ファイルのアップロード
続いては【音声ファイルアップロード】ボタンをクリックします。

ボタンをクリックすると画面下(スクロールしないとみえないかも)に【ファイル選択】ボタンが表示されます。

これをクリックして対象となる音声ファイルを選びアップロードします。

今回の音声は以下のYouTubeの動画(IBM DeveloperのPodcast)をつかっています。
画面を上に戻り、ボタンが【アップロード完了】と緑色に変わっていることを確認します。

Step 3: タスクの実行
続いては【英語文字起こし・日本語翻訳・…】ボタンをクリックします。

あとは処理の完了を待つだけです。以下のような表示がでれば成功です。
音声ファイル準備完了!英語文字起こし・日本語翻訳・英語要約の処理を実行してください podcast.mp3 の英語文字起こし・日本語翻訳・英語要約の処理を開始... Granite Speech 音声処理テスト (455.0秒音声) ============================================================ 警告: 長時間音声(7.6分)はメモリ集約的です より短い音声での使用を推奨します タスク 1: 英語音声文字起こし(ASR) 説明: 基本的な英語音声認識・文字起こし -------------------------------------------------- 長時間音声(455.0秒)を分割処理します 音声を4個のチャンク(各120秒)に分割 チャンク 1/4 処理中... 音声処理中... (120.0秒) GPU Memory: 5.65 GB チャンク 2/4 処理中... 音声処理中... (120.0秒) GPU Memory: 5.65 GB チャンク 3/4 処理中... 音声処理中... (120.0秒) GPU Memory: 5.65 GB チャンク 4/4 処理中... 音声処理中... (95.0秒) GPU Memory: 5.65 GB 処理結果: ======================================== hey erica it's wendy day hey ash it is indeed so today we'll release the granite three point three speech model we did uh our first speech models that excels at automatic speech recognition okay um like so i can take just speech or audio and then put that into a ai model and do something with it yeah so think about um this apple siri or amazon alexa those are speech to text models but we've open sourced the granita 33 speechmodels so anyone can use it to for any speech-to-text uhts oh wow okay s... [全4351文字] ======================================== タスク 1 完了 ============================================================ 第2パス: 英語テキスト → 日本語翻訳(AST) ============================================================ Granite-3.3-2b-instructモデルによる翻訳処理中... 翻訳処理GPU Memory: 5.65 GB タスク 2: 英語→日本語翻訳(AST) 説明: 英語文字起こしされたテキストを日本語に翻訳 -------------------------------------------------- 処理結果: ======================================== こんにちはエリカ、ウィンディーです。アシー、確かにそうですね。今日は、私たちが最初に作成した自動話認識に優れたスピーチモデル、グラナイト3.3をリリースします。まず、単に音声やアウトプットを取り込み、それをAIモジュールに入れて処理することができます。例えば、Apple SiriやAmazon Alexaのようなスペースチャンクをテキストに変換するものですが、これらはスプレーキングトランスクリプションのために開発されています。しかし、我々はGraphita 三三のスプリンクトゥー・トークナライゼーショムをオープンソースにしました。誰でも使用して、どのようにしてスパークトギャップを行うかを選択できます。それはとても時間を節約するのに役立ちます。多くのポッドキャストが存在するので、自分自身でいくつかのものを手伝いたいのです!それについての詳細を聞いてたら楽しみにしています。あなたはどうやって行うのか?現在、教材はIBMコミュニティに掲載されており、GitHubにもあります。どちらの場所からも、ノートブックをダウンロードしてローカルマシンで実行するか、またはGoogle Colabノードで動... [全1044文字] ======================================== タスク 2 完了 ============================================================ 全処理完了: VRAMキャッシュをクリア中... 最終GPU Memory使用量: 5.65 GB VRAMキャッシュクリア完了 ============================================================ ============================================================ 英語文字起こし内容の要約生成 ============================================================ 英語文字起こしテキストの要約を試行中... 注意: Granite Speech 3.3は主に音声処理用のため、要約機能は制限的です タスク 3: 英語文字起こし内容の要約 説明: 英語文字起こし結果から内容の要約を生成 -------------------------------------------------- 処理結果: ======================================== Wendy and Ash are announcing the release of Granite 3.3, an open-source speech model for automatic speech recognition. This model, similar to Apple Siri or Amazon Alexa, can convert speech or audio into text. They've open-sourced it for anyone to use for speech-to-text tasks. The tutorial for using this model, including converting podcasts into text and summarizing them, is available on IBM's website and GitHub. The process involves downloading necessary packages and libraries, such as TorchAudi... [全590文字] ======================================== タスク 3 完了 すべての処理が完了しました!
メモリ管理の話
Google Colabの限られたメモリで動作させるため、以下の工夫をしています。
タスク間でのメモリ解放
gc.collect() torch.cuda.empty_cache()
エラー時の自動リトライ(より少ないトークン数の実行へ変更する)
except torch.cuda.OutOfMemoryError: # トークン数を制限してリトライ return process_audio_chunk(wav, task_prompt, max_new_tokens=150, num_beams=1)
実行時の注意点
- 初回実行時 … モデルのダウンロードに時間がかかります(8Bモデルでは約10分以上かかります)
- 推奨音声長 … 最適なパフォーマンスを得るには5分以内の音声を推奨
- GPU確認 … 実行前に必ずGPUランタイムが有効になっていることを確認してください
おわりに
Granite Speechを実際に触ってみると、2パス設計は結構便利かも。
音声を単に文字に変換するだけでなく、その内容を理解し、分析し、要約することまで一連の流れとして処理できます。これまではWhisperで文字起こししてから、別のLLMで要約や質問応答を行う必要がありましたが、Granite Speechなら一つのフレームワークで完結できるのは大きな利点ではないでしょうか。
まずはGoogle Colabで実際に動かしてみることがおすすめです😎
参考リンク