技術專欄

集結國內外精選文章,掌握最新雲端技術新知與應用 

iKala Cloud / 部落格 / 產業解決方案 / 如何使用 AWS Elemental MediaConvert 和 Amazon Polly 將文章轉換成影片

如何使用 AWS Elemental MediaConvert 和 Amazon Polly 將文章轉換成影片

數位媒體發行業者為了滿足客戶需求,正在重新改造他們的使用者經驗。尤其是在以智慧型裝置進行多重任務、隨時隨地、或交流互動時,讀者們正在尋找消化理解內容的替代方式。

為了適應讀者愈加複雜的期望,諸如圖解資訊、照片故事、播客、有聲書、視覺敘事和社群媒體限時動態,這些僅僅是新興內容類型的其中一些例子。

將文章轉換成視覺敘事、並提供能在社群媒體平台上分享的預告片
將文章轉換成視覺敘事、並提供能在社群媒體平台上分享的預告片

在 AWS 機器學習部落格上的這篇文章中,我們展示了如何使用 Trinity Audio 的 WordPress 外掛程式自動將語音轉換成部落格文章發表。以此為基礎,在本篇指南中,我們將向您展示如何使用亞馬遜雲端運算服務(AWS)將文章轉換成視覺敘事、並提供能在社群媒體平台上分享的預告片。

我們在此實例示範中所要使用的範例文章
實例示範中所要使用的範例文章
這是一張將文章處理後轉換為社群媒體限時動態的動畫GIF

將文章處理後轉換為社群媒體限時動態的動畫GIF

這篇文章是兩篇系列的第一篇。 在第一篇中,我們將了解如何獲取、處理及提供可使用的內容。在第二篇中,我們將了解如何使用 AWS Elemental MediaTailor(一項通道組件及個性化廣告插入服務)延伸解決方案,進而透過內容獲利。

所使用的服務

在深入探討解決方案之前,讓我們先熟悉我們所使用的服務。

AWS CDK

 AWS Cloud Development Kit (AWS CDK) 是一個開放原始碼軟體開發架構,您可以使用熟悉的程式語言,來定義您的雲端應用軟體資源。在此系列中,我們是使用 AWS CDK,以TypeScript來為我們的解決方案定義基礎架構。

Amazon Polly

Amazon Polly 是一項將文字轉換為生動逼真語音的服務,讓您輕鬆創建會說話的應用軟體,並建構能啟動語音的全新類別產品。Amazon Polly 的文字轉換語音服務,使用先進的深度學習技術,來合成聽起來生動自然的人類語音。透過涵蓋廣泛語言的數十種逼真嗓音,您可以建構在許多不同國家使用的語音控制應用軟體。我們使用 Amazon Polly 讓您的文字在視覺敘事中栩栩如生。

AWS Elemental MediaConvert

AWS Elemental MediaConvert 是具有直播等級功能的檔案型影片轉碼服務。使用它可以輕鬆地為直播和多螢幕大規模創建隨選視訊內容。在本次示範中,我們使用 MediaConvert 組合 Amazon Polly 所生成的視覺內容和聲音。我們也使用 MediaConvert 藉由生成 HTTP 即時串流(播放清單瀏覽器和應用軟體所能串流的)來準備串流的內容。

Amazon Comprehend

Amazon Comprehend 是一項自然語言處理服務,它運用機器學習來探知發現文字中具有價值的見解及連結。我們使用 Amazon Comprehend 從文章內容的文字中獲取關鍵字及標籤,並交提供給我們的廣告決策伺服器,以提供內容相關廣告。

其他元件

HLS

首先,使用者的播放器下載播放清單,然後當使用者持續觀賞媒體時繼續下載片段。HLS支援封裝於 H.264視訊編解碼和AAC、MP3、AC-3或EC-3音訊格式,以下是M3U8檔案範例:

