import subprocess import re import os def generate_audio(text, lang, filename): subprocess.run(['espeak-ng', '-v', lang, '-s', '120', '-w', filename, text]) def combine_audio(files, output): inputs = [] for file in files: inputs.extend(['-i', file]) filter_complex = ''.join([f'[{i}:a]' for i in range(len(files))]) + f'concat=n={len(files)}:v=0:a=1[out]' subprocess.run(['ffmpeg', *inputs, '-filter_complex', filter_complex, '-map', '[out]', output]) def process_text(k, text): parts = re.split(r'(\[zh\].*?\[/zh\])', text.replace('*','')) audio_files = [] for i, part in enumerate(parts): if part.startswith('[zh]') and part.endswith('[/zh]'): chinese_text = part[4:-5] filename = f'chinese{i}.wav' generate_audio(chinese_text, 'cmn', filename) else: filename = f'english{i}.wav' generate_audio(part, 'en', filename) audio_files.append(filename) num_file=f'explain_{k+1}.wav' print(num_file) combine_audio(audio_files, num_file ) # Delete temporary audio files for file in audio_files: os.remove(file) for i in range(500): file_to_open = f'chinese_{i+1}.txt' print(file_to_open) try: with open(file_to_open, 'r') as file: content = file.read() print(content) process_text(i, content) except: print('not found')