コンテンツへ移動

Python音声認識チュートリアル:音声ファイルから文字起こしまで

執筆者
Jack Limebear
公開日
最終更新日

聴くこの記事を聴く

Pythonアプリに音声認識機能を導入するのは、かつては煩雑でした。Pythonデベロッパーは、音声の前処理、特徴抽出、モデル統合といった文字起こしプロセス自体を実装する必要がありました。さらにエンジニアリングチームは、低レベルなオーディオ処理、十分でない文字起こし精度、発話とライブキャプションの間の遅延にも対応しなければなりませんでした。 

オーディオモデルと音声認識SDKの進化が、こうした状況を変えています。

このPython音声認識チュートリアルでは、ElevenLabsのスピーチtoテキストオーディオモデルをPythonプロジェクトに統合し、商用対応の文字起こしアプリを作る方法を学びます。 

概要

  • 商用のスピーチtoテキストモデルには、基本的な音声認識モデルにはない、話者ダイアライゼーション、単語単位のタイムスタンプ、キータームプロンプティングなどの機能があります。 
  • ElevenAPIでは、Scribe v2とScribe v2 Realtimeを使ってPythonコードに音声認識機能を追加できます。 
  • デベロッパーはAIコーディングプラットフォームにElevenLabsスキルをインストールし、公式APIドキュメントに基づく正確なPythonコードを生成できます。 
  • 商用開発向けの有料プランに加入する前に、ElevenLabs APIを無料で試せます。 
Five steps for Python speech recognition tutorial: setup, transcription, streaming, and enterprise features.

このPython音声認識チュートリアルで扱う内容

このチュートリアルでは、エンタープライズのユースケース向け音声認識Pythonアプリを構築するための前提条件、APIインテグレーション、高度な文字起こし機能を解説します。  

近年、特に大規模言語モデルとディープラーニングのニューラルネットワークの進化により、Pythonデベロッパーによる文字起こしSDKの利用方法は大きく変化しました。基本的な文字起こしアプリの構築方法を紹介するチュートリアルは多い一方で、商用対応プロダクトに必要な機能を扱うものはほとんどありません。

このギャップを埋めるために、このチュートリアルを作成しました。 

たとえば、多くのエンタープライズ向け文字起こしソリューションには、次の機能が必要です。

  • 話者ダイアライゼーション:文字起こし結果内の個々の話者を識別し、分離する機能。
  • タイムスタンプ:各単語が発話された相対的な時・分・秒を正確に付与します。 
  • 多言語対応: 1つの録音またはライブストリーム内で異なる言語の発話を、低い単語誤り率で取り込みます。 
  • キータームプロンプティング:ブランド名、プロダクト名、技術用語などの特殊な単語をマッピングし、文字起こしの誤記を防ぎます。 
  • 低レイテンシー文字起こし:リアルタイム文字起こしアプリを支える、ミリ秒単位のスピーチtoテキスト応答。 

注記:このチュートリアルは、趣味や個人プロジェクト向けの簡単なスクリプト作成にとどまりません。ビジネスごとに異なるため、スピーチtoテキストAPIのインテグレーション上に構築するアプリケーションロジックは含みません。 

Enterprise transcription needs: diarization, word timestamps, languages, keyterms, and low latency.

Python音声認識インテグレーションの前提条件 

このチュートリアルは、コード内での音声モデルとのやり取りを簡素化するElevenLabsの本番環境対応API、ElevenAPIを中心に構成しています。ElevenAPIでは、バッチおよびライブ文字起こし向けの主要な音声モデル、Scribe v2とScribe v2 Realtimeを利用できます。 

ElevenLabsのスピーチtoテキストモデルに直接アクセスする代わりに、APIコールを通じて音声録音、ライブストリーム、引数を渡します。すると音声モデルが音声データをテキストに変換します。完了後、コード内またはWebhook経由で文字起こし結果を受け取れます。 

始めるには、次の準備を行ってください。 

  1. ElevenLabsに登録します。
  2. APIキーを作成します。
  3. 会話を録音し、公開アクセス可能なストレージにアップロードします。 

