# PA_horn_speaker

Web广播系统 - 吆喝用的喇叭（i人专用）

通过Web界面输入文字，利用 edge-tts 将文本转化为语音并播放，支持循环播放和语音文件管理。

## 功能特点

- **文本转语音**：输入文字即可生成语音
- **多种声音选择**：支持多种音色，包括普通话、方言、香港、台湾口音
- **循环播放**：支持设置间隔时间的循环播放模式
- **语音文件管理**：播放历史、收藏、重命名、删除
- **主题切换**：支持深色/浅色主题
- **实时日志**：显示操作日志和状态信息

## 支持的声音

| 声音名称 | 类型 |
|---------|------|
| 晓晓（温暖女声） | 普通话 |
| 晓伊（活泼女声） | 普通话 |
| 云健（激情男声） | 普通话 |
| 云希（阳光男声） | 普通话 |
| 云夏（可爱男声） | 普通话 |
| 云扬（新闻男声） | 普通话 |
| 辽宁-小贝 | 方言 |
| 陕西-小妮 | 方言 |
| 香港-晓佳 | 粤语 |
| 香港-晓曼 | 粤语 |
| 香港-云龙 | 粤语 |
| 台湾-晓陈 | 台语 |
| 台湾-晓雨 | 台语 |
| 台湾-云哲 | 台语 |

## 安装依赖

```bash
# 安装 Python 依赖
pip install flask edge-tts

# 安装音频播放工具
sudo apt-get install mpg123
```

## 使用方法

### 启动服务

```bash
python app.py
```

服务将在 `http://localhost:5000` 启动。

### 访问方式

打开浏览器访问 `http://你的IP:5000`

### 使用步骤

1. 在文本框中输入广播内容（最多500字）
2. 选择喜欢的声音
3. 可选：勾选"循环播放"并设置间隔时间
4. 点击"开始广播"按钮
5. 播放完成的语音会自动保存到历史列表

## 技术栈

- **后端**：Flask
- **语音合成**：edge-tts
- **音频播放**：mpg123
- **前端**：HTML + CSS + JavaScript

## 项目结构

```
PA_horn_speaker/
├── app.py              # Flask 应用主文件
├── player.sh           # 循环播放脚本
├── templates/
│   └── index.html      # 前端页面模板
├── static/
│   └── style.css       # 样式文件
├── cache/              # 语音文件缓存目录
│   └── metadata.json   # 文件元数据
├── LICENSE             # 许可证
└── README.md           # 项目说明
```

## API 接口

| 接口 | 方法 | 说明 |
|-----|------|------|
| `/` | GET | 首页 |
| `/speak` | POST | 生成并播放语音 |
| `/stop` | GET | 停止播放 |
| `/files` | GET | 获取语音文件列表 |
| `/play-file` | POST | 播放已保存的语音文件 |
| `/rename-file` | POST | 重命名文件 |
| `/toggle-favorite` | POST | 收藏/取消收藏 |
| `/delete-file` | POST | 删除文件 |

## 注意事项

1. 需要联网使用（edge-tts 需要访问 Microsoft 服务）
2. 音频输出使用 ALSA 设备 `plughw:audiocodec,0`，可根据实际设备调整
3. 缓存目录最多保存10个文件，收藏的文件不会被自动清理

## APK 文件

项目包含 Android 端 APK 文件：`小喇叭_1.0.0.apk`

---

Made with ❤️ for 社恐人士