| import os |
| import datetime |
| import shutil |
| import gradio as gr |
| import tempfile |
|
|
| |
| |
| SAVE_UPLOADED_REFERENCES_DIR = "uploaded_references" |
|
|
| |
| os.makedirs(SAVE_UPLOADED_REFERENCES_DIR, exist_ok=True) |
| |
|
|
| |
| |
| |
| |
|
|
| |
| speaker_wav_to_use = uploaded_speaker_audio_path |
| |
| |
| if uploaded_speaker_audio_path: |
| try: |
| timestamp_ref = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") |
| |
| original_ext = os.path.splitext(uploaded_speaker_audio_path)[1] |
| |
| saved_ref_file_name = f"{timestamp_ref}_uploaded_ref{original_ext}" |
| |
| saved_ref_file_path = os.path.join(SAVE_UPLOADED_REFERENCES_DIR, saved_ref_file_name) |
| |
| shutil.copy(uploaded_speaker_audio_path, saved_ref_file_path) |
| print(f"上傳的參考語音已儲存到:{saved_ref_file_path}") |
| except Exception as e: |
| print(f"儲存上傳的參考語音時發生錯誤: {e}") |
| |
| |
| print(f"使用上傳的語音參考檔案: {speaker_wav_to_use}") |
| else: |
| |
| pass |
| |
|
|
| |
|
|
| |
|
|
|
|
| |
| def list_uploaded_reference_files(): |
| """掃描上傳參考語音資料夾,返回所有 .wav 檔案的完整路徑列表。""" |
| ref_files = [] |
| if os.path.exists(SAVE_UPLOADED_REFERENCES_DIR) and os.path.isdir(SAVE_UPLOADED_REFERENCES_DIR): |
| for filename in os.listdir(SAVE_UPLOADED_REFERENCES_DIR): |
| if filename.lower().endswith(".wav"): |
| |
| ref_files.append(os.path.join(SAVE_UPLOADED_REFERENCES_DIR, filename)) |
| |
| ref_files.sort(key=os.path.getmtime, reverse=True) |
| return ref_files |
| |
|
|
|
|
| |
| |
| |
| |
|
|
| with gr.Tab("查看已上傳參考語音"): |
| gr.Markdown("### 已儲存的上傳參考語音檔案") |
| gr.Markdown("這些是您上傳的語音參考檔案。") |
| |
| saved_uploaded_ref_files_output = gr.File( |
| label="上傳的參考語音檔案", |
| file_count="multiple", |
| interactive=False |
| ) |
| refresh_uploaded_ref_button = gr.Button("刷新參考語音列表") |
|
|
| |
| |
| |
| refresh_uploaded_ref_button.click(list_uploaded_reference_files, outputs=[saved_uploaded_ref_files_output]) |
|
|
| |
|
|