import gradio as gr import shutil import os import uuid SAVE_DIR = "recordings" os.makedirs(SAVE_DIR, exist_ok=True) def save_and_return(audio_path): if audio_path is None: return None, "❌ 録音されていません" # 保存先をユニークに(上書き防止) new_path = os.path.join(SAVE_DIR, f"{uuid.uuid4().hex}.wav") shutil.copy(audio_path, new_path) return new_path, "✅ 録音保存&再生準備OK!" with gr.Blocks() as demo: gr.Markdown("# 🎤 録音して再生") with gr.Row(): audio_input = gr.Audio(sources=["microphone"], type="filepath", label="録音") audio_output = gr.Audio(label="録音した音声を再生") result_text = gr.Textbox(label="結果") audio_input.change(fn=save_and_return, inputs=audio_input, outputs=[audio_output, result_text]) if __name__ == "__main__": demo.launch( server_name="0.0.0.0", server_port=7860, share=True, show_error=True )