import os import datetime import shutil import tempfile # 假設 output_file 是由 tempfile.NamedTemporaryFile 創建的 # --- 自動儲存設定 --- # 定義儲存生成的語音檔案的資料夾名稱 SAVE_DIR = "generated_audio" # 確保儲存資料夾存在。如果不存在,則創建它。 # exist_ok=True 參數表示如果資料夾已經存在,則不會引發錯誤。 os.makedirs(SAVE_DIR, exist_ok=True) # --- 結束自動儲存設定 --- # 假設這是在 generate_speech 函數內部,並且 output_file 已經包含了生成的語音的臨時路徑 # 例如: # with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp: # output_file = fp.name # tts.tts_to_file(text=text, language=language, speaker_wav=speaker_wav_to_use, file_path=output_file) # --- 自動儲存生成的語音檔案的程式碼 --- # 獲取當前時間戳,用於創建唯一的檔案名 timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") # 清理輸入文本,用於檔案名,避免特殊字元導致檔案名無效或混亂 # 只保留字母數字和空格,並去除首尾空格 safe_text = "".join(c for c in text if c.isalnum() or c.isspace()).strip() if len(safe_text) > 30: # 限制檔案名中文本部分的長度,避免過長 safe_text = safe_text[:30] + "..." # 超過部分用省略號表示 # 組合最終儲存檔案的名稱:時間戳_語言_清理後的文本.wav saved_file_name = f"{timestamp}_{language}_{safe_text}.wav" # 組合最終儲存檔案的完整路徑:儲存目錄/檔案名 saved_file_path = os.path.join(SAVE_DIR, saved_file_name) # 將生成的語音臨時檔案從其臨時位置複製到指定的儲存目錄 shutil.copy(output_file, saved_file_path) # 打印儲存成功的訊息,顯示儲存的路徑 print(f"語音已自動儲存到:{saved_file_path}") # --- 結束自動儲存程式碼 ---