Google 小姐講故事 – 自動製做三隻小豬故事影片

這兩天前同事 DMR CEO 楊’s 開始認真弄起了 Youtube 的影片,看看能不能增加一點零用錢。因此我也稍微看了一下 Youtube 的營利資訊,想說也來做做看了。我知道做影片不簡單,之前也買了很多配備,但看到理論收入還不錯,也有點心動。根據科技報橘的分析,收入似忽還ok嘛~ 每百萬觀看可賺到三萬台幣左右。

基本上台灣的Youtuber 約每千次觀看能有0.6 至1.4 美金的收入。 知名YouTuber 冏星人也曾拍影片公開個人每月來自平台的收入,平均百萬點擊可賺取3 萬,1 部影片有53 萬5 千多的點閱,YouTuber 的預估收益是332.85 美元(約新台幣1 萬元),1000 點閱數約1 美元收入 – 摘錄自科技報橘

當然,要完全靠這些過活也是不太可能,但賺些零用錢也還可以才對。因此,也才有了這篇。我決定研發兼賺錢,自動產生(垃圾)故事影片 XD

Google 小姐幫幫我

就讓我們先直接看結果,在 Google 小姐的幫忙下,製做出了這個影片。

自動產生影片的概念其實很簡單。就是先把故事寫好(或抄好),我先做了家喻戶曉的三隻小豬當故事,這個是完全自己寫的。然後簡單斷個句,並標注想要搭配的圖片關鍵字。在製做影片時,會先上 Google 尋找這個關鍵字的影片,抓取16張下來,隨機套用一張。接下來會把故事文字,利用 Google TTS 轉成 MP3。這樣就可以組合成「畫面、聲音、字幕」的影片三要素了。

接著就利用FFMPEG工具將所有材料整合起來,先產生一版影片,再利用自行寫的網頁介面工具,做畫面(圖片的)置換,這樣可以讓影片看起來更好一些。經過這幾個簡單的步驟,就可以快速的產生一部影片了。從大人的眼光來看,這樣產生的影片其實還蠻無趣的,但我發現小孩還蠻愛看的。家裡2個四歲的小孩,看了好幾遍,一直「再看一次、再看一下」的。

技術細節

故事腳本

要講故事當然要有故事的腳本(內容)。故事需要適當的斷句,在產生影片後,一行基本上是配一個畫面,當然二行要配同一個畫面也可以。每一行的最前面,需要指定一個圖片的關鍵字,然後用逗號格開,後面才是腳本。在自動生成影片時會先利用這個關鍵字去 Google 尋找圖片,一次會下載16張,然後隨機選一張來當該句腳本的畫面。

三隻小豬部份腳本

以上面的三隻小豬的腳本為例,左邊是想要的圖檔關鍵字,後面是腳本。圖檔關鍵字和腳本要有相關性,找出來的圖檔搭配文字形成畫面才會恰當。

腳本轉語音

腳本轉語音,當然可以用真人講是最帶感情的了,無奈不是聲優,只好交給 Google 小姐來幫忙。文字轉語音,在技術上叫做 TTS (Text-to-Speech)。現在 TTS 各家都做的不錯了,聽過最好的應該是 Amazon 的 Polly工研究百度的可以聽,但機器味太重。Google 目前也有推出付費的 TTS 服務,無奈沒有中文的,只好轉而用 Google 翻譯的 Google 小姐來發音。效果還可接受,希望 Google 可以早日推出正式的中文 TTS 服務。

轉語的方式很簡單,直接 GET 一個 URL,就會取得其語音的檔案。

Google 圖片抓取

Google 圖片的抓取,是可以自己去看網頁原始碼來處理,但有人已經寫好了就直接用吧。看它原文的說明,Google 有時還是會變化圖檔的網址處理,就先直接用別人的 script 來抓取了,看它也有持續在更新。

這們用的是這套 Googliser 程式,基本上是一個大的 Bash script。作者也是從前一個人那邊 branch 出來再改良的。一直覺得自己 Shell Programming 能力還可以,不過看到這種幾千行的程式,也真的是軟了。只能期望他的程式都不要出問題才好。

這個程式支援的參數還蠻多的,可以參考作者的網頁。我用到的幾個說明一下

googliser 範例

-p: Pattern, 要搜尋的圖片關鍵字,圖檔抓下後就會存在以此為名的目錄內(空白會被取代成底線)

-N: No thumb, 不要產生縮圖檔

-S: Size, 對於沒提供檔案大小的圖檔,就不抓取。這樣才不會抓到一些沒用的縮圖

安裝字型檔

在產生影片時,會把字幕直接嵌入畫面中,這樣在後續的處理上會比較容易。Linux上的中文字型檔我也不確定哪一套可以用,就直接裝新的吧。以 Ubuntu 16.04 為例

裝完的字型檔會在這 /usr/share/fonts/truetype/arphic/。

影片產生

現在影片的素材都有了,圖片、聲音、文字。我們會先製做每一句字幕的影片,再把所有的影片組合成一個完整的影片。下面是轉換每個圖檔成影片的命令

行 2,3,4,5: 輸入的參數分別為「圖檔的路徑」、「影片的長度」、「第幾幕」、「字幕」。影片的長度,是設定成字幕語音的長度+2秒。語音長度是用 soxi 這個工具來計算出該MP3的長度取得的。第幾幕這個參數用在很多地方,是用來決定檔名的。

行6-10: 這是在產生一個字幕檔。SRT 字幕檔的格式,第一行是第n個字幕,由於我們是製做一個畫面的影片,所以永遠是0。第二行是字幕要顯示的時間區間,這個會看影片的長度一樣。第三行是字幕內容。第四行則是一個空白分格行

行11: 將圖檔轉換成影片,指定影片的時間長度、像素種類、畫面大小

行12: 將語音、字幕加進影片內

這樣一個命令完成後,就可以產生一個畫面的影片了。

 

影片整合

最後要將所有個別畫面的影片,全部整合成一部完整的影片

行1-10: 將所有的個別檔名加到一個列表

行11: 指定要將檔案 ‘joindesc’ 內的所有檔案合併,並且重新編碼。重新編碼可以保証比較好的相容性。

這樣就算完整產生了影片,可以完全的達到自動化。

後續加強

後續可以加強的部份,一個是照片的挑選。隨機挑其實有時候蠻不配的,所以又再寫一個網頁介面來換圖片。另外語音將來如果 Google 有較人性的TTS技術,也可以付費使用,或現在就轉到 Amazon Polly。最後則是圖片關鍵字,將來如果可以加進一些 AI 方法,用以自動選擇關鍵字的話,那需要人為介入的因素就更少了。

 

換圖片工具

版權提醒

Google 圖片搜尋找到的檔案,並非免費檔案。自身需注意版權問題,合理使用。

原始碼使用流程

以下就將使用本工具需的(Ubuntu)指令列出,可以快速套用。不用知道太多細節。

 

影片製做過程展示

文字難免有寫不清楚的地方,這另外錄制了影片給大家參考。影片在這

附件

三隻小豬影片自動產生原始碼

Leave a Reply