# 🎙️ 音频录音工具 前后端分离的录音应用,支持手机浏览器录音、回放和上传。 ## 📁 项目结构 ``` audio-recorder/ ├── frontend/ # 前端(纯HTML/JS) │ └── index.html # 录音页面 ├── backend/ # 后端(Flask API) │ ├── app.py # 主服务 │ └── requirements.txt ├── uploads/ # 音频文件存储目录 └── start.sh # 启动脚本 ``` ## ✨ 功能特性 - ✅ **开始录音** - 点击按钮开始录制音频 - ✅ **结束录音** - 停止录制并保存 - ✅ **回放录音** - 本地播放刚录制的音频 - ✅ **自动上传** - 录音完成后自动上传到服务器 - ✅ **录音计时** - 实时显示录音时长 - ✅ **手机适配** - 响应式设计,支持移动端 ## 🚀 快速启动 ### 1. 启动服务 ```bash cd /home/ubuntu/nanocode/audio-recorder chmod +x start.sh ./start.sh ``` ### 2. 访问应用 - 本机访问: http://localhost:8890 - 局域网访问: http://<服务器IP>:8890 ## 📱 手机浏览器要求 **重要**:手机浏览器录音需要 **HTTPS** 环境 ### 解决方案: #### 方案1:使用 nginx + SSL(推荐) ```nginx server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:8890; proxy_set_header Host $host; } } ``` #### 方案2:本地测试(Chrome) ```bash # 启动带SSL的隧道(需要安装 localtunnel 或 ngrok) npx localtunnel --port 8890 ``` #### 方案3:内网穿透 使用 ngrok: ```bash ngrok http 8890 ``` ## 🔌 API 接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/upload` | POST | 上传音频文件 | | `/api/recordings` | GET | 列出所有录音 | | `/api/recordings/` | GET | 获取单个录音 | | `/api/recordings/` | DELETE | 删除录音 | | `/api/health` | GET | 健康检查 | ## 🛠️ 技术栈 **前端:** - 原生 HTML5 + CSS3 + JavaScript - MediaRecorder API(录音) - Web Audio API(回放) **后端:** - Python 3.8+ - Flask - Flask-CORS **音频格式:** - 录制:WebM/Opus(默认)或 MP4 - 存储:WebM 格式 - 兼容性:Chrome, Firefox, Safari, Edge ## ⚠️ 注意事项 1. **权限**:首次使用需要授权麦克风权限 2. **HTTPS**:手机浏览器必须在 HTTPS 环境下才能录音 3. **格式**:不同浏览器支持的音频格式不同(优先 WebM) 4. **存储**:录音文件保存在 `uploads/` 目录 ## 📝 后续开发计划 - [ ] 语音转文字(ASR) - [ ] 录音列表管理 - [ ] 大模型总结 - [ ] 用户认证 - [ ] 录音剪辑 --- 创建时间:2026-03-29