Grok / 音声文字起こしAPI
録音とライブ、必要な条件で選ぶ
- しっかり読む
- 約28分
- 要点を読む
- 約5分
Grok Voice Transcribe 2.0は、音声を文字に変換するAPI向けモデルです。録音はバッチ、ライブ音声はストリーミングを候補にし、日本語の設定・費用・必要な出力から採用を判断します。
料金だけで選ぶ前に、話者や単語ごとの時刻が必要か、音声を外部へ送信できるかを確認しましょう。本記事では、用途別判断表から設定、APIの最小例、1.0の移行確認までを整理します。
こんな人に役立ちます
- 会議やインタビューの録音を文字データにしたい人
- 字幕制作に発言の時刻情報を使いたい人
- ライブ字幕や音声エージェントの認識部分を実装する人
Grok Voice Transcribe 2.0は自分の用途に合う?
Grok Voice Transcribe 2.0は音声を文字にするモデルであり、本記事では録音・字幕・ライブ・音声エージェントの認識部分という用途から、利用方式と必要な出力を選びます。まず、音声をまとめて渡すのか、発話中に送り続けるのかを分けます。
音声を文字にする役割と2.0の変更点
Grok Voice Transcribe 2.0が担当するのは、音声認識による文字起こしです。Speech to Text(STT)とは、音声を文字へ変換する処理を指します。文字を読み上げる音声生成や、Grokと会話するVoice Modeとは役割が異なります。Grok音声文字起こしの公式製品ページ
公式発表では、2.0で文字起こし品質を改善したと説明されています。話者分離、単語単位の時刻、キーワード指定を含む料金は1.0から据え置きとされていますが、発表上の改善を、手元の日本語音声での精度保証には置き換えられません(2026年9月23日確認)。Grok Voice Transcribe 2.0の公式発表
運営主体の公式表記は米国のSpaceXAI LLCです。APIや文書ではxAIの名称も使われています(2026年9月23日確認)。運営主体を確認できる公式プライバシーポリシー。全体像を整理したい場合は、Grokの機能と利用先の違いも参照できます。
録音・字幕・ライブの用途別判断表
録音済みならRESTのバッチ処理、発話中の結果が必要ならWebSocketのストリーミングを候補にします。以下は本記事の選び方で、単価は送信する音声の1時間あたりです。API利用を前提とするため、完成済みの会議録アプリを探している場合は、そのまま使えるサービスかを別に確認してください。
| 用途 | 方式・基本単価 | 必要な出力・設定 | 採用条件・次の確認 |
|---|---|---|---|
| 録音会議 | バッチ 0.10米ドル/音声1時間 | 文字+話者番号。話者分離を有効化 | 録音後の処理で間に合い、送信・保存条件を満たす場合 |
| インタビュー・字幕制作 | バッチ 0.10米ドル/音声1時間 | 単語の開始・終了時刻、必要な固有名詞を指定 | 時刻情報を後処理へ渡せる場合。字幕ファイルの直接出力とは分ける |
| ライブ字幕 | ストリーミング 0.20米ドル/音声1時間 | 途中結果と確定結果を区別 | 音声形式・接続数を満たし、途中結果の書き換えを扱える場合 |
| 音声エージェントの認識部分 | ストリーミング 0.20米ドル/音声1時間 | 文字起こし、必要に応じて発話終了の検出 | 返答の生成・音声再生などを別途実装できる場合 |
xAI公式API料金/公式STTガイド(2026年9月23日確認)
日本語対応は確認できますが、認識品質は音源ごとに確認が必要です。また、文字起こしだけで議事録の要約、完成した字幕、音声エージェント全体まで自動完成するわけではありません。採用前に、必要な出力と音声データの取扱条件を確認してください。
料金はいくら?音声時間から費用を見積もる
Grok Voice Transcribe 2.0の料金は、2026年9月23日確認時点で音声1時間あたりバッチ0.10米ドル、ストリーミング0.20米ドルで、Grokの月額契約とは別請求です。処理を待った時間ではなく、音声の長さを基準に見積もります。xAI公式API料金/公式アカウントFAQ
バッチとストリーミングの単価から計算する
基本の計算は「音声時間×方式別単価」です。たとえば、月20時間の音声を処理する想定なら、バッチは20×0.10=2米ドル、ストリーミングは20×0.20=4米ドルです。これは公式単価だけを使った編集上の概算例で、通信・保存・後処理などの別費用は含みません。
話者分離、単語時刻、キーワード指定は基本料金に含まれます(2026年9月23日確認)。録音後でよい用途では、単価の低いバッチを先に検討する理由になります。途中結果が必要な用途では、価格差だけで方式を決めないことが大切です。Grok Voice Transcribe 2.0の公式発表
無料デモ・Grokの月額契約・API課金を分ける
公式ページの無料デモと、一定量のAPIが無料になる契約は別です。製品ページには試用への案内がありますが、すべての利用者に共通するAPI無料枠・時間・期限は今回確認した公式資料では確定できませんでした(2026年9月23日確認)。Grok音声文字起こしの公式製品ページ
Grokの一般向けサブスクリプションを契約していても、その料金にAPI従量課金が含まれるとは扱いません。APIは前払いクレジットなどの請求設定を確認し、月次請求も「月額で使い放題」と混同しないでください。クレジット不足と請求設定によってはリクエストが拒否されます(2026年9月23日確認)。公式アカウントFAQ/xAI Consoleの請求案内
日本語・話者分離はどう設定する?
Grok Voice Transcribe 2.0の日本語認識と文字整形は別で、数値などを整形する場合、RESTではformat=trueとlanguage=ja、ストリーミングではlanguage=jaを指定します。日本語は対応言語に含まれますが、整形指定と認識精度の保証は別の話です(2026年9月23日確認)。公式STTガイド
日本語の認識と数値・通貨の整形を分ける
日本語の音声を扱えることと、話された数字を数値表記へ整えることは別の機能です。公式表記のJapaneseに対応する言語コードはjaです。数字・通貨などの整形が必要な場合は、利用方式ごとに指定方法を変えます。
| 機能 | REST | ストリーミング | 設定時の注意 |
|---|---|---|---|
| 日本語の文字整形 | format=true+language=ja | language=ja | 言語対応とは区別。RESTの指定をそのままWebSocketへ移さない |
| 話者分離 | diarize=true | diarize=true | 単語に話者番号。実名を特定する機能ではない |
| 単語時刻 | words内のstart・end | 確定結果の単語情報を利用 | 字幕ファイルの直接出力とは別 |
| キーワード | keytermを繰り返し指定 | クエリへkeytermを指定 | 最大100語句・各50文字。永続辞書ではない |
| フィラーを残す | filler_words=true | filler_words=true | 既定はfalse。日本語での細かな除去規則は未確認 |
| 別チャンネルの認識 | multichannel=true | multichannel=trueと入力条件に応じたチャンネル指定 | 話者分離とは別。形式による制約も確認 |
公式STTガイド/STT APIリファレンス(2026年9月23日確認)
話者・単語時刻・録音チャンネルを使い分ける
話者分離は発言者を番号で区別し、チャンネル別認識は録音時点で分かれた音声を扱います。1本の録音に複数人の声が混ざっている場合と、話者ごとの音が別チャンネルに入っている場合では、入力の構造が異なります。
diarize=trueでは単語情報のspeakerを使います。単語のstartとendは発言位置の確認に役立ちますが、話者番号が実名に対応するかは自分で照合する必要があります。STT APIリファレンス
チャンネル数はAPI文書では最大8とされる一方、製品ページには2チャンネルという記載があり、確認時点で表記が一致していません。実装ではAPI文書の入力形式・チャンネル条件を確認し、Opusのストリーミングはモノラルという制約にも注意してください(2026年9月23日確認)。公式STTガイド/Grok音声文字起こしの公式製品ページ
キーワード指定とフィラー設定を選ぶ
専門用語や固有名詞はkeytermで候補を指定し、発言をどこまで残すかはfiller_wordsで調整します。たとえば社内の製品名をキーワードとして渡せますが、辞書への永久登録やモデルの再学習、正しい認識を保証する指定ではありません。
逐語録ではフィラーを残す設定、読みやすい原稿の下書きでは既定設定を候補にする、というのが本記事の判断基準です。日本語の「あの」「ええと」などがどの条件で除去されるかは、実際の音声で確認してください。公式STTガイド
会議音声を送信する前に何を確認する?
Grok Voice Transcribe 2.0へ業務音声を送る際は、録音の権利とAPIの保存・学習利用条件を分けて確認し、その音声を送信してよいか判断します。料金や機能が合っていても、会社や依頼主の条件を満たさなければ送信を保留します。
録音の権利と利用条件を確認する
業務利用では、入力する音声の権利・必要な同意・契約条件を確認します。企業向け規約は業務での利用や組み込みを扱いますが、あらゆる素材・用途への無条件の許可ではありません。対象規約の年齢条件も含め、利用者が条件を満たす必要があります(2026年9月23日確認)。企業向け利用規約
保存・学習利用・ZDRを分けて判断する
API入力が学習に使われるかと、監査等のために保存されるかは別です。公式FAQでは、明示的な許可なしにAPIの入力・出力を学習に使わないことと、通常は暗号化した監査データを30日保存することが説明されています。契約・法令・安全上の例外まで含めて確認し、「30日後に例外なくすべて削除される」とは読み替えないでください(2026年9月23日確認)。公式セキュリティFAQ/企業向け利用規約
ZDRとはZero Data Retentionの略で、データを保持しない設定・取扱いを指します。利用できる場合もチーム単位の条件や機能制限があるため、保存不可の音声を送る前に適用範囲を確認してください。STTのバッチ文字起こしと、別の非同期Batch APIの条件も混同しません。公式セキュリティFAQ
- 録音・第三者サービスへの送信について必要な権利や同意がある。
- 会社・依頼主の規程が、この送信先と利用目的を認めている。
- 保存期間・例外・学習利用条件を確認できている。
- 保存不可の条件があるなら、ZDR等の適用を確認できている。
確認できない項目があれば、対象音声の送信を保留します。一般向けGrokの履歴削除や学習設定を、APIの保存条件の代わりにはしません。
Grokの文字起こしAPIをどう使う?
Grok Voice Transcribe 2.0は、APIキーで認証し、録音ファイルをREST、ライブ音声をWebSocketで送信して利用します。ここでは、録音を送るcURL例と、WAVから音声チャンクを取り出して送るPython例を示します。
アカウント・課金・APIキーを準備する
xAI Consoleで利用するアカウント・チーム・請求設定を確認し、APIキーを用意します。キーは認証用の秘密情報です。ブラウザへ配布するコードや公開リポジトリへ埋め込まず、バックエンドやローカルの環境変数で扱います。API認証の公式案内
- xAI Consoleで利用するチームを選び、APIキーを発行する。
- クレジット残高と請求設定を確認する。必要な項目は公式文書の
BillingやAPI spend managementを参照する。 - 送信条件を満たす音声ファイルを用意し、利用方式と設定を選ぶ。
以下のシェル例はBash向けです。APIキーの仕組みを補足したい場合は、APIキーの役割と安全な扱い方を参照できます。xAI Consoleの請求案内
録音ファイルをRESTで送信する
録音ファイルはPOST https://api.x.ai/v1/sttへ送信します。RESTはHTTPリクエストでファイルをまとめて渡す方式です。ここでいうバッチは録音単位のSTT処理であり、別の非同期Batch APIへジョブを登録する手順ではありません。
同じ作業フォルダーにmeeting.mp3を用意し、次をBashで実行します。入力するAPIキーは画面へ表示しません。日本語の整形と話者分離を指定し、fileを最後のフォーム項目にしています。
read -r -s -p "xAI APIキー: " XAI_API_KEY
printf '\n'
export XAI_API_KEY
curl --fail-with-body -X POST https://api.x.ai/v1/stt \
-H "Authorization: Bearer $XAI_API_KEY" \
-F model=grok-voice-transcribe-2.0 \
-F diarize=true \
-F format=true \
-F language=ja \
-F 'keyterm=Grok' \
-F '[email protected]'
ファイル上限は500MBです。MP3・WAV・M4Aなどの対応形式を確認し、ヘッダー付き形式へ不要な生音声用パラメーターを加えないでください(2026年9月23日確認)。モデル指定を省略せず、この記事の例ではgrok-voice-transcribe-2.0を使います。公式STTガイド/STTの公式モデル仕様
音声チャンクをWebSocketで送信する
ストリーミングはwss://api.x.ai/v1/sttへ接続し、音声を小分けのバイナリで送信します。WebSocketとは、接続を維持して送受信する通信方式です。サーバーのtranscript.createdを待ってから送信し、途中結果と確定結果を分けて扱います。公式STTガイド
次の例は16kHz・16bit PCM・モノラルのWAVを読み込み、音声データだけを送ります。Pythonのwaveでヘッダーを処理するため、WAVの先頭を固定のバイト数だけ削る方法は使いません。マイク収録UIを含まない最小例です。
コードをgrok_stt_stream.pyという名前で保存します。送信と受信を並行させ、送信後にaudio.doneを通知してtranscript.doneを待ちます。
import asyncio
import json
import os
import sys
import wave
from urllib.parse import urlencode
from websockets.asyncio.client import connect
PARAMS = {
"model": "grok-voice-transcribe-2.0",
"encoding": "pcm",
"sample_rate": 16000,
"interim_results": "true",
"language": "ja",
"diarize": "true",
}
URL = "wss://api.x.ai/v1/stt?" + urlencode(PARAMS)
async def main(path):
with wave.open(path, "rb") as audio:
settings = (audio.getnchannels(), audio.getsampwidth(),
audio.getframerate(), audio.getcomptype())
if settings != (1, 2, 16000, "NONE"):
raise ValueError("16kHz・16bit PCM・モノラルのWAVを用意してください")
headers = {"Authorization": "Bearer " + os.environ["XAI_API_KEY"]}
async with connect(URL, additional_headers=headers) as ws:
ready = json.loads(await ws.recv())
if ready.get("type") != "transcript.created":
raise RuntimeError(ready)
async def send_audio():
while chunk := audio.readframes(1600):
await ws.send(chunk)
await asyncio.sleep(0.1)
await ws.send(json.dumps({"type": "audio.done"}))
sender = asyncio.create_task(send_audio())
try:
async for message in ws:
event = json.loads(message)
kind = event.get("type")
if kind == "transcript.partial":
state = "確定区間" if event.get("is_final") else "途中"
print(state + ":", event.get("text", ""))
elif kind == "transcript.done":
print(json.dumps(event, ensure_ascii=False, indent=2))
break
elif kind == "error":
raise RuntimeError(event)
finally:
sender.cancel()
await asyncio.gather(sender, return_exceptions=True)
if __name__ == "__main__":
asyncio.run(main(sys.argv[1]))
同じフォルダーへ条件を満たすmeeting-16k-mono.wavを置き、次をBashで実行します。仮想環境へWebSocket用ライブラリを導入し、APIキーを入力します。
python3 -m venv .venv
source .venv/bin/activate
python -m pip install websockets
read -r -s -p "xAI APIキー: " XAI_API_KEY
printf '\n'
export XAI_API_KEY
python grok_stt_stream.py meeting-16k-mono.wav
コード中の0.1秒は、100ミリ秒分の音声チャンクを送る間隔として置いた値です。APIの応答速度や文字起こしの完了時間を示す数値ではありません。長時間接続、再接続、入力機器への接続は、この最小例とは別に設計します。
確定結果とエラー時の確認先を押さえる
保存や後処理へ渡すときは、確定状態を確認します。transcript.partialでも、is_final=falseは変更され得る途中結果、is_final=trueは確定区間です。speech_final=trueは発話の区切りを示し、音声送信を終えた後のtranscript.doneとは分けて扱います。durationは音声の秒数で、APIの処理時間を表すものではありません。公式STTガイド/STT APIリファレンス
会議録では本文のtextだけでなく、必要に応じてwordsの時刻やspeakerを確認します。Smart Turnはストリーミングで発話の終わりを判断する機能で、返答を生成する機能とは別です。公式STTガイド
失敗時は認証、残高、音声形式、レート制限の順に確認します。公式文書にはTier 0の10 RPS、ストリーミングのチームあたり100同時接続などの条件がありますが、利用階層による差を確認してください(2026年9月23日確認)。RPSは1秒あたりのリクエスト数で、同時接続数や文字数の上限ではありません。公式レート制限
条件を満たしていても接続できないときは、xAI公式ステータスで障害情報を確認します。ここに示したAPI例について、実サービスへの音声送信による動作・認識品質の確認は行っていません。
1.0から2.0へ、どの連携を見直す?
Grok Voice Transcribe 2.0は2026年9月23日確認のSTTガイドとモデル仕様では既定モデルですが、1.0の利用停止日は確認できないため、既存連携ではモデル指定と切り替え後の出力を確認します。公式STTガイド/STTの公式モデル仕様
一方、9月17日付のリリースノートには既定値が1.0と記載され、発表記事にも今後2.0へ切り替える旨が書かれています。資料の時点を分けて読み、今回の検証ではmodel=grok-voice-transcribe-2.0を明示すると、どのモデルを試したかを記録できます。公式リリースノート/Grok Voice Transcribe 2.0の公式発表
1.0指定・モデル省略・2.0指定を確認する
最初に見るのは、実際に送っているmodelの値です。設定ファイルだけでなく、環境変数や共通クライアントで上書きしていないかも確認します。
- 1.0を明示:
grok-voice-transcribe-1.0の利用箇所を洗い出し、2.0での出力確認を準備します。 - モデル省略:現在の既定値を公式文書で確認し、利用するモデルを明示するか判断します。
- 2.0を明示:呼び出し側と後処理が想定どおりの出力を扱えているか確認します。
1.0は今後廃止する旨が告知されていますが、今回確認した資料では利用停止日を確定できませんでした。記事側で期限を作らず、公式リリースノートとモデル仕様を継続して確認する運用にします(2026年9月23日確認)。
同じ音声と設定で切り替え後の出力を確かめる
移行判断では、同じ音声・同じ設定で、後処理に必要な情報が得られるかを比べます。これは本記事の確認手順で、公式が保証する互換性や、筆者による比較結果ではありません。
会議録なら話者の付け方と固有名詞、字幕用途なら単語時刻、ライブ用途なら途中結果から確定結果への扱いを確認します。JSONの項目を読むコードだけでなく、出力を整形する処理や保存先まで含めて見直すと、モデルだけを替えて終えることを避けられます。
外部評価は、精度と確定までの待ち時間を分けて読む
公開ベンチマークは移行を試す手掛かりになります。Artificial Analysisの投稿では、ストリーミングの確定結果と非ストリーミングを別々に評価しています。指標のWER(単語誤り率)は、正解の文字起こしに対する単語の置換・挿入・削除を数えた値で、低いほど誤りが少ないことを表します。Artificial Analysisの測定方法
この0.49秒は、発話終了を検出してから確定結果を受け取るまでの指標です。録音全体の処理時間や、話し始めてから最初の文字が表示されるまでの時間とは異なります。また、AA-WERは英語の議会発言や決算説明会などを含む評価で、本記事が日本語音声を実測した結果ではありません。評価データと遅延の定義
投稿には2.0より短い時間で確定する他モデルも挙げられています。ライブ字幕や音声エージェントでは、手元の日本語音声で誤認識と待ち時間の両方を記録し、用途に合うかを判断しましょう。
導入前に残る疑問は?
Grok Voice Transcribe 2.0について今回確認した公式資料では、音声時間の上限や字幕ファイルの直接出力、各地域・アプリでの提供条件をすべて確定できたわけではありません。対応が確認できないことと、非対応であることを分けます。
長時間の音声も送れますか?
Grok Voice Transcribe 2.0の音声時間上限は今回の公式確認では確定できず、ファイルの500MB上限と分けて判断します。圧縮形式や音質で容量が変わるため、容量から一律の時間上限を逆算しません(2026年9月23日確認)。公式STTガイド
SRT・VTTを直接出力できますか?
Grok Voice Transcribe 2.0のSRT・VTT直接出力は今回確認した公式仕様では明記を確認できず、単語時刻を使う後処理と区別します。字幕制作で採用する場合は、JSONの時刻情報を編集・変換する工程を見込みます(2026年9月23日確認)。STT APIリファレンス
日本語対応なら日本から利用できますか?
Grok Voice Transcribe 2.0の日本語対応は確認できますが、日本のすべてのアカウントで同じ条件で使えることまでは確認できません。モデルの提供リージョンと、利用可能な国・契約条件は別です。利用するアカウントで提供状況を確認してください(2026年9月23日確認)。STTの公式モデル仕様/公式アカウントFAQ
Grokアプリ内で2.0を選べますか?
Grok Voice Transcribe 2.0を一般向けGrokアプリ内で直接選ぶ手順は、今回確認した公式資料では確認できません。APIのモデル名と、アプリの音声会話機能を同一視せず、アプリ側の案内を確認してください(2026年9月23日確認)。Grok音声文字起こしの公式製品ページ
導入・保留・移行、次に何をする?
Grok Voice Transcribe 2.0の採用は、本記事では必要な出力・費用・音声の取扱条件で判断し、条件が揃えば導入、揃わなければ保留、既存利用者はモデル指定を確認します。次に行う作業は、現在の利用状況に合わせて一つ選びましょう。
- 新規利用:用途に近い録音1件で、必要な日本語・話者・時刻情報が得られるか確認する。
- 送信条件が未確認:対象音声を送らず、権利・保存条件の未確認事項を確認する。
- 既存の1.0利用:モデル指定を調べ、同じ音声と設定で移行時の出力確認を始める。停止日は推定しない。
料金・モデルの既定値や廃止告知・入力上限・データ取扱条件が変わったとき、または用途が録音からライブへ変わったときに、採用判断表と公式仕様を再確認してください。
引用元・参考情報
- Grok音声文字起こしの公式製品ページ — 製品の役割・日本語・機能。最終確認:
- xAI公式API料金 — 音声時間による料金。最終確認:
- 公式STTガイド — 日本語設定・入力条件・REST・WebSocket。最終確認:
- Grok Voice Transcribe 2.0の公式発表 — 2.0の変更点・1.0の廃止予告。最終確認:
- 運営主体を確認できる公式プライバシーポリシー — 運営主体の名称。最終確認:
- 公式アカウントFAQ — 一般向けGrokとAPIの関係。最終確認:
- xAI Consoleの請求案内 — クレジット・請求設定。最終確認:
- STT APIリファレンス — RESTのパラメーター・出力。最終確認:
- 企業向け利用規約 — 業務利用・権利・年齢・保存の例外。最終確認:
- 公式セキュリティFAQ — 学習利用・保存・ZDR。最終確認:
- API認証の公式案内 — APIキー・Bearer認証。最終確認:
- STTの公式モデル仕様 — モデルID・既定モデル。最終確認:
- 公式レート制限 — RPS・同時接続・利用階層。最終確認:
- xAI公式ステータス — 障害時の確認先。最終確認:
- 公式リリースノート — モデルの提供・変更履歴。最終確認:
- SpaceXAIの公式X投稿 — 2.0の公開と提供元による精度の説明。投稿日:2026-09-19(日本時間)/最終確認:
- Artificial AnalysisのX投稿 — 1.0とのWER比較、確定結果までの時間、方式別の評価。投稿日:2026-09-19/最終確認:
- Artificial Analysisの音声認識ベンチマーク測定方法 — WER・評価データ・遅延の定義。最終確認:
コメント