点击下方 卡片 ,关注“ 慢慢学AIGC ”
引言
上周 GPT-4o 的发布引发了各个社群激烈的讨论,尤其是如何利用现有技术实现类似 GPT-4o 实时对话的产品。当解决了基于文本和语音交互的实时性问题后,很自然地想到,如何进一步实现实时视频交互?
上面两个视频是笔者基于 Wav2Lip 创建的。Wav2Lip 是 2020 年的工作,但放在现在仍有一定借鉴意义。
论文:https://arxiv.org/abs/2008.10010
随着音视频内容消费的指数级增长,快速的视频内容创作已成为必需。同时,使这些视频在不同语言中可访问也是一个关键挑战。例如,深度学习讲座系列、一部著名电影或向全国发表的公开演讲,如果翻译成所需的目标语言,可以让数百万新观众受益。翻译这些说话人脸视频或创建新视频的关键方面是 校正唇同步以匹配所需的目标语音 。因此,使说话人脸视频与给定的输入音频流同步已在研究界受到相当大的关注。
在这项工作中,我们研究了 将任意身份的说话人脸视频与目标语音片段同步 的问题。当前的工作在静态图像或训练期间看到的特定人物视频上生成准确唇部动作方面表现出色。然而,它们无法准确地变换动态、非约束说话人脸视频中的任意身份的唇部动作,导致视频的显著部分与新音频不同步。我们识别并解决了这一问题,通过从一个强大的唇同步鉴别器中学习。此外,我们提出了新的严格评估基准和指标来准确衡量非约束视频中的唇同步。我们在具有挑战性的基准上的广泛量化评估表明,我们的 Wav2Lip 模型生成的视频的唇同步准确度几乎与真实同步视频一样好。
动手实践
代码:https://github.com/Rudrabha/Wav2Lip
环境:miniconda,Python 版本 3.8.18,依赖包的版本如下
absl-py==2.0.0
accelerate==0.25.0
aiofiles==23.2.1
aiohttp==3.8.6
aiosignal==1.3.1
altair==5.1.2
annotated-types==0.6.0
antlr4-python3-runtime==4.8
anyio==4.0.0
astunparse==1.6.3
async-timeout==4.0.3
attrs==23.1.0
audioread==3.0.1
backports.zoneinfo==0.2.1
bitarray==2.8.2
blinker==1.6.3
cachetools==5.3.1
certifi==2023.7.22
cffi==1.16.0
charset-normalizer==2.1.1
click==8.1.7
colorama==0.4.6
contourpy==1.1.1
cpm-kernels==1.0.11
cycler==0.12.1
Cython==3.0.3
decorator==5.1.1
distro==1.9.0
dlib==19.24.2
edge-tts==6.1.8
einops==0.7.0
exceptiongroup==1.1.3
face-alignment==1.4.1
fairseq==0.12.2
faiss-cpu==1.7.4
fastapi==0.108.0
ffmpeg==1.4
ffmpeg-python==0.2.0
ffmpy==0.3.1
filelock==3.12.4
Flask==2.1.2
Flask-Cors==3.0.10
flatbuffers==23.5.26
fonttools==4.43.1
frozenlist==1.4.0
fsspec==2023.9.2
future==0.18.3
gast==0.4.0
gitdb==4.0.10
GitPython==3.1.37
google-auth==2.23.3
google-auth-oauthlib==1.0.0
google-pasta==0.2.0
gradio==3.41.2
gradio_client==0.5.0
grpcio==1.59.0
h11==0.14.0
h5py==3.10.0
httpcore==0.18.0
httpx==0.25.0
huggingface-hub==0.20.1
hydra-core==1.0.7
idna==3.4
imageio==2.31.5
importlib-metadata==6.8.0
importlib-resources==6.1.0
itsdangerous==2.1.2
Jinja2==3.1.2
joblib==1.3.2
jsonschema==4.19.1
jsonschema-specifications==2023.7.1
keras==2.13.1
kiwisolver==1.4.5
langdetect==1.0.9
latex2mathml==3.77.0
lazy_loader==0.3
libclang==16.0.6
librosa==0.9.1
llvmlite==0.41.0
loguru==0.7.2
lxml==4.9.3
Markdown==3.5
markdown-it-py==3.0.0
MarkupSafe==2.1.3
matplotlib==3.7.3
mdtex2html==1.2.0
mdurl==0.1.2
more-itertools==10.1.0
mpmath==1.3.0
multidict==6.0.4
networkx==3.1
numba==0.58.0
numpy==1.22.4
oauthlib==3.2.2
omegaconf==2.0.6
onnx==1.14.1
onnxoptimizer==0.3.13
onnxsim==0.4.33
openai==1.6.1
openai-whisper @ file:///E:/Base/whisper
opencv-python==4.8.1.78
opt-einsum==3.3.0
orjson==3.9.9
packaging==23.2
pandas==2.0.3
peft==0.7.1
Pillow==10.0.1
pkgutil_resolve_name==1.3.10
platformdirs==3.11.0
playsound==1.3.0
pooch==1.7.0
portalocker==2.8.2
praat-parselmouth==0.4.3
protobuf==4.25.1
psutil==5.9.5
pyarrow==13.0.0
pyasn1==0.5.0
pyasn1-modules==0.3.0
PyAudio==0.2.12
pycparser==2.21
pydantic==2.5.3
pydantic_core==2.14.6
pydeck==0.8.1b0
pydub==0.25.1
Pygments==2.16.1
pynvml==11.5.0
PyOpenGL==3.1.7
pyparsing==3.1.1
python-dateutil==2.8.2
python-multipart==0.0.6
pytz==2023.3.post1
PyWavelets==1.4.1
pywin32==306
pyworld==0.3.0
PyYAML==6.0.1
referencing==0.30.2
regex==2023.10.3
requests==2.28.1
requests-oauthlib==1.3.1
resampy==0.4.2
rich==13.6.0
rpds-py==0.10.4
rsa==4.9
sacrebleu==2.3.1
safetensors==0.4.0
scikit-image==0.18.1
scikit-learn==1.3.1
scikit-maad==1.3.12
scipy==1.7.3
semantic-version==2.10.0
sentencepiece==0.1.99
shellingham==1.5.4
six==1.16.0
smmap==5.0.1
sniffio==1.3.0
sounddevice==0.4.5
SoundFile==0.10.3.post1
sse-starlette==1.8.2
starlette==0.32.0.post1
streamlit==1.29.0
sympy==1.12
tabulate==0.9.0
tenacity==8.2.3
tensorboard==2.13.0
tensorboard-data-server==0.7.1
tensorboardX==2.6.2.2
tensorflow==2.13.0
tensorflow-estimator==2.13.0
tensorflow-intel==2.13.0
tensorflow-io-gcs-filesystem==0.31.0
termcolor==2.3.0
threadpoolctl==3.2.0
tifffile==2023.7.10
tiktoken==0.3.3
timm==0.9.12
tokenizers==0.13.3
toml==0.10.2
tomlkit==0.12.0
toolz==0.12.0
torch==2.1.0+cu121
torchaudio==2.1.0+cu121
torchcrepe==0.0.22
torchvision==0.16.0+cu121
tornado==6.3.3
tqdm==4.63.0
transformers==4.32.0
transformers-stream-generator==0.0.4
trimesh==4.0.0
typer==0.9.0
typing_extensions==4.8.0
tzdata==2023.3
tzlocal==5.1
urllib3==1.26.17
uvicorn==0.25.0
validators==0.22.0
watchdog==3.0.0
websockets==11.0.3
Werkzeug==3.0.0
win32-setctime==1.1.0
wrapt==1.15.0
yarl==1.9.2
zipp==3.17.0
准备一段音频,可以自己录制,或者从其他视频中提取,保存为 audio.mp3。 准备一张人像照片,保存为 face.png。 之后进入项目,运行如下命令:
python inference.py --checkpoint\_path wav2lip\_gan.pth --face face.png --audio audio.mp3 --outfile talking\_video.mp4
使用视频播放器查看生成的 talking_video.mp4 即可。
点击下方 卡片 ,关注“ 慢慢学AIGC ”