Cloud Service
OCI Speech
音声ファイルを高精度に文字起こしするマネージドな音声認識サービス。日本語を含む多言語と話者分離に対応し、AWS Transcribe に相当。
- 1.録音した音声を自動でテキスト化するマネージドな文字起こしサービス。
- 2.多言語・話者分離・タイムスタンプに対応し、結果は Object Storage に出力。
- 3.AWS の Transcribe に相当する。
解決する課題
- 会議・コールセンター・インタビューの音声を人手で書き起こす手間とコストが大きい
- 大量の音声データを検索可能なテキストにして分析・要約につなげたい
- 自前で音声認識モデルを構築・運用するのは負担が大きい
- 文字起こし結果に話者の区別やタイムスタンプを付けて議事録や字幕に使いたい
主要概念と用語
- 文字起こし(Transcription): 音声を入力としてテキストを出力する処理。OCI Speech では事前学習済みモデルを呼び出すだけで利用できる
- トランスクリプションジョブ(Transcription Job): Object Storage 上の音声ファイルをまとめて処理する非同期バッチの処理単位。完了後に結果(JSON / SRT など)を Object Storage へ出力する
- リアルタイム文字起こし(Realtime): 音声ストリームを送りながら逐次テキストを受け取る方式。会話のライブ字幕などに向く
- 話者分離(Diarization): 「誰が話したか」を区別し、発話をスピーカー単位でラベル付けする機能
- タイムスタンプ: 各単語や発話に開始・終了時刻を付与する。字幕(SRT/VTT)や頭出しに利用する
- 語彙のカスタマイズ / フィルタ: 固有名詞の認識補助や、不適切語のマスキング(プロファニティフィルタ)など、出力を調整する機能
- 対応フォーマット: WAV / MP3 などの一般的な音声形式を入力に使える(詳細は公式ドキュメントを参照)
仕様・制限・クォータ
- 非同期バッチが基本で、入力・出力ともに Object Storage を介する。結果は構造化された JSON や字幕形式で得られる
- リアルタイム方式も提供され、ストリーミングでの逐次認識に対応する
- 日本語を含む複数言語に対応する。対応言語・音声形式・1ジョブあたりのファイル数や長さの上限は変動するため、最新値は公式ドキュメントで確認する
- リージョンごとに提供状況やクォータが異なる場合があるため、利用前にリージョン対応を確認する
録音済みの大量ファイルをまとめて処理するならトランスクリプションジョブ(非同期バッチ)、ライブ字幕や通話のリアルタイム支援ならリアルタイム文字起こしを選びます。用途で方式を分けるのが基本です。
内部の仕組み
OCI Speech は Oracle が提供する事前学習済みの音声認識モデルを API 経由で呼び出すサービスです。利用者がモデルを訓練する必要はありません。
非同期バッチでは、まず音声ファイルを Object Storage に置き、入力(バケット・プレフィックス)と出力先を指定してトランスクリプションジョブを作成します。ジョブはキューに入り、サービス側でファイルを順次処理し、完了すると指定した出力バケットへ結果ファイル(単語ごとのタイムスタンプや信頼度、話者ラベルを含む JSON、字幕用の SRT など)を書き出します。話者分離やタイムスタンプは、ジョブ作成時のオプションとして指定します。
リアルタイム方式では、クライアントが音声ストリームを送信し、サービスが逐次的に認識結果を返します。ライブイベントやコンタクトセンターのオペレーター支援など、待ち時間を抑えたい場面に適します。
設計パターン / ベストプラクティス
- 音声 → 文字起こし → 後続処理のパイプライン化:文字起こし結果を OCI Language(感情分析・キーフレーズ抽出)や生成 AI による要約につなぎ、議事録や FAQ を自動生成する
- Events / Functions と連携:Object Storage への音声アップロードを Events で検知し、Functions からジョブを自動起動して無人化する
- 話者分離 + タイムスタンプ:議事録や字幕では両オプションを有効化し、誰がいつ何を話したかを再構成できるようにする
- 入力品質を整える:サンプリングレートやノイズを事前に整え、認識精度を高める
- 大量処理はバッチに寄せる:リアルタイムは待ち時間最小化向け。コスト・スループット重視のアーカイブ処理はバッチに集約する
運用・監視
- ジョブの状態(受付・処理中・成功・失敗)はコンソール / API / CLI で確認できる。失敗時は入力パスや権限、フォーマット不一致を点検する
- API 呼び出しやジョブ作成などの操作は OCI Audit に記録され、誰がいつ実行したかを追跡できる
- メトリクスやログは OCI Monitoring / Logging に連携し、ジョブ失敗率や処理量を可視化する
- 入力・出力バケットへのアクセス権限(IAM ポリシー)が不足するとジョブが失敗するため、サービスが Object Storage を読み書きできるようポリシーを整備しておく
コスト
- 課金は基本的に**処理した音声の長さ(時間)**に応じた従量制で、文字起こしした分だけ費用が発生する
- リアルタイムとバッチで料金体系が異なる場合があるため、用途に合わせて方式を選ぶ
- 具体的な単価やクォータは変動するため、最新の料金は公式の料金ページで確認する
- コスト最適化の観点では、不要な再処理を避ける、入力を適切な長さに分割する、結果をキャッシュ/保存して再利用するといった工夫が有効
セキュリティ
- IAM ポリシーでジョブ作成や Object Storage へのアクセスを最小権限に絞る。アプリにはインスタンスプリンシパル / リソースプリンシパルで権限を付与し、資格情報のハードコードを避ける
- 入力・出力の音声・テキストは Object Storage 上にあり、保存時暗号化(必要に応じて OCI Vault のカスタマー管理鍵)で保護する
- 通話内容など機微な音声を扱う場合は、出力テキストのアクセス制御・保持期間を定め、不要になったデータを削除する運用を整える
- すべての操作を OCI Audit で追跡可能にし、コンプライアンス要件に対応する
音声には氏名・電話番号・健康情報などの機微なデータが含まれがちです。出力テキストの保管先バケットの権限を最小化し、暗号化と保持期間を明確にしてください。必要に応じてプロファニティフィルタやマスキングも検討します。
Well-Architected の観点
- 運用上の優秀性: マネージドな事前学習モデルを API で呼ぶだけで、モデルの訓練・運用負担なく文字起こしを自動化できる。Events / Functions と組み合わせてパイプラインを無人化できる
- コスト最適化: 従量課金のため、処理した分だけ支払う。バッチに集約し再処理を避けることで無駄を抑えられる
- セキュリティ: IAM とプリンシパルで最小権限化し、Object Storage の暗号化と Audit で機微データを保護する
試験で問われるポイント
- 音声を文字起こしするマネージドサービス=OCI Speech(自前のモデル訓練は不要)
- 入出力は Object Storage を介し、非同期のトランスクリプションジョブとして処理。リアルタイム方式もある
- 話者分離(ダイアライゼーション)/ タイムスタンプで議事録・字幕を作れる
- 文字起こし後に OCI Language や生成 AI による要約へつなぐパイプラインが定番
- AWS で同等の機能は Amazon Transcribe
関連サービス・比較
| 観点 | OCI Speech | AWS の対応 |
|---|---|---|
| 位置づけ | 音声を文字起こしするマネージドサービス | Amazon Transcribe |
| 処理方式 | 非同期バッチ + リアルタイム | バッチ + ストリーミング |
| 入出力 | Object Storage(JSON / 字幕など) | S3(JSON など) |
| 話者分離 | 対応(ダイアライゼーション) | 対応(スピーカー識別) |
| 後続連携 | OCI Language / 生成 AI で分析・要約 | Comprehend / Bedrock 等 |
| 権限・監査 | IAM ポリシー + プリンシパル / OCI Audit | IAM / CloudTrail |
ハンズオン / CLI例
# 1. Object Storage 上の音声を入力に、トランスクリプションジョブを作成
# (話者分離やタイムスタンプは作成時のオプションで指定)
oci ai-speech transcription-job create \
--compartment-id <compartment-ocid> \
--display-name meeting-transcribe \
--input-location '{
"locationType": "OBJECT_LIST_INLINE_INPUT_LOCATION",
"objectLocations": [{
"namespaceName": "<namespace>",
"bucketName": "audio-input",
"objectNames": ["meeting-2026-06-14.wav"]
}]
}' \
--output-location '{
"namespaceName": "<namespace>",
"bucketName": "transcribe-output",
"prefix": "results/"
}'
# 2. ジョブの状態(受付 / 処理中 / 成功 / 失敗)を確認
oci ai-speech transcription-job get \
--transcription-job-id <job-ocid>
# 3. 完了後、出力バケットに書き出された結果(JSON / 字幕)を取得
oci os object get \
--namespace <namespace> \
--bucket-name transcribe-output \
--name results/meeting-2026-06-14.json \
--file ./meeting-transcript.json
OCI Service
OCI Speechを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
AI / 機械学習
比較で見る軸
クラウド: OCI / カテゴリ: AI / 機械学習 / 難易度: basic
導入後に効く点
多言語・話者分離・タイムスタンプに対応し、結果は Object Storage に出力。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- OCI
- カテゴリ
- AI / 機械学習
- 難易度
- basic
- 関連資格
- —
- 設計柱
- operational
判断チェックリスト
- 自社の用途が「AI / 機械学習 / operational」に近いか確認する。
- 強みである「録音した音声を自動でテキスト化するマネージドな文字起こしサービス。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。