title: 社恐福音!我做了一个Web广播系统,再也不用开口吆喝了
date: 2026-05-28
tags:
Python
Flask
TTS
开源项目
categories:
技术分享
前言
作为一个典型的内向型人格,每次需要吆喝或者广播通知的时候都特别难受。于是我花了一个周末,用 Python + Flask 做了一个 Web 广播系统 —— PA_horn_speaker,从此告别开口说话!
项目简介
这是一个基于 Web 的文本转语音广播系统,核心功能就是:输入文字 → 生成语音 → 播放声音。
功能亮点
多种声音选择
6种普通话音色(晓晓、晓伊、云健、云希、云夏、云扬)
2种方言(辽宁话、陕西话)
3种粤语(香港口音)
3种台语(台湾口音)
循环播放模式
支持设置播放间隔(1-60秒)
适合需要重复广播的场景
语音文件管理
自动保存播放历史
支持收藏、重命名、删除
智能缓存(最多保存10个文件)
其他特性
深色/浅色主题切换
实时操作日志
响应式设计
实物展示

3D外壳模型
项目包含完整的3D外壳模型设计,支持3D打印制作实体外壳。
模型文件:
shell.SLDPRT - 外壳主体设计(SolidWorks源文件)
shell.STL - 外壳3D打印格式
backboard.SLDPRT - 背板设计(SolidWorks源文件)
backboard.STL - 背板3D打印格式
模型特点:
紧凑设计,适配常见的音频模块
预留接口位置,便于组装
支持3D打印直接使用
技术实现
核心技术栈
核心流程
用户输入文本 → 选择声音 → 调用 edge-tts 生成 MP3 → 保存到缓存 → 使用 mpg123 播放
关键代码片段
语音合成接口(app.py):
@app.route('/speak', methods=['POST'])
def speak():
text = request.form.get('text')
voice = request.form.get('voice')
loop = request.form.get('loop') == 'true'
interval = int(request.form.get('interval', 5))
filename = f"{uuid.uuid4()}.mp3"
filepath = os.path.join(CACHE_DIR, filename)
subprocess.run([
'python3', '-m', 'edge_tts',
'--voice', voice_name,
'--text', text,
'--write-media', filepath
])
if loop:
current_process = subprocess.Popen([
'bash', 'player.sh', filepath, str(interval)
])
else:
current_process = subprocess.Popen([
'mpg123', '-o', 'alsa', '-a', 'plughw:audiocodec,0', filepath
])快速开始
安装依赖
pip install flask edge-tts
sudo apt-get install mpg123
启动服务
python app.py
访问 http://你的IP:5000 即可使用。
使用场景
这个工具特别适合以下场景:
小商店/摊位吆喝 - 输入促销话术,循环播放
会议通知 - 输入通知内容,一键广播
学习辅助 - 将文字转语音,边听边学
无障碍辅助 - 视力障碍者的阅读辅助
趣味应用 - 用不同方言增加趣味性
界面预览

项目结构
PA_horn_speaker/
├── app.py # Flask 应用主文件
├── player.sh # 循环播放脚本
├── templates/index.html # 前端页面
├── static/style.css # 样式文件
├── models/ # 3D模型文件夹
│ ├── shell.SLDPRT # 外壳SolidWorks源文件
│ ├── shell.STL # 外壳3D打印格式
│ ├── backboard.SLDPRT # 背板SolidWorks源文件
│ └── backboard.STL # 背板3D打印格式
├── cache/ # 语音文件缓存
└── 小喇叭_1.0.0.apk # Android APK
使用小贴士
选择合适的声音:不同场景适合不同音色,比如促销适合激情男声,温馨提示适合温暖女声
控制文本长度:建议每次输入不超过500字,太长的文本可以分段播放
调整循环间隔:根据内容重要程度设置播放间隔,重要通知可以短一点
收藏常用内容:经常使用的广播内容可以收藏,避免重复输入
下载链接
GitHub 仓库:PA_horn_speaker
Android APK:小喇叭_1.0.0.apk
总结
这个项目虽然简单,但实用性很强。通过技术手段解决生活中的小痛点,这正是编程的乐趣所在!如果你也是内向型人格,不妨试试这个工具,让电脑替你说话。
如果觉得这个项目对你有帮助,欢迎 Star 和 Fork!如有问题或建议,欢迎在评论区留言。
作者:张梦南
发布时间:2026年5月28日
版权声明:本文采用 MIT 许可协议