準備ができたら、次のセクションに進みましょう。 

環境をセットアップする 

ElevenLabsモデルを統合する前に、ElevenLabs APIキーを安全に扱うためのPython環境をセットアップします。ほかのAPIキーと同様に、.envファイル内で環境変数(管理されたシークレット)として保存することをおすすめします。 

ELEVENLABS_API_KEY=<your_api_key_here>

APIコールを行う際に、この環境変数を渡します。これにより、パブリックネットワーク経由でAPIリクエストを送信する際に、APIキーを誤って公開することを防げます。 

次に、Bashコマンドを実行して、ElevenLabs SDKであるelevenlabsをPython環境にインストールします。このSDKを使うと、さまざまな音声モデルにアクセスできます。ここでは、Scribe v2とScribe v2 Realtimeから選択します。

pip install elevenlabs
pip install python-dotenv

また、Pythonコードから.envファイルに保存した環境変数へアクセスできるように、python-dotenvもインストールする必要があります。 

最初の文字起こしスクリプトを書く 


Python環境をセットアップしたら、ElevenLabs Scribe v2を使って音声ファイルを文字起こしできます。 

ElevenLabs Scribe v2は、音声ファイルを大規模に文字起こしできる業界最高水準の音声認識モデルです。録音に大きなバックグラウンドノイズが含まれていても、音素を高精度で検出します。音声を文字起こしするには、ElevenLabs API経由で録音をモデルに送信し、完成した文字起こし結果を取得します。 

以下は、音声ファイルをタイムスタンプ付き・話者ダイアライゼーション済みの文字起こし結果に変換するPythonコードスニペットです。 

# example.py
import os
from dotenv import load_dotenv
from io import BytesIO
import requests
from elevenlabs.client import ElevenLabs

load_dotenv()

elevenlabs = ElevenLabs(
  api_key=os.getenv("ELEVENLABS_API_KEY"),
)

audio_url = (
    "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3"
)
response = requests.get(audio_url)
audio_data = BytesIO(response.content)

transcription = elevenlabs.speech_to_text.convert(
    file=audio_data,
    model_id="scribe_v2", # Model to use
    tag_audio_events=True, # Tag audio events like laughter, applause, etc.
    language_code="eng", # Language of the audio file. If set to None, the model will detect the language automatically.
    diarize=True, # Whether to annotate who is speaking
)

print(transcription)

このコードは、必要な機能を提供するライブラリを読み込みます。また、宣言した環境変数をプログラムの環境に読み込みます。 

次に、環境変数に保存されたAPIキーを使用してElevenLabsクライアントを作成します。その後、音声ファイルをダウンロードし、バイナリデータに変換します。 

生の音声データを取得したら、複数のパラメータとともにElevenLabs APIへ送信します。

  • model_id は、使用するスピーチtoテキストモデルを指定します。音声ファイルを渡す場合は、Scribe v2が最適です。
  • tag_audio_events では、笑い声、足音、その他のバックグラウンドノイズなど、非発話区間を強調表示できます。
  • language_code は録音ファイル内の会話の言語を指定します。None に設定すると、モデルが言語を自動検出します。 
  • diarizeは 音声の特徴に基づいて異なる話者をプロファイリングし、分離するかどうかを指定します。

最後にコードを実行すると、文字起こしされた音声がターミナルに表示されます。 

Speech-to-text API parameters: model, audio events, language, and speaker diarization.

Pythonでストリーミング音声認識を行う

上記の例は、事前録音されたファイルに適したバッチ文字起こしを扱っています。一方、ElevenLabsはストリーミング音声認識を構築できるAPIも提供しています。バッチ処理とは異なり、このモードでは会話中にリアルタイムで音声認識を実行し、文字起こしを生成します。 

これを行うには、WebSocket APIを使用してPythonコードをScribe v2 Realtimeモデルに接続します。 

