注:原項目名叫Speech-Driven Animation,因此我這裏就簡稱爲SDApython
開局一張圖,後面自動編linux
相信前段時間爆火的DeepNude(AI扒衣)讓不少人驚掉了大牙,AI還能幹這個?!若是你還不知道什麼是DeepNude如今能夠百度一下了,關注公衆號「零基礎愛學習」回覆「DeepNude」也能夠獲取更多信息。c++
如今長江後浪推前浪,一浪更比一浪強啊,來自倫敦帝國學院的iBUG小組近日開源了一個AI項目SDA(Speech-Driven Animation),只須要一張圖片,唱歌說話視頻自動生成!好比:git
施瓦辛格:程序員
開始說話:github
除了自動根據語音對口型,SDA還能夠指定情緒,好比:編程
開心:ubuntu
難過:centos
若是隻是介紹下SDA就太沒意思了,因此各位喜好學習的程序員們有福了,本文實際上是一篇完整的SDA安裝和使用指南!(耗時一週整理完成!)。雖然本文已很是詳細,不過開始以前仍是有一點小小的要求:ide
一、必需要會用linux,熟悉Ubuntu最好
二、必需要會編程,熟悉python更好
Ubuntu與基礎環境
使用SDA最大的坑就是操做系統必定要用Ubuntu!我一開始用centos來着,各類報錯!換了Ubuntu各類順利!好比項目須要用python3.6,而centos默認是2.7,安裝的話通常會裝3.8,結果就是不得行!必須是python3.6!項目也沒啥文檔,全靠本身摸索的!基礎環境就兩個重點:
一、操做系統:Ubuntu(重要!)
我下載的版本是這個「ubuntu-18.04.2-live-server-amd64.iso」
二、python3.6(Ubuntu默認自帶python3.6)
git與git lfs安裝
SDA項目發佈在git,其中AI訓練生成的數據包大概有2G左右,因此須要使用git lfs(大文件專用)來下載項目源碼
一、安裝git
sudo apt install git
二、安裝git lfs
sudo apt install git-lfs
sudo git init
sudo git lfs install
依賴包安裝
SDA項目使用了大量的python擴展包,好比torch、scikit、opencv等等,這裏咱們先安裝一些依賴包
一、pip,先安裝pip,後面一些依賴包須要使用pip
sudo apt install python3-pip
二、setuptools,安裝python擴展包必備工具
sudo apt install python3-setuptools
三、一些建議先安裝的包(文末附下載方式)
這幾個包是安裝SDA時會自動下載安裝的,若是你發現下載比較慢的話(torch有600多M)能夠試試先從百度雲下載(文末附下載連接)自行安裝。
1)opencv
sudo pip3 install opencv_python-4.1.0.25-cp36-cp36m-manylinux1_x86_64.whl
2)torch
sudo pip3 install torch-1.1.0-cp36-cp36m-manylinux1_x86_64.whl
3)scikit
sudo pip3 install scikit_image-0.15.0-cp36-cp36m-manylinux1_x86_64.whl
4)scipy
sudo pip3 install scipy-1.3.0-cp36-cp36m-manylinux1_x86_64.whl
四、ffmpeg,SDA涉及視頻操做,因此ffmpeg是必須安裝的,這裏咱們直接從git獲取安裝包
sudo git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
到下載的ffmpeg包中依次執行./configure、make、make install
安裝SDA(speech-driven-animation)
SDA安裝包能夠經過git lfs直接獲取(2G左右),也能夠從雲盤下載(文末附下載連接)。這裏演示的是從git lfs下載。
一、獲取SDA安裝包
sudo git lfs clone https://github.com/DinoMan/speech-driven-animation.git
二、git會下載一個目錄speech-driven-animation,進入該目錄執行以下指令
sudo python3 setup.py build
sudo python3 setup.py install
(會自動下載一些依賴包)
SDA就算是安裝好了,看似簡簡單單數個命令,倒是辛苦一週試出來的啊!
依賴包安裝2
前面安裝的幾個依賴包只是SDA安裝須要的,想要使用SDA來幹活兒還得繼續安裝!
一、libXrender
sudo apt install libxrender1
二、libSM
sudo apt install libsm6
三、torchaudio
sudo pip3 install git+https://github.com/pytorch/audio@d92de5b //下載並安裝老版本的torchaudio
(這裏又是個坑,SDA須要torch和torchaudio,可是最新版torchaudio與torch有兼容性問題,因此須要使用老版本的torchaudio!)
四、sox
sudo apt install sox libsox-dev libsox-fmt-all
(這裏也是個坑,只有Ubuntu能正常安裝sox,centos不得行!)
五、torchvision
sudo pip3 install torchvision
編寫測試代碼
找到前面下載的speech-driven-animation目錄,進入之,能夠看到一個「example」目錄,進入之,能看到audio.wav、image.bmp兩個文件,是項目組提供測試的圖片和音頻文件,咱們就在這裏寫一段測試代碼:
vi test.py //而後輸入下列代碼:
import sda
va = sda.VideoAnimator()
vid, aud = va("image.bmp", "audio.wav")
va.save_video(vid, aud, "/home/XXX(這裏根據實際狀況填寫)/speech-driven-animation/example/test.mp4") //這裏要寫完整的路徑,不要問爲何,反正不這麼寫就報錯
保存後使用下列指令測試:
sudo python3 test.py
運行成功了嗎?是否是又卡主了...應該會提示:
Downloading the face detection CNN. Please wait...
Downloading the Face Alignment Network(FAN). Please wait...
由於face_alignment這個擴展包的訓練數據還沒下載呢...你須要將:
s3fd_convert.pth、2DFAN-4.pth.tar這兩個文件放到「/home/XXX(這裏根據實際狀況填寫)/.face_alignment/data/」目錄下(可搜索.face_alignment找到此目錄),文末附下載方式。
好啦,如今再次執行測試:
sudo python3 test.py
沒有報錯的話,能夠看看目錄下是否是生成了一個test.mp4,趕忙下載到電腦上看看吧!
各類包下載方式
由於不少包從git、pypi下載很慢,因此我這裏提供了幾個比較大的包、關鍵文件的百度雲下載。關注公衆號「零基礎愛學習」,回覆「SDA」獲取下面的資料:
一、speech-driven-animation.tar.gz SDA源碼包,已包含了訓練文件(2G)
二、scipy-1.3.0-cp36-cp36m-manylinux1_x86_64.whl SDA依賴包
三、scikit_image-0.15.0-cp36-cp36m-manylinux1_x86_64.whl SDA依賴包
四、torch-1.1.0-cp36-cp36m-manylinux1_x86_64.whl SDA依賴包
五、opencv_python-4.1.0.25-cp36-cp36m-manylinux1_x86_64.whl SDA依賴包
六、s3fd_convert.pth、2DFAN-4.pth.tar face_alignment訓練文件
七、audio-d92de5b97fc6204db4b1e3ed20c03ac06f5d53f0.zip 老版本的torchaudio
常見報錯
針對一些常見的報錯現象,最後總結一下給你們
一、ModuleNotFoundError: No module named 'setuptools'
須要安裝setuptools sudo apt install python3-setuptools
二、torchaudio/torch_sox.cpp:3:10: fatal error: sox.h: No such file or directory
沒有安裝sox sudo apt install sox libsox-dev libsox-fmt-all(須要是Ubuntu操做系統)
三、RuntimeError: Failed to parse the argument list of a type annotation: name 'Optional' is not defined
你多是最新版torchaudio的受害者(新版torchaudio與torch間有bug),因此你須要的是老版本:sudo pip3 install git+https://github.com/pytorch/audio@d92de5b
四、libSM.so.6: cannot open shared object file: No such file or directory
缺包 sudo apt install libsm6
五、ImportError: libXrender.so.1: cannot open shared object file: No such file or directory
缺包 sudo apt install libxrender1
六、_pickle.UnpicklingError: invalid load key, 'v'.
若是你遇到這報錯,最大的可能性是你直接在git上下載源碼了吧,不得行的,項目使用了git lfs,因此須要使用lfs下載源碼(將項目中的大文件一塊兒下載了)
先裝git和git lfs:sudo apt install git、sudo apt install git-lfs、git init、sudo git lfs install
再獲取項目源碼:git lfs clone https://github.com/DinoMan/speech-driven-animation.git
七、Error: Failed to call git rev-parse --git-dir --show-toplevel: "fatal: not a git repository (or any of the parent directories): .git\n"
git lfs install以前要先執行git init
八、speech-driven-animation測試時沒有視頻文件輸出
va.save_video(vid, aud, "/home/XXX(這裏根據實際狀況填寫)/speech-driven-animation/example/test.mp4") 這裏須要填寫完整的路徑
九、ModuleNotFoundError: No module named 'torchvision'
缺乏torchvision包 sudo pip3 install torchvision
十、ModuleNotFoundError: No module named 'torchaudio'
缺乏torchaudio包 sudo pip3 install git+https://github.com/pytorch/audio@d92de5b
十一、ImportError: libsox.so.2: cannot open shared object file: No such file or directory
沒有安裝sox,並且你可能正在使用非Ubuntu系統 sudo apt install sox libsox-dev libsox-fmt-all(須要是Ubuntu操做系統)
十二、ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
gcc版本低,並且你可能正在使用非Ubuntu系統。使用Ubuntu就沒有這個問題。固然你也能夠下載最新的gcc來安裝...
1三、ImportError: /usr/local/lib/python3.6/site-packages/_torch_sox.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at19UndefinedTensorImpl10_singletonE
仍是sox的問題,並且你可能正在使用非Ubuntu系統,換用Ubuntu就沒這個問題了