🎙️

Gladia の文字起こしを API で利用する

2025/02/25に公開

Gladia とは

Gladia は Whisper を改善した Whisper-Zero による文字起こしサービスを提供しています。ノイズ除去や話者分離等の機能が追加され、元の Whisper より使いやすいものになっています。
Gladia の管理画面では、コードを書かなくてもすぐに文字起こしを利用できる Playground が提供されているので、非エンジニアにとっても簡単に使えるサービスです。

Playground で提供されている機能

  • YouTube等のビデオのリンク、ファイルのアップロード、マイクからのリアルタイム入力による音声データの送信
  • 話者分離のON/OFF、翻訳のON/OFFおよび言語指定
  • 文字起こし結果の閲覧 ( 語レベルでのタイムスタンプで、該当箇所の音声にジャンプできる )

    YouTube等のビデオのリンク、ファイルのアップロード、マイクからのリアルタイム入力による音声データの送信

    話者分離のON/OFF、翻訳のON/OFFおよび言語指定

    文字起こし結果の閲覧 ( 語レベルでのタイムスタンプで、該当箇所の音声にジャンプできる )

    翻訳ONの場合は、翻訳されたテキストでも同様に結果確認ができる

Gladia を API で利用する

Gladia の管理画面で基本的な文字起こしは十分行えるのですが、今回は API で呼び出すことで追加で利用できる機能を確認します。

API による文字起こしの流れ

Gladia の API は V1 から V2 にアップデートされています。V2 API では以下の流れで文字起こしを行います。

  1. 音声ファイルのアップロード ( 既にURLアクセス可能な形でファイルアップロードが行えている場合は不要 )
  2. 1.のURLを指定して、文字起こしをリクエスト
  3. 2.で取得したIDを用いて、文字起こし結果を取得

https://docs.gladia.io/chapters/pre-recorded-stt/getting-started

音声ファイルのアップロード

curl --request POST \
  --url https://api.gladia.io/v2/upload \
  --header 'Content-Type: multipart/form-data' \
  --header 'x-gladia-key: [Gladia の API Key]' \
  --form audio=@/path/to/your/audio/file.wav

試したところ、アップロードするファイルはmp4等の動画ファイルにも対応していました。レスポンスとして、audio_urlを取得できます(https://api.gladia.io/file/[id])。

文字起こしをリクエスト

curl --request POST \
    --url https://api.gladia.io/v2/pre-recorded \
    --header 'Content-Type: application/json' \
    --header 'x-gladia-key: [Gladia の API Key]' \
    --data '{
    "audio_url": "[ファイルアップロードの結果取得した audio_url]",
    "detect_language": true,
    "enable_code_switching": false
    }
  '

文字起こしをリクエストすると、リクエストのidを取得できます。このidを使って文字起こし結果を取得します。
リクエスト時には、様々なパラメーターが設定できます。詳細は、API Reference 参照 (Initiate a transcription)

文字起こし結果を取得

  curl --request GET \
  --url https://api.gladia.io/v2/pre-recorded/[文字起こしリクエストで取得したid] \
  --header 'x-gladia-key: [Gladia の API Key]'

文字起こしは非同期処理なので、実際のアプリケーションでは、ポーリング、Webhook、または Callback を利用して、結果を取得することになります(Get the transcription result)。

Gladia API で利用できる Playground にはない機能

字幕ファイルを取得

https://docs.gladia.io/chapters/pre-recorded-stt/features#export-srt-or-vtt-caption-files
SRT あるいは VTT 形式の出力を得ることができます。以前のSpeech to text APIでは、文字起こしの後処理として行なっていたフォーマットの変換が、API のレスポンスとして直接受け取れるようになったので便利です。この機能は翻訳機能と合わせて利用できるので、翻訳字幕の作成に活用できます。ffmepgで、srtファイルの字幕を動画に挿入できます。

ffmpeg -i video.mp4 -vf subtitles=transcription.srt video-with-transcription.mp4

話者分離のチューニング ( 2025年2月24日現在、Beta )

https://docs.gladia.io/chapters/pre-recorded-stt/speaker-diarization
話者分離の強化を行うオプション。処理時間は長くなるが、より話者識別の精度を向上させる。試したところ、このオプションを有効にした場合、現状 number_of_speakersは2より大きな値にできません。

今後の正式リリースに期待したい機能

  • context_prompt

文字起こしに、コンテキストを与えることができる。直近、discordでも質問が上がっているが、現状コンテキストを設定しても、大きな結果の違いは出せていないとのこと。今後、コンテキストで動画の内容や背景を伝えることで、文字起こし精度を向上できるようになることに期待。

  • speaker_reidentification

以前の文字起こしの際に特定したスピーカーを、新しい文字起こしでも利用できる ( 同一のIDとして特定できる )。新しいスピーカーが登場すると、新たにユニークなIDを付与して、以降の文字起こしの際に、同一人物として特定できる。
この機能はまだドキュメントにも公開されていませんが、今後のリリースと精度に期待したいです。社内の会議の文字起こしで繰り返し利用する場合、付与されたIDにプロフィールを紐づけておけば、以降話者表示がとてもスムーズになりそうです。

Sparkle AIブログ

Discussion