13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Cloud AI Speech で動画の音声をテキストに変換してみてみた

13
Last updated at Posted at 2026-03-03

Oracle Cloud Infrastructure (OCI) には、音声をテキストへ変換できる OCI Speech というAIサービスがあります。

OCIコンソール、CLI、SDK、REST API などから利用でき、音声認識結果を JSON や SRT 形式で取得できるため、字幕生成や議事録化、音声データの活用にも使いやすいサービスです。また、モデルとして、特に英語以外の言語でも高い認識率を持つ OpenAI Whisper も使用できます。

機能 Oracle ASR Model Whisper Model
リアルタイム転写 サポート サポート
ファイル・サイズ 最大2 GB 最大2 GB
ワード・レベルのタイムスタンプ サポート サポート
ファイル形式 AAC、AC3、AMR、AU、FLAC、M4A、MKV、MP3、MP4、OGA、OGG、OPUS、WAV、WEBM AAC、AC3、AMR、AU、FLAC、M4A、MKV、MP3、MP4、OGA、OGG、OPUS、WAV、WEBM
多言語サポート 英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、ヒンディー語 Oracle ASRモデルとその他の50言語: OpenAI WhisperのFAQ
ダイアライゼーション サポート サポート

■ OCI Speech機能

OCI Speech は、単に音声をテキストへ変換するだけでなく、字幕化や検索、分析まで見据えた実用的な機能が用意されています。ここでは、主な機能を簡単に整理しておきます。

  • 正確なトランスクリプション出力:
    音声認識の結果は、指定した Object Storage Bucket に直接出力されます。
    出力形式は JSON と SRT(SubRip Subtitle) に対応しており、アプリケーション連携、字幕作成、コンテンツ検索、分析などに活用できます。

  • タイムスタンプ付きJSON:
    JSON形式の出力には、各単語(トークン)ごとのタイムスタンプを含めることができます。
    これにより、「どの時間帯でその単語が話されたか」をたどれるため、動画や音声の特定箇所へすばやくジャンプできます。

  • 多言語対応:
    OCI Speech は複数言語に対応しており、日本語を含むさまざまな音声の文字起こしが可能です。
    特に Whisper モデル では、多言語データをもとに学習されており、50以上の言語のファイルベース音声の文字起こしをサポートしています。

  • 非同期APIによるバッチ処理:
    トランスクリプションは、非同期のジョブとして実行できます。
    複数ファイルをまとめて処理しやすく、未処理のジョブを取り消せるため、時間やコストの無駄も抑えやすくなっています。

  • テキストの正規化:
    出力テキストでは、数値、住所、通貨などを読みやすい形に整える テキスト正規化 が利用できます。
    そのまま読んでも理解しやすい、扱いやすい文字起こし結果を得やすいのが利点です。

  • プロファニティ・フィルタリング:
    不快語や不適切な単語に対して、削除・マスク・タグ付け といったフィルタリングを適用できます。
    公開向けの字幕やテキスト出力を作る場合にも扱いやすい機能です。

  • 信頼度スコア:
    生成されるJSONには、単語単位および文字起こし全体の 信頼度スコア を含めることができます。
    これにより、認識精度が低そうな箇所を見つけやすく、あとから重点的に確認しやすくなります。

  • SRT形式のクローズドキャプション出力:
    字幕ファイルとしてよく使われる SRT形式 を出力できます。
    そのまま動画に字幕として追加しやすく、YouTubeなどの動画活用とも相性が良いです。

  • 自動句読点:
    音声認識結果に対して、自動で句読点を付与できます。
    長い文字起こし結果でも読みやすくなり、テキストとしての自然さがかなり上がります。

  • 電話音声向けの対応:
    8kHz / 16kHz の音声に対応しており、入力ファイルに応じて適切に処理できます。
    このため、通話録音のような電話品質の音声データにも利用しやすくなっています。

  • スピーカー・ダイアライゼーション:
    複数人が話している音声では、誰が話しているか を推定して話者ごとに分離できます。
    会話ログの整理や、議事録化、コールセンター分析、医療音声の記録などで、発話を話者単位で追いやすくなります。

