新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

Cloudflare Streamで動画から音声を抽出

2025-11-06

5分で読了
この投稿はEnglishおよび한국어でも表示されます。

このコンテンツは自動機械翻訳サービスによる翻訳版であり、皆さまの便宜のために提供しています。原本の英語版と異なる誤り、省略、解釈の微妙な違いが含まれる場合があります。ご不明な点がある場合は、英語版原本をご確認ください。

Cloudflare Streamは動画が大好きです。しかし、すべてのワークフローに全体像が必要ではないことはわかっています。ポッドキャストの人気は、スタンドアロンの音声がいかに説得力のあるものであるかを浮き彫りにしています。開発者にとって、音声にアクセスするためだけに動画を処理するのは、遅く、コストがかかり、複雑なものです。

動画動画が高額になる理由動画ファイルは、時間をかけてつなぎ合わせられた高解像度のimagesの密度の高いスタックです。そのため、1つのファイルとしてだけでなく、1秒あたりのフレーム数、解像度、コーデックなどの高次元データのコンテナとなっています。動画を分析することは、時間解像度のフレームレートを移動することを意味します。

音声を抽出する理由

それに比べて、音声ファイルははるかにシンプルです。オーディオファイルが1つのチャンネルのみで構成されている場合は、単一のフォームとして定義されます。このフォームの技術的特性は、サンプルレート(1秒あたりに採用される音声サンプルの数)とビットの深さ(各サンプルの精度)によって定義されます。

計算量の多いAI推論パイプラインの台頭により、お客様の多くは音声の分析のみを必要とするダウンストリームのワークフローを実行したいと考えています。たとえば:

  • AIと機械学習を活用:翻訳や文字起こしに加え、音声からテキストへの音声モデルに音声を入力して、音声認識や分析、AIを活用した要約を行うことができます。

  • コンテンツのモデレーションの改善:動画内の音声を分析し、コンテンツが安全でコンプライアンスに準拠していることを確認します。

このような場合に動画データを使用することは、費用がかかるだけでなく、不要なものです。

そこで導入するのが、音声抽出機能です。この機能により、一回のAPI呼び出し、またはダッシュボードのクリックで、あらゆる動画から軽量のM4A音声トラックを抽出できるようになりました。

動画から音声を抽出するための柔軟な方法を2つご紹介します。

1. メディアTransformationsによるオンザフライ音声抽出

メディアTransformationsは、どこにでも保存できるソーシャルメディアクリップなどの短い形式の動画を処理して変換するのに最適です。メディアを送信元から直接取得し、当社のエッジで最適化し、効率的に配信することで機能します。

当社は、このワークフローを拡張して音声も含めました。変換URLにmode=audioを追加するだけで、どこにでも保存された動画ファイルから音声をオンザフライで抽出できるようになりました。

ドメインでメディアTransformationsを有効にすると、あらゆるソース動画から音声を抽出できます。時間継続時間を指定して、特定のセクションをクリップすることもできます。

例:

https://example.com/cdn-cgi/media/mode=audio,time=5s,duration=10s/<SOURCE-VIDEO>

上記のリクエストにより、ソース動画から5秒マークから始まる10秒のM4A音声クリップが作成されます。セットアップやその他のオプションの詳細については、メディアTransformationsのドキュメントをご覧ください。

2. オーディオのダウンロード

Stream内で管理するあらゆるコンテンツのオーディオトラックを直接ダウンロードできるようになりました。オフライン視聴用のダウンロード可能なMP4生成に加え、永続的なM4Aオーディオファイルの作成と保存もできるようになりました。

Workers AIのデモ

ここでは、Cloudflareの自社製品の1つであるWorkers AIでMedia Transformationsを使用する方法を示すサンプルコードをご覧いただけます。次のコードでは、まず動画の音声を英語に翻訳し、次にスペイン語に翻訳するという2つのステップを実行します。

export default {
 async fetch(request, env, ctx) {


   // 1. Use Media Transformations to fetch only the audio track
   const res = await fetch( "https://blog.cloudflare.com/cdn-cgi/media/mode=audio/https://pub-d9fcbc1abcd244c1821f38b99017347f.r2.dev/announcing-audio-mode.mp4" );
   const blob = await res.arrayBuffer();


   // 2. Transcribe the audio to text using Whisper
   const transcript_response = await env.AI.run(
     "@cf/openai/whisper-large-v3-turbo",
     {
       audio: base64Encode(blob), // A base64 encoded string is required by @cf/openai/whisper-large-v3-turbo
     }
   );


   // Check if transcription was successful and text exists
   if (!transcript_response.text) {
       return Response.json({ error: "Failed to transcribe audio." }, { status: 500 });
   }


   // 3. Translate the transcribed text using the M2M100 model
   const translation_response = await env.AI.run(
     '@cf/meta/m2m100-1.2b',
     {
       text: transcript_response.text,
       source_lang: 'en', // The source language (English)
       target_lang: 'es'  // The target language (Spanish)
     }
   );


   // 4. Return both the original transcription and the translation
    return Response.json({
        transcription: transcript_response.text,
        translation: translation_response.translated_text
    });


 }
};


export function base64Encode(buf) {
 let string = '';
 (new Uint8Array(buf)).forEach(
   (byte) => { string += String.fromCharCode(byte) }
 )
 return btoa(string)
}

実行後、workerはクリーンなJSONレスポンスを返します。以下に示すのは、workerが返したレスポンスを文字起こし、翻訳されたものです。

トランスクリプト:

