import gradio as gr from gtts import gTTS # 1. 將對話轉換為語音的函數 def dialogue_to_audio(dialogue): text = " ".join([item["text"] for item in dialogue]) tts = gTTS(text=text, lang='en') # 如果你的對話是中文,改成 lang='zh' file_path = "temp_audio.mp3" tts.save(file_path) return file_path # 2. 生成對話的函數 def generate_dialogue(rounds: int, method: str) -> list: dialogue = [] for i in range(rounds): if method == "auto": dialogue.append({"role": "A" if i % 2 == 0 else "B", "text": f"自動文本 {i + 1}"}) else: dialogue.append({"role": "A" if i % 2 == 0 else "B", "text": ""}) return dialogue # 3. 修改 Gradio 函數來返回音頻 def generate_dialogue_with_audio(rounds: int, method: str): dialogue = generate_dialogue(rounds, method) audio_path = dialogue_to_audio(dialogue) return audio_path, dialogue # 4. 創建 Gradio 界面並啟動 def main_interface(): interface = gr.Interface( fn=generate_dialogue_with_audio, inputs=[ gr.inputs.Slider(minimum=2, maximum=6, step=2, default=2, label="對話輪數"), gr.inputs.Dropdown(choices=["auto", "manual"], label="生成方式"), ], outputs=[ gr.outputs.Audio(type="file", label="對話朗讀"), gr.outputs.JSON(label="生成的對話") ] ) interface.launch() if __name__ == "__main__": main_interface()