セキュリティとプライバシーに特化した設計:
Oracle Cloud Infrastructure Speech は、顧客のプライバシーを保護します。組込みの自動音声認識モデルは、コンテンツを文字化しますが、トレーニングやデバッグ、その他の目的でデータを格納することはありません。

■ OCI Speech アーキテクチャ例

  • image.png
    このアーキテクチャは、OCI Speech を中心に、Object Storage・Oracle Events・Oracle Functions を組み合わせることで、音声ファイルのアップロードをきっかけに、自動で文字起こしを実行する構成を作れます。
    生成された JSON のトランスクリプトは Object Storage に保存され、その後 Functions で MySQL に取り込み、Notifications でアプリ側へ通知することで、Webアプリケーション上のチケットや画面に反映できます。
    こうすることで、音声の保存から文字起こし、検索・表示までを一連のフローとして自動化できます。

ということで、今回は OCI Speech で OpenAI の Whisper モデルを使用して、日本語の動画ファイルをテキストに変換してみてみます。
実際の画面を見ながら、Object Storage へのファイル配置、トランスクリプション・ジョブ作成、変換結果の確認まで、順番に見ていきます。
OCI のAIサービスは色々ありますが、実際に触ってみると「これ、業務でも普通に使えるな」と感じるものがあります。そのひとつが、音声をテキストへ変換できる OCI Speech です。
今回はこの OCI Speech で、OpenAI Whisper を使い、日本語の動画ファイルをどこまできれいに文字起こしできるのか試してみました。
YouTube用に作成した動画ファイルを Object Storage に置き、OCIコンソールからトランスクリプション・ジョブを実行して、JSON / SRT の出力結果まで確認しています。

■ 動画の用意とアップロード

私のYoutube動画のファイルを、あらかじめ複数 Object Storage Bucket へアップロードしておきます。

01_ObjectStorage-Upload05.png

■ OCI Speech トランスクリプション・ジョブ作成

アップロードした MP4 動画ファイルを、トランスクリプション・ジョブでテキスト化します。

1) OCIコンソール画面
ナビゲーション・メニューを開き、[アナリティクスとAI]->[AIサービス]->[音声] をクリック
02_ 音声Job作成01.png

2) 概要画面
[ジョブの作成] をクリック
02_ 音声Job作成02.png

3) 基本情報画面
次の項目を設定し、[次へ] をクリック
今回は日本語の動画なので、OpenAI Whisper のモデル Whisper Large V3 Turbo を使用します。

・名前: プロジェクトの一意の名前(255文字以内)を入力します。
  名前には、1つ以上の英数字、ダッシュ、またはアンダースコアを含める必要があります。
  名前を指定しない場合は自動生成されます。

・説明: ジョブの説明(400文字以内)を入力します。

・コンパートメント: ジョブを作成するコンパートメントを選択します。

・入力: 変換対象のメディア・ファイルが格納されている入力バケットを選択します。

・出力: 入力バケット、または別のバケットに出力ファイルを格納する場所を選択します。

・出力接頭辞(オプション):
  バケット内のファイルを整理するための接頭辞を入力します。
  例: call_ctr
  スラッシュ(/)を使うことで、バケット内に出力フォルダを作成できます。
  例: MyResults/

・モデル・タイプ: 作成するジョブのモデル・タイプを選択します。
  サポートされるモデルは、Oracle、Whisper Medium、Whisper Large V2(SR対応時)、
  Whisper Large V3 Turbo(新規)です。

・言語: メディアファイルの言語を選択します。
  Whisper モデルでは言語識別が可能で、言語コードに [自動] を選択できます。