HTTP 即時串流 (HLS) 是一種 HTTP 自適應 (ABR) 串流通訊協定。欲使用 HLS 提供支援和串流,您只需要一個傳統的網頁伺服器:將媒體檔案拆分為可下載的片段,安排在播放清單中(M3U8檔案)。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11,
mediafile_00001.ts
#EXTINF:10,
mediafile_00002.ts
#EXTINF:11,
mediafile_00003.ts
#EXTINF:10,
mediafile_00004.ts
#EXTINF:11,
mediafile_00005.ts

描述 HLS 檔案的 M3U8 文件一隅

WordPress內容

針對該程式碼範例,我們用 WordPress 來創建內容,WordPress 是一種全球客戶所廣泛採用的內容管理系統 (CMS)。我們從加速行動版網頁 (AMP) 提供的網頁中擷取內容,因為它提供了更容易預測的 HTML 結構。對於生產系統(production systems),我們建議您使用 CMS API 這個更容易預測的方式收集所需內容。

FFmpeg

重要法律公告:該解決方案使用 FFmpeg 分析和操作上傳媒體檔案的低階視覺及音訊特徵。FFmpeg 是一套免費的開放原始碼軟體套組,專用於處理影像、音訊和其他多媒體檔案及串流。FFmpeg是根據GNU較寬鬆公共授權條款(LGPL)發布。更多關於 FFmpeg 的資訊,請至:https://www.ffmpeg.org/。您若使用該解決方案,則意味著您將使用 FFmpeg。如果您不想要使用 FFmpeg,則請勿使用該解決方案。

先決條件

欲跟隨這篇文章操作,您需要一個 AWS 帳戶。建議(但非必須)具備 AWS CDK、Python 和 JavaScript 方面的經驗。

解決方案

解決方案圖像編排解說
解決方案圖像編排解說

在這篇文章中,我們提出了一個事件驅動的編排工作流程,它透過以下方式從文章創建影像的過程:

  • Amazon Polly 唸出文章的文字
  • 使用文章中的圖像製作投影片

該流程由Amazon Comprehend執行:

  • 首先判斷文章的語言,以便 Amazon Polly 選擇正確的聲音來閱讀文章
  • 透過前置作業生成 VMAP 清單,透過情境感知生成廣告的關鍵字和單字。為了保持單純,我們僅使用 pre-roll 和 post-roll 廣告插入,但您可以在上一篇文章中了解如何插播廣告。我們將在本系列的第二篇文章中深入探討如何透過此模式獲利,敬請期待!

工作流的來源為 WordPress AMP 的文章網址。 工作流輸出以下內容:

  • 您可以在社交媒體上分享文章的30 秒預告片:這是一個存儲在  Amazon Simple Storage Service (Amazon S3) 上的 MP4,此存儲服務可提供行業領先的可擴展性、資料可用性、安全性和性能。
  • 一個長度不等的完整影片旁白(取決於文章中有多少文字),採用HLS 格式(M3U8 文件和相關片段)存儲在 Amazon S3 中
  • 一組用於生成影像的文字、媒體和圖片文件,儲存於Amazon S3 中 – 更多詳細信息請持續關注我們
  • 使用文章生成的一組metadata,存儲在 Amazon DynamoDB 的資料表中,這是一個全託管、無服務器的 key-value NoSQL資料庫。 生成的metadata如下:

