Python音声認識チュートリアル:音声ファイルから文字起こしまで
- 公開日
- 最終更新日
Pythonアプリに音声認識機能を導入する作業は、かつては煩雑でした。Pythonデベロッパーは、オーディオの前処理、特徴量抽出、モデル統合など、文字起こしプロセスそのものを実装する必要がありました。さらにエンジニアリングチームは、低レベルのオーディオ処理、十分でない文字起こし品質、発話とライブ字幕の間の遅延といった課題にも対処しなければなりませんでした。
オーディオモデルと音声認識SDKの進化により、状況は変わりました。
このPython音声認識チュートリアルでは、ElevenLabsのスピーチtoテキストオーディオモデルをPythonプロジェクトに統合し、商用対応の文字起こしアプリを作成する方法を学びます。
概要
- 商用のスピーチtoテキストモデルは、基本的な音声認識モデルにはない、話者ダイアライゼーション、単語単位のタイムスタンプ、キータームプロンプティングなどの機能を提供します。
- ElevenAPIなら、Scribe v2とScribe v2 Realtimeを使用して、Pythonコードに音声認識機能を導入できます。
- デベロッパーは、AIコーディングプラットフォームにElevenLabsスキルをインストールすることで、公式APIドキュメントに基づく正確なPythonコードを生成できます。
- 商用開発向けの有料プランに加入する前に、ElevenLabs APIを無料で試せます。

このPython音声認識チュートリアルで扱う内容
このチュートリアルでは、エンタープライズのユースケース向け音声認識Pythonアプリの構築に役立つ前提条件、API統合、高度な文字起こし機能を解説します。
近年、特に大規模言語モデルとディープラーニングのニューラルネットワークにより、Pythonデベロッパーによる文字起こしSDKの利用方法は大きく変化し、音声認識は成熟してきました。基本的な文字起こしアプリの作成方法を紹介するチュートリアルは多い一方で、商用対応プロダクトに必要な機能まで扱うものはほとんどありません。
このギャップを埋めるために、本チュートリアルを作成しました。
たとえば、多くのエンタープライズ向け文字起こしソリューションには、以下の機能が必要です。
- 話者ダイアライゼーション:文字起こし内の個々の話者を識別し、分離する機能。
- タイムスタンプ:各単語が発話された相対的な時・分・秒を正確に付与する機能。
- 多言語対応: 1つの録音またはライブストリーム内の異なる言語による発話を、低い単語誤り率でキャプチャします。
- キータームプロンプティング:ブランド名、プロダクト名、技術用語などの特別な単語をマッピングし、文字起こしのスペルミスを防ぐ機能。
- 低レイテンシー文字起こし:リアルタイム文字起こしアプリを支える、ミリ秒単位のスピーチtoテキスト応答。
注記:このチュートリアルは、趣味や個人プロジェクト向けのシンプルなスクリプト作成にとどまりません。ビジネスごとに異なるため、スピーチtoテキストAPI統合の上に構築するアプリケーションロジックは含まれません。

Python音声認識統合の前提条件
このチュートリアルは、コード内での音声モデルとのやり取りを簡素化するElevenLabsの本番環境対応API、ElevenAPIを中心に構成しています。ElevenAPIでは、バッチ文字起こしとライブ文字起こしを行う主要な音声モデル、Scribe v2とScribe v2 Realtimeを利用できます。
ElevenLabsのスピーチtoテキストモデルに直接アクセスする代わりに、API呼び出しを通じてオーディオ録音、ライブストリーム、引数を渡します。その後、オーディオモデルがオーディオデータをテキストに変換します。完了すると、コード内またはWebhook経由で文字起こし結果を受け取れます。
始めるには、以下の準備手順に従ってください。
- ElevenLabsに登録します。
- APIキーを作成します。
- 会話を録音し、公開アクセス可能なストレージにアップロードします。
準備ができたら、次のセクションに進んでください。
環境を設定する
ElevenLabsモデルと統合する前に、ElevenLabs APIキーを安全に管理できるようPython環境を設定します。すべてのAPIキーと同様に、.envファイル内で環境変数(管理されたシークレット)として保存することをおすすめします。
API呼び出し時には、環境変数を渡します。これにより、パブリックネットワーク経由でAPIリクエストを行う際に、APIキーを誤って公開することを防げます。
次に、Bashコマンドを実行して、ElevenLabs SDKであるelevenlabsをPython環境にインストールします。このSDKにより、さまざまな音声モデルにアクセスできます。このケースでは、Scribe v2とScribe v2 Realtimeから選択します。
また、Pythonコードから.envファイルに保存された環境変数へアクセスできるようにするpython-dotenvもインストールする必要があります。
最初の文字起こしスクリプトを書く
Python環境を設定したら、ElevenLabs Scribe v2を使ってオーディオファイルを文字起こしできます。
ElevenLabs Scribe v2は、大規模にオーディオファイルを書き起こせる業界最高水準の音声認識モデルです。オーディオ録音に大きなバックグラウンドノイズが含まれていても、音素を高精度で検出します。オーディオを文字起こしするには、ElevenLabs API経由で録音をモデルへ送信し、完了した文字起こし結果を取得します。
以下は、オーディオファイルをタイムスタンプ付き・話者ダイアライゼーション済みの文字起こし結果に変換するPythonコードスニペットです。
このコードは、必要な機能を提供するライブラリを読み込みます。また、宣言した環境変数をプログラムの環境に読み込みます。
次に、環境変数に保存されているAPIキーを使ってElevenLabsクライアントを作成します。その後、オーディオファイルをダウンロードし、バイナリデータに変換します。
生のオーディオデータを取得したら、複数のパラメータとともにElevenLabs APIへ送信します。
- model_idは、使用するスピーチtoテキストモデルを指定します。オーディオファイルを渡す場合は、Scribe v2が最適です。
- tag_audio_events を使用すると、笑い声、足音、その他のバックグラウンドノイズなど、発話以外のセグメントを強調表示できます。
- language_code は、録音ファイル内の会話の言語を表します。Noneに設定すると、モデルが言語を自動検出します。
- diarizeは 話声の特徴に基づいて異なる話者を識別・分離するかどうかを指定します。
最後にコードを実行すると、ターミナルに文字起こしされたオーディオが表示されます。

Pythonでストリーミング音声認識を行う
上記の例では、事前録音されたファイルに適したバッチ文字起こしを扱いました。一方、ElevenLabsはストリーミング音声認識を構築できるAPIも提供しています。バッチ処理とは異なり、このモードでは会話の進行に合わせてリアルタイムで音声認識を実行し、文字起こし結果を生成します。
これを行うには、WebSocket APIを使用してPythonコードをScribe v2 Realtimeモデルに接続します。
Scribe v2 Realtimeは、文字起こしレイテンシーが150ms未満のストリーミングファーストなアーキテクチャを提供します。Scribe v2 Realtimeでは、会議用エージェント、アクセシビリティツール、音声起動の自動化などのアプリケーションを構築できます。モデルはオーディオストリームを処理しながら、部分的な文字起こし結果を返します。最終的な文字起こし結果は、コードが自動または手動でオーディオセグメントをコミットした場合にのみ返されます。
オーディオソースとアプリケーションの種類に応じて、サーバー側またはクライアント側で音声認識をElevenLabs APIと統合します。
- クライアント側ストリーミングでは、マイクから直接、または手動で分割したオーディオストリームを通じてストリーミングできます。
- サーバー側ストリーミングでは、URLまたはオーディオソースからのオーディオデータを音声モデルにルーティングします。
クライアント側とサーバー側のどちらのストリーミングでも、非同期ワークフローを利用できます。APIを継続的にポーリングする代わりに、WebSocketを使用して結果を処理します。コードでは、部分的および確定済みの文字起こし結果を受け取るハンドラーを作成する必要があります。

さらに活用する:ダイアライゼーション、タイムスタンプ、カスタム語彙
自動音声認識に加えて、ElevenLabsのスピーチtoテキストモデルはダイアライゼーション、タイムスタンプ、カスタム語彙に対応しています。
- ダイアライゼーション:話者ダイアライゼーションに対応しているのは、バッチ文字起こしのみです。diarize引数を設定すると、ダイアライゼーションを有効にできます。ただし、バッチ文字起こし内のモードであるマルチチャンネル文字起こしは、ダイアライゼーションに対応していません。
- タイムスタンプ:バッチ文字起こしでは、単語単位または文字単位のタイムスタンプを選択できます。これを行うには、convertメソッドの使用時にtimestamps_granularityパラメータを設定します。
- カスタム語彙: リアルタイム文字起こしとバッチ文字起こしはいずれもキータームプロンプティングに対応しています。この機能により、リストに含めた特定のキータームを書き起こすようモデルを誘導できます。Scribe v2 Realtimeは最大50個、Scribe v2は最大1,000個のキータームをサポートします。
AIコーディングアシスタントでElevenLabsスキルを使用する
AIコーディングアシスタントは開発を迅速化します。Claude Code、Cursor、CodexなどのAIコーディングツールを使用している場合、コーディング環境にElevenLabsスキルを追加できます。
必要なのは、プラットフォームのターミナルで次のコマンドを実行することだけです。
AIコーディングエージェントは、ElevenLabsのGitHubリポジトリからスピーチtoテキストスキルをダウンロードし、ローカルのスキルディレクトリにインストールします。これにより、API統合全体をゼロから記述する代わりに、ElevenLabsの公式ドキュメントに基づく音声認識用Pythonコードを自動生成できます。
インストール後は、実行内容を会話形式で説明するだけで、音声認識用のPythonコードを生成できます。その説明に基づき、コーディングアシスタントが正しいモデルとパラメータを使用したスピーチtoテキストスキルのコードを自動生成します。
たとえば、Codexで「話者ダイアライゼーションと単語単位のタイムスタンプを使用して文字起こしを行うPython音声認識スニペットを作成」と入力すると、以下のような類似したスニペットが得られます。

ElevenAPIで音声認識を始める
ElevenAPIを使用すると、高度なスピーチtoテキストモデルにアクセスし、Pythonで音声認識アプリを構築できます。
ElevenAPIを使用すれば、プロダクトのイノベーションを遅らせる統合コードをゼロから書く必要がありません。代わりに、キータームプロンプティング、ダイアライゼーション、タイムスタンプなど、商用品質の要件を満たすスピーチtoテキストサービスを提供するSDKを使用できます。
ElevenLabs APIキーを今すぐ取得し、公式ドキュメントでAPIの仕組みをご確認ください。
よくある質問
Jack LimebearはGrowthチームに所属し、ブログやインサイトページのコンテンツライター兼ストラテジストとして活躍しています。ElevenLabsに入社する前は、急成長中のSaaSスタートアップからFortune 500企業まで、さまざまな組織で10年以上にわたりコンテンツ戦略をリードしてきました。ケンブリッジ大学で英文学の修士号を取得しています。