・SRT(オプション):
  SRT形式とJSON形式の両方で出力したい場合は、[SRTトランスクリプション形式の取得] を選択します。

・句読点の有効化:
  句読点を付けたくない場合は、[句読点の有効化] をオフにします。

・ダイアライゼーションの有効化(オプション):
  入力ファイル内の話者を識別したい場合に有効化します。
  話者数は自動検出、または手動指定できます(2〜16人)。

・フィルタ:
  出力ファイルの生成方法を変更する場合に使用します。
  - フィルタ・タイプを選択します(デフォルトは Profanity)。
  - フィルタ・モードを選択します。
    マスク: 最初の文字以外をアスタリスクでマスク
    削除: 検出語を1つのアスタリスクに置換
    タグ: 削除せず TYPE: "Profanity" としてタグ付け

・タグ:
  コスト・トラッキングなど、リソース整理に使用するタグを設定できます。

02_ 音声Job作成03.png

4) ファイルの選択画面
ジョブに含めるファイルを選択し、[送信] をクリックしてジョブを開始します。
変換対象のメディア・ファイルにチェックを入れるか、[名前] の横にあるチェック・ボックスで一括選択できます。

最大ファイル・サイズは、2GBです。
ファイル期間は最大4時間です。

02_ 音声Job作成04.png

5) ジョブ実行中〜
ジョブの完了時間は、選択したファイルのサイズや数に応じて、数秒〜数時間かかる場合があります。
実行中はステータスが 進行中 となり、完了すると 成功 または 失敗 に変わります。ジョブを選択すると、詳細ページへ移動できます。

各ジョブは、最大100個のタスクを持つことができます。
ジョブは90日間保持されます。

02_ 音声Job作成05.png

6) ジョブ完了
実行したジョブ名をクリックすると、変換対象ファイルごとのタスク一覧を確認できます。
02_ 音声Job作成06.png

[ジョブ情報] タブでは、次の詳細を確認できます。

一般情報:
・ジョブの説明(設定した場合)
・ジョブOCIDの短縮表示([表示]/[非表示] で切り替え可能)
・ジョブの作成、受諾、開始、終了日時
・ジョブ実行時間

02_ 音声Job作成07.png

7) テキスト変換確認
タスクのファイル名をクリックすると、変換されたトランスクリプション内容を確認できます。
[JSONのダウンロード] および [SRTのダウンロード] から、生成されたファイルを取得できます。
02_ 音声Job作成09.png

■ Object Storage ファイル出力確認

指定した Object Storage Bucket に、ジョブで自動生成されたディレクトリ配下として JSON / SRT ファイルが作成されます。

1) ジョブ作成ディレクトリ確認
03_ObjectStorage-ファイル作成確認01.png

2) 作成ファイル確認
03_ObjectStorage-ファイル作成確認02.png

今回は、OCI Speech と OpenAI Whisper を使って、日本語動画の文字起こしを実際に試してみてみました。
単にテキスト化できるだけでなく、JSON / SRT として扱えるので、字幕化、検索、要約、RAG向け前処理など、アイディアがいろいろわいてきます。
次回は、出力したトランスクリプションを要約したり、検索できる形にしたり、別のAIサービスと組み合わせた検証もしてみてみたいと思います。

■ 参考

■ 音声解説

■ おまけ

今回の内容を、ずんだもん達に紹介してもらう漫画も作ってみました。 技術記事の補足として、少しでも楽しく読んでもらえたらうれしいです。
おまけ.png

※ 本漫画は筆者による非公式の二次創作です。
※ 使用キャラクター:ずんだもん / 四国めたん / 春日部つむぎ
※ キャラクターの権利は各権利元に帰属します。
※ クレジット
 - ずんだもん / 四国めたん:東北ずん子・ずんだもんプロジェクト関連ガイドラインに基づいて利用
 - 春日部つむぎ:公式利用規約に基づいて利用

13
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?