{
    "AssetId": "2af6fa09-078a-410e-a84b-969c0182119f.json",
    "Engine": "neural",
    "PreviewVideoFile": "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/output/preview/2af6fa09-078a-410e-a84b-969c0182119f.mp4",
    "ArticlePath": "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/text/2af6fa09-078a-410e-a84b-969c0182119f.json",
    "PostProducedImagesS3Paths": [
        "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/image/output/2af6fa09-078a-410e-a84b-969c0182119f.json/ferrari_01.jpg.tga",
        "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/image/output/2af6fa09-078a-410e-a84b-969c0182119f.json/ferrari_04.jpg.tga",
        "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/image/output/2af6fa09-078a-410e-a84b-969c0182119f.json/ferrari_02.jpg.tga",
        "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/image/output/2af6fa09-078a-410e-a84b-969c0182119f.json/ferrari_05.jpg.tga"
    ],
    "Bucket": "pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905",
    "Url": "https://giusedroid.wordpress.com/2021/04/29/a-brief-history-of-ferrari/amp/",
    "LanguageCode": "en-US",
    "FullVideoStream": "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/output/full/hls/2af6fa09-078a-410e-a84b-969c0182119f/template.m3u8",
    "FullNarration": "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/audio/full/2af6fa09-078a-410e-a84b-969c0182119f.json/.5678d4db-4116-4201-b5d7-529b6f2e42e0.mp3",
    "VoiceId": "Joanna",
    "FullNarrationDurationInSeconds": 212.297167,
    "AudioPreview": "s3://pollypreviewsimplestack-pollyassetstore920ee247-1pvn3ec82d905/audio/preview/2af6fa09-078a-410e-a84b-969c0182119f.json/.5678d4db-4116-4201-b5d7-529b6f2e42e0.wav",
    "ImagesURLs": [
        "https://giusedroid.files.wordpress.com/2021/04/ferrari_01.jpg",
        "https://giusedroid.files.wordpress.com/2021/04/ferrari_04.jpg",
        "https://giusedroid.files.wordpress.com/2021/04/ferrari_02.jpg",
        "https://giusedroid.files.wordpress.com/2021/04/ferrari_05.jpg"
    ]
}

JSON

這是透過文章創建資料集範例,被作為一個項目存儲在解決方案部署的 Amazon DynamoDB 表中。

編排模式

為了讓這篇文章看起來不複雜,我們選擇了一個遵循編排模式的無服務器、事件驅動架構。 我們使用 Amazon S3 事件通知功能(可讓您在 S3 bucket 中發生某些事件時接收通知)來驅動工作流程。在我們的我們的asset store中,由特定路徑上傳觸發的PUT事件調用編排中的每個步驟,該事件由我們的asset store 特定路徑下的 PUT 事件調用。 組成工作流的所有函數(function)都是非同步的,但  Amazon API Gateway在工作流開始時調用的函數除外。 Amazon API Gateway 是一項完全託管的服務,可讓開發人員輕鬆創建、發布、維護、監控和保護任何規模的 API。 以下是說明事件順序的圖表:

以下是工作流程的說明:

  • 從 AWS Lambda 函數開始,只需提供一個文章的網址,將文章轉化後生成一Json檔案,再上傳到Amazon S3。
  • 此事件使用另一個 AWS Lambda 函數,該函數非同步使用 Amazon Polly 做語音合成。
  • 合成任務完成後,Amazon Polly 將 MP3 上傳到 Amazon S3,透過 AWS Lambda 函數的內容製作 30 秒預告片。
  • 下一步為下載並處理文章中的圖片。
  • 下一步啟動兩個 MediaConvert 的同步作業。
  • 最後,當影像資源透過 MediaConvert 寫入 Amazon S3 時,最後一個 AWS Lambda 函數將會更新路徑中的metadata資料。

編排中的每個步驟都將會更新 Amazon DynamoDB 表。 此表用來做metadata的儲存管理,而 Amazon S3 的 bucket 用於存儲媒體文件和較複雜的metadata。

尾聲

在這篇文章中,我們分享了如何使用 AWS 服務,透過全自動編輯工作流程將文章轉化為影片。您可以在此處下載查看文章轉換後的範例效果。

我們邀請您下載此資源並根據您的需求調整解決方案。請留言告訴我們您的想法,並可隨時透過此提問平台提出要求或疑問。更多 AI 與機器學習如何簡化企業工作流程,歡迎聯繫 iKala Cloud 瞭解更多!

分享本文:
FacebookLineTwitter
回到頂端