Professional Documents
Culture Documents
ab
ab
uploaded = None
def upload_video():
global uploaded
global video_path
uploaded = files.upload()
for filename in uploaded.keys():
print(f'Uploaded {filename}')
video_path = filename
return filename
def on_button_clicked(b):
with output:
global video_path
video_path = upload_video()
button.on_click(on_button_clicked)
display(button, output)
import subprocess
from tqdm.notebook import tqdm
import time
model = whisper.load_model("base")
# Transcreva o áudio original e salve o resultado em um arquivo de texto
result_original = model.transcribe("output_audio.wav", verbose=True,
fp16=False, language='pt')
with open("legendas_original.txt", "w") as f:
f.write(result_original["text"])
whisper_text = result["text"]
whisper_language = result['language']
target_language_code = language_mapping[target_language]
# Gerando o áudio
tts.tts_to_file(
translated_text,
speaker_wav='output_audio.wav',
file_path="output_synth.wav",
language=target_language_code
)
If you are on Google Colab free version (T4), Delete TTS and Whisper at this step
import torch
try:
del tts
except NameError:
print("Voice model already deleted")
try:
del model
except NameError:
print("Whisper model already deleted")
torch.cuda.empty_cache()
# Dependencies
%cd /content/
import locale
locale.getpreferredencoding = lambda: "UTF-8"
%cd /content/video-retalking
!mkdir ./checkpoints
!wget
https://github.com/vinthony/video-retalking/releases/download/v0.0.1/30_net_
gen.pth -O ./checkpoints/30_net_gen.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
BFM.zip -O ./checkpoints/BFM.zip
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
DNet.pt -O ./checkpoints/DNet.pt
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
ENet.pth -O ./checkpoints/ENet.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
expression.mat -O ./checkpoints/expression.mat
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
face3d_pretrain_epoch_20.pth -O ./checkpoints/face3d_pretrain_epoch_20.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
GFPGANv1.3.pth -O ./checkpoints/GFPGANv1.3.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
GPEN-BFR-512.pth -O ./checkpoints/GPEN-BFR-512.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
LNet.pth -O ./checkpoints/LNet.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
ParseNet-latest.pth -O ./checkpoints/ParseNet-latest.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
RetinaFace-R50.pth -O ./checkpoints/RetinaFace-R50.pth
!wget https://github.com/vinthony/video-retalking/releases/download/v0.0.1/
shape_predictor_68_face_landmarks.dat -O
./checkpoints/shape_predictor_68_face_landmarks.dat
!unzip -d ./checkpoints/BFM ./checkpoints/BFM.zip
#Generate video
%cd /content/video-retalking
video_path_fix = f"'../{video_path}'"
!python inference.py \
--face $video_path_fix \
--audio "/content/output_synth.wav" \
--outfile '/content/output_high_qual.mp4'
Download videos
from google.colab import files
from IPython.core.display import display, HTML
import ipywidgets as widgets
import base64
import os
def download_video(b):
files.download(b.video_path)
download_buttons = []
# Loop through each video path to check for existence and display
for video_path in video_paths:
if os.path.exists(video_path):
# Encode video base64
with open(video_path, "rb") as video_file:
video_base64 = base64.b64encode(video_file.read()).decode()
# HTML widget for video
video_html = HTML(data=f"""
<video width=400 controls>
<source src="data:video/mp4;base64,{video_base64}" type="video/mp4" />
</video>
""")
# Display widgets
display(video_html)
display(download_button)