Scribe v2 Realtimeは、文字起こしのレイテンシーが150ms未満のストリーミングファーストなアーキテクチャを提供します。Scribe v2 Realtimeは、会議用エージェント、アクセシビリティツール、音声起動の自動化といったアプリケーションの構築に使用できます。モデルは音声ストリームを処理しながら、部分的な文字起こし結果を返します。コードが自動または手動で音声セグメントを確定した場合にのみ、最終的な文字起こし結果を返します。 

音声ソースとアプリケーションの種類に応じて、サーバー側またはクライアント側でElevenLabs APIと音声認識を統合します。 

クライアント側・サーバー側のどちらのストリーミングでも、非同期ワークフローを使用できます。APIを継続的にポーリングする代わりに、WebSocketで結果を処理します。コードでは、部分的な文字起こし結果と確定済みの文字起こし結果を受け取るハンドラーを作成する必要があります。 

Scribe v2 transcribes prerecorded files; Realtime streams live audio with under-150 ms latency.

さらに活用する:ダイアライゼーション、タイムスタンプ、カスタム語彙 

自動音声認識に加え、ElevenLabsのスピーチtoテキストモデルは、ダイアライゼーション、タイムスタンプ、カスタム語彙に対応しています。 

  • ダイアライゼーション:話者ダイアライゼーションに対応しているのはバッチ文字起こしのみです。diarize引数を設定すると、ダイアライゼーションを有効にできます。ただし、バッチ文字起こし内のモードであるマルチチャネル文字起こしは、ダイアライゼーションに対応していません。
  • タイムスタンプ:バッチ文字起こしでは、単語単位または文字単位のタイムスタンプを選択できます。これを行うには、convertメソッド使用時にtimestamps_granularityパラメータを設定します。  
  • カスタム語彙: リアルタイム文字起こしとバッチ文字起こしの両方がキータームプロンプティングに対応しています。この機能では、リストに含めた特定のキータームを文字起こししやすいようモデルを誘導します。Scribe v2 Realtimeは最大50個、Scribe v2は1,000個のキータームに対応しています。 

AIコーディングアシスタントでElevenLabsスキルを使う 

AIコーディングアシスタントは開発を迅速化します。Claude Code、Cursor、CodexなどのAIコーディングツールを使用している場合、コーディング環境にElevenLabsスキルを追加できます。 

必要なのは、プラットフォームのターミナルで次のコマンドを実行することだけです。

 npx skills add elevenlabs/skills --skill speech-to-text 

AIコーディングエージェントは、ElevenLabsのGitHubリポジトリからスピーチtoテキストスキルをダウンロードし、ローカルのスキルディレクトリにインストールします。これにより、APIインテグレーション全体をゼロから書く代わりに、ElevenLabsの公式ドキュメントに基づいて音声認識用のPythonコードを自動生成できます。 

インストール後は、実現したい内容を会話形式で説明するだけで、音声認識用のPythonコードを生成できます。その説明に基づき、コーディングアシスタントが適切なモデルとパラメータを使って、スピーチtoテキストスキルによるコードを自動生成します。

たとえば、Codexで「話者ダイアライゼーションと単語単位のタイムスタンプを含む文字起こしを行うPython音声認識スニペットを作成して」と入力すると、以下のようなスニペットが得られます。 

Chat showing Python code for ElevenLabs speech transcription with speaker diarization and word timestamps.

音声認識向けElevenAPIを使い始める

ElevenAPIを使うと、高度なスピーチtoテキストモデルにアクセスし、Pythonで音声認識アプリを構築できます。

ElevenAPIを使用すれば、プロダクトのイノベーションを遅らせる、ゼロからのインテグレーションコード作成を避けられます。代わりに、キータームプロンプティング、ダイアライゼーション、タイムスタンプなど、商用品質の要件を満たすスピーチtoテキストサービスを提供するSDKを使用できます。 

ElevenLabs APIキーを今すぐ取得し、公式ドキュメントでAPIの仕組みをご確認ください。 

よくある質問

関連記事

最高品質のAIオーディオで創造する