{
  "transcription": "I'm excited to announce that Media Transformations from Cloudflare has added audio-only mode. Now you can quickly extract and deliver just the audio from your short form video. And from there, you can transcribe it or summarize it on Worker's AI or run moderation or inference tasks easily.",
  "translation": "Estoy encantado de anunciar que Media Transformations de Cloudflare ha añadido el modo solo de audio. Ahora puede extraer y entregar rápidamente sólo el audio de su vídeo de forma corta. Y desde allí, puede transcribirlo o resumirlo en la IA de Worker o ejecutar tareas de moderación o inferencia fácilmente."
}

技術的な詳細

Streamチームの夏インターンとして、私は長い間要望されてきたこの機能のリリースに取り組みました。まず、Streamのメディアパイプラインの複雑なアーキテクチャを理解することでした。

Streamで動画が処理される場合、次の2つの経路のいずれかをとります。1つ目は、Streamに直接アップロードされた動画を処理するビデオオンデマンド(VOD)パイプラインです。アダプティブビットレートストリーミング用のエンコードされた動画セグメントのセットを生成し保存し、HLS/DASHでストリーミング配信することができます。もう1つの経路は、Stream LiveとMedia Transformationsサービスを稼働する、オンザフライエンコーディング(またはOTFE)パイプラインです。OTFEは、ファイルを事前処理して保存する代わりに、お客様自身のWebサイトからメディアを取得し、エッジでTransformationsを行います。

私のプロジェクトは、これらの両方のパイプラインを拡張して音声抽出をサポートすることでした。

OTFEパイプライン

OTFEパイプラインは、リアルタイムで操作できるように設計されています。既存のフローは視覚的なタスク向けに設計されています。メディア Transformations を有効にしているお客様が、自分のWebサイトにリクエストを行うと、エントリーポイントとして機能するエッジサーバーにルーティングされます。その後、リクエストは検証され、ユーザーのリクエストごとに、OTFEは動画を取得し、サイズ変更バージョンまたは静止フレームのサムネイルを生成します。

音声のみの抽出をサポートするために、既存のワークフローに新しいモードを追加しました。これには、次のようなものが含まれます:

  1. 検証ロジックの拡張:特に音声の場合、重要な検証ステップは、抽出を試みる前にソース動画に音声トラックが含まれていることを確認することでした。これは、リクエストされたURLが正しい形式であることを確認する既存の検証ステップに追加されるものです。

  2. 新しいTransformationsハンドラーの構築:これは私のプロジェクトの中核でした。私は、高品質のM4Aファイルを配信するために、ビジュアルトラックを破棄する新しいハンドラーをOTFEプラットフォーム内で構築しました。

VODパイプライン

このプロジェクトは、OTFEに関する私の仕事と同様に、現在のMP4ダウンロードのワークフローを音声のみのM4Aダウンロードに拡張するものでした。これにより、一連の興味深い技術的決定が提示されました。

動画ダウンロードの作成の一般的なフローは、認証と検証を処理するメインAPI層へのPOSTリクエストから始まり、対応するデータベースレコードを作成します。次に、ジョブを非同期キューに入れ、Workerが処理タスクを実行します。VODのオーディオダウンロードを可能にするために、新しいタイプ固有のAPIエンドポイント(POST /downloads/{type} )を導入しましたが、従来のPOST /downloadsルートはデフォルトや動画のダウンロードタイプのダウンロードを作成するためのエイリアスとして保存します。これにより、完全な後方互換性が確保されました。

ダウンロードの作成というコア作業は、非同期キューによって行われます。含まれるサービス:

  • 新しいオーディオダウンロードタイプを検出するためのロジックをコンシューマーに追加する

  • APIレイヤーで定義したffmpegテンプレートを使用して、オーディオストリームを高品質なM4Aコンテナに適切にエンコードします

APIルートからメディア処理コマンドまで、このパイプラインの各コンポーネントを拡張することで、お客様のために音声中心のワークフローを可能にする、要望の多かった新しい機能を提供することができました。

ダッシュボードのスクリーンショット

この機能は、Streamダッシュボードでも利用可能になりました。どの動画に移動するだけで、動画または音声をダウンロードできるオプションが表示されます。

ダウンロードの準備が完了すると、ファイルのURLと、無効にするオプションが表示されます。

最後に

このプロジェクトは、長年のお客様のニーズに応え、動画から音声を操作するためのよりシンプルな方法を提供するものです。問題の理解からソリューションの出荷まで、そして特にチームから受けたメンターシップやガイダンスには本当に感謝しています。開発者がこの新機能を使用して、Cloudflare Streamでより効率的で刺激的なアプリケーションを構築する様子が見られることを楽しみにしています。

Streamに動画をアップロードするか、APIを使用して、音声抽出機能をお試しください。このような技術的課題に挑戦してみたいと思われる方は、当社のインターンシップと初期人材プログラムをご覧になり、ご自身の道のりを始めてください。

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
Internship Experience製品ニュースCloudflare Stream

Xでフォロー

Cloudflare|@cloudflare

関連ブログ投稿

2025年11月04日 14:00

マルチステップアプリケーション向けの耐久性のある実行エンジン、Workflowsのより良いテスト体験を構築する

Cloudflare Workflowsのエンドツーエンドテストは困難でした。cloudflare:testにWorkflowsのサポートが導入されます。これにより、最も複雑なアプリケーションに対して、完全なイントロスペクション、モック化、分離された信頼性の高いテストが可能になります。...