import os from gtts import gTTS import argparse def generate_podcast(text_file_path, output_audio_path, lang='zh-CN'): """ 将文本文件内容转换为语音并保存为 MP3 文件。 """ if not os.path.exists(text_file_path): print(f"错误: 文本文件 '{text_file_path}' 不存在。") return False try: with open(text_file_path, 'r', encoding='utf-8') as f: text = f.read() except Exception as e: print(f"错误: 读取文本文件失败: {e}") return False if not text.strip(): print("警告: 文本文件内容为空,跳过语音生成。") return False try: tts = gTTS(text=text, lang=lang, slow=False) tts.save(output_audio_path) print(f"成功将文本转换为语音并保存到 '{output_audio_path}'") return True except Exception as e: print(f"错误: 文本转语音失败: {e}") print("请确保已安装 gTTS 库: pip install gTTS") return False if __name__ == "__main__": parser = argparse.ArgumentParser(description="将文本文件转换为 Podcast 音频。") parser.add_argument("--text_file", required=True, help="输入文本文件的路径。") parser.add_argument("--output_audio", required=True, help="输出 MP3 音频文件的路径。") parser.add_argument("--lang", default="zh-CN", help="语音语言 (例如 'en', 'zh-CN')。") args = parser.parse_args() # 确保 gTTS 已安装 try: import gtts except ImportError: print("gTTS 库未安装。正在尝试安装...") try: subprocess.run([f"./documentation/analysis/phallic-worship-analysis/venv/bin/pip", "install", "gTTS"], check=True) print("gTTS 安装成功。") except Exception as e: print(f"gTTS 安装失败: {e}") exit(1) # 在实际应用中,这里应该有一个明确的触发机制或配置来决定是否生成音频 # 例如,通过命令行参数 `--confirm-generate` 或环境变量 # 为了避免意外生成,这里默认不执行生成,除非明确指定 print("警告: 文本转语音功能默认不自动执行。") print("如需生成音频,请在脚本中手动启用或通过 CI/CD 配置触发。") # if args.confirm_generate: # 示例:如果添加了确认参数 # if generate_podcast(args.text_file, args.output_audio, args.lang): # print("Podcast 生成完成。") # else: # print("Podcast 生成失败。") # else: # print("Podcast 生成已跳过,因为未收到明确的生成指令。")