Spaces:
Runtime error
Runtime error
| from flask import Blueprint, request, jsonify | |
| import os | |
| import base64 | |
| from pydub import AudioSegment | |
| record_bp = Blueprint('record', __name__) | |
| # 録音データの保存先ディレクトリ | |
| record_data_dir = "record_data" | |
| os.makedirs(record_data_dir, exist_ok=True) | |
| def upload_audio(): | |
| try: | |
| data = request.get_json() | |
| if not data or 'audio_data' not in data or 'user_name' not in data: | |
| return jsonify({"error": "音声データまたはユーザー名がありません"}), 400 | |
| user_name = data['user_name'].replace(" ", "_") # 空白をアンダースコアに変換 | |
| audio_binary = base64.b64decode(data['audio_data']) | |
| # 保存先のファイルパス | |
| audio_path = os.path.join(record_data_dir, f"{user_name}.wav") | |
| # 一時ファイルとして保存 | |
| temp_audio_path = os.path.join(record_data_dir, "temp_audio") | |
| with open(temp_audio_path, 'wb') as f: | |
| f.write(audio_binary) | |
| # pydub を使って WAV に変換 | |
| try: | |
| audio = AudioSegment.from_file(temp_audio_path, format="webm") | |
| except Exception: | |
| audio = AudioSegment.from_file(temp_audio_path) | |
| audio.export(audio_path, format="wav") | |
| os.remove(temp_audio_path) | |
| return jsonify({"success": True, "message": f"音声が {audio_path} に保存されました"}), 200 | |
| except Exception as e: | |
| print("Error in /upload_audio:", str(e)) | |
| return jsonify({"error": "サーバーエラー", "details": str(e)}), 500 | |