Spaces:
Runtime error
Runtime error
File size: 2,940 Bytes
61ba537 e60a003 61ba537 e60a003 0223aa3 e60a003 61ba537 0223aa3 61ba537 11a4759 61ba537 0223aa3 61ba537 e60a003 61ba537 11a4759 61ba537 11a4759 61ba537 e60a003 61ba537 e60a003 11a4759 e60a003 61ba537 11a4759 61ba537 11a4759 61ba537 11a4759 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import os
import shutil
import sys
from pathlib import Path
import requests
from gradio_client import Client
from main import call_wav2lip, call_gfpgan, merge
root_dir = '/content/jobs'
os.makedirs(root_dir, exist_ok=True)
def download_file(url, local_filename):
response = requests.get(url, stream=True)
with open(local_filename, 'wb') as file:
for chunk in response.iter_content(chunk_size=8192):
if chunk:
file.write(chunk)
def main(job_id, text, video_url):
job_path = os.path.join(root_dir, job_id)
os.makedirs(job_path, exist_ok=True)
if video_url.startswith('http'):
video_file = os.path.basename(video_url)
video_path = os.path.join(job_path, video_file)
download_file(video_url, video_path)
else:
video_path = video_url
audio_path = os.path.join(job_path, 'audio.mp3')
gen_voice(text, audio_path)
assert os.path.isfile(video_path), f'Video {video_path} not exist.'
assert os.path.isfile(audio_path), f'Audio {audio_path} not exist.'
wav2lip_mp4 = os.path.join(job_path, 'wav2lip.mp4')
print('=' * 40)
call_wav2lip(video_path, audio_path, wav2lip_mp4)
print('=' * 40)
call_gfpgan(wav2lip_mp4)
output_filename = 'output.mp4'
output_mp4 = os.path.join(job_path, output_filename)
merge(job_path, audio_path, output_mp4)
return output_mp4
def gen_voice(text, audio_path):
ogg_path = Path(audio_path).with_suffix('.ogg')
client = Client("https://digitalxingtong-xingtong-3da-bert-vits2.hf.space/")
result = client.predict(
text, # str in 'Text' Textbox component
"ign", # str (Option from: ['ign']) in 'Speaker' Dropdown component
0.2, # int | float (numeric value between 0 and 1) in '语调变化' Slider component
0.6, # int | float (numeric value between 0.1 and 1.5) in '感情变化' Slider component
0.8, # int | float (numeric value between 0.1 and 1.4) in '音节发音长度变化' Slider component
1, # int | float (numeric value between 0.1 and 2) in '语速' Slider component
fn_index=0
)
print(result)
success, audio_file, ogg_file = result
print(success, audio_file, ogg_file)
shutil.move(audio_file, audio_path)
shutil.move(ogg_file, ogg_path)
if __name__ == '__main__':
"""
job_id='2'
! python txt2video.py {job_id} 'https://image.tensorartassets.com/cdn-cgi/image/plain=true,w=1280/posts/images/631302687467566953/4873c256-c1bd-49ba-85ca-5821801f122f.jpg' 海狸今天我们出去走路么
from google.colab import files
files.download(f'/content/jobs/{job_id}/output.mp4')
"""
job_id = sys.argv[1]
text = sys.argv[2] # text or .txt file
video_url = sys.argv[3]
if os.path.isfile(text):
# read file as string
with open(text, 'r') as file:
text = file.read()
output_mp4 = main(job_id, text, video_url)
|