import os import shutil import subprocess import time # 设置wav、jpg、result和mp4文件的目录 wav_dir = 'D:\\Work\\temp\\wav' jpg_dir = 'D:\\Work\\temp\\jpg' result_dir = 'D:\\Work\\temp\\sadtalker' mp4_dir = 'D:\\Work\\temp\\mp4' # 确保mp4目录存在 if not os.path.exists(mp4_dir): os.makedirs(mp4_dir) # 获取wav和jpg目录中的文件列表 wav_files = [f for f in os.listdir(wav_dir) if f.endswith('.mp3')] jpg_files = [f for f in os.listdir(jpg_dir) if f.endswith('.png')] # 初始化一个计数器来跟踪当前使用的jpg文件索引 jpg_index = 0 # 遍历wav文件列表 for wav_file in wav_files: # 计算当前要使用的jpg文件名 jpg_file = jpg_files[jpg_index % len(jpg_files)] jpg_full_path = os.path.join(jpg_dir, jpg_file) # 构建命令行参数 cmd = [ 'python', 'inference.py', '--driven_audio', os.path.join(wav_dir, wav_file), '--source_image', jpg_full_path, '--result_dir', result_dir, '--still', '--preprocess', 'crop', '--enhancer', 'gfpgan' ] # 执行命令 subprocess.run(cmd) # 等待60秒 time.sleep(60) # 复制mp4文件到mp4目录 for mp4_file in os.listdir(result_dir): if mp4_file.endswith('.mp4'): shutil.copy(os.path.join(result_dir, mp4_file), mp4_dir) # 删除result_dir目录下除.mp4文件外的其他文件 for file in os.listdir(result_dir): if not file.endswith('.mp4'): os.remove(os.path.join(result_dir, file)) # 标记wav文件已使用 wav_used = wav_file.replace('.mp3', '_used.mp3') os.rename(os.path.join(wav_dir, wav_file), os.path.join(wav_dir, wav_used)) # 更新jpg文件索引 jpg_index += 1 print("Processing complete.")
https://www.freedidi.com/12112.html
这是一段文字
import os import shutil import subprocess import time # 设置wav、jpg、result和mp4文件的目录 wav_dir = 'D:\\Work\\temp\\wav' jpg_dir = 'D:\\Work\\temp\\pnghjl' result_dir = 'D:\\Work\\temp\\sadtalker' mp4_dir = 'D:\\Work\\temp\\MP4' # 确保mp4目录存在 if not os.path.exists(mp4_dir): os.makedirs(mp4_dir) # 获取wav和jpg目录中的文件列表 wav_files = [f for f in os.listdir(wav_dir) if f.endswith('.wav')] jpg_files = [f for f in os.listdir(jpg_dir) if f.endswith('.png')] # 初始化一个计数器来跟踪当前使用的jpg文件索引 jpg_index = 0 # 遍历wav文件列表 for wav_file in wav_files: wav_full_path = os.path.join(wav_dir, wav_file) wav_base_name = os.path.splitext(wav_file)[0] # 获取wav文件的基本名称,不含扩展名 # 计算当前要使用的jpg文件名 jpg_file = jpg_files[jpg_index % len(jpg_files)] jpg_full_path = os.path.join(jpg_dir, jpg_file) # 构建命令行参数 cmd = [ 'python', 'inference.py', '--driven_audio', wav_full_path, '--source_image', jpg_full_path, '--result_dir', result_dir, '--still', '--preprocess', 'extfull', '--enhancer', 'gfpgan' ] # 执行命令,并添加错误处理 try: subprocess.run(cmd, check=True) except subprocess.CalledProcessError as e: print(f"An error occurred while processing {wav_file}: {e}") continue # 跳过当前wav文件,继续处理下一个 # 等待直到结果目录中有mp4文件生成 while True: time.sleep(10) # 每10秒检查一次 result_files = os.listdir(result_dir) if any(mp4_file.endswith('.mp4') for mp4_file in result_files): break # 复制mp4文件到mp4目录,并确保文件名与wav文件相同 for mp4_file in result_files: if mp4_file.endswith('.mp4'): shutil.move( os.path.join(result_dir, mp4_file), os.path.join(mp4_dir, f"{wav_base_name}.mp4") ) # 删除result_dir目录下除.mp4文件外的其他文件 for file in os.listdir(result_dir): if not file.endswith('.mp4'): os.remove(os.path.join(result_dir, file)) # 标记wav文件已使用 wav_used = wav_file.replace('.wav', '_used.wav') os.rename(wav_full_path, os.path.join(wav_dir, wav_used)) # 更新jpg文件索引 jpg_index += 1 print("Processing complete.")