张梦南
张梦南
发布于 2026-05-28 / 19 阅读
0
0

吆喝小喇叭


title: 社恐福音!我做了一个Web广播系统,再也不用开口吆喝了

date: 2026-05-28

tags:

  • Python

  • Flask

  • TTS

  • 开源项目

categories:

  • 技术分享


前言

作为一个典型的内向型人格,每次需要吆喝或者广播通知的时候都特别难受。于是我花了一个周末,用 Python + Flask 做了一个 Web 广播系统 —— PA_horn_speaker,从此告别开口说话!

项目简介

这是一个基于 Web 的文本转语音广播系统,核心功能就是:输入文字 → 生成语音 → 播放声音

功能亮点

  1. 多种声音选择

    • 6种普通话音色(晓晓、晓伊、云健、云希、云夏、云扬)

    • 2种方言(辽宁话、陕西话)

    • 3种粤语(香港口音)

    • 3种台语(台湾口音)

  2. 循环播放模式

    • 支持设置播放间隔(1-60秒)

    • 适合需要重复广播的场景

  3. 语音文件管理

    • 自动保存播放历史

    • 支持收藏、重命名、删除

    • 智能缓存(最多保存10个文件)

  4. 其他特性

    • 深色/浅色主题切换

    • 实时操作日志

    • 响应式设计

实物展示

3D外壳模型

项目包含完整的3D外壳模型设计,支持3D打印制作实体外壳。

模型文件

  • shell.SLDPRT - 外壳主体设计(SolidWorks源文件)

  • shell.STL - 外壳3D打印格式

  • backboard.SLDPRT - 背板设计(SolidWorks源文件)

  • backboard.STL - 背板3D打印格式

模型特点

  • 紧凑设计,适配常见的音频模块

  • 预留接口位置,便于组装

  • 支持3D打印直接使用

技术实现

核心技术栈

组件

技术

说明

后端

Flask

轻量级 Web 框架

语音合成

edge-tts

Microsoft Edge TTS API

音频播放

mpg123

命令行音频播放器

前端

HTML + CSS + JS

原生实现,无需框架

3D设计

SolidWorks

外壳模型设计

核心流程

用户输入文本 → 选择声音 → 调用 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 即可使用。

使用场景

这个工具特别适合以下场景:

  1. 小商店/摊位吆喝 - 输入促销话术,循环播放

  2. 会议通知 - 输入通知内容,一键广播

  3. 学习辅助 - 将文字转语音,边听边学

  4. 无障碍辅助 - 视力障碍者的阅读辅助

  5. 趣味应用 - 用不同方言增加趣味性

界面预览

项目结构

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

使用小贴士

  1. 选择合适的声音:不同场景适合不同音色,比如促销适合激情男声,温馨提示适合温暖女声

  2. 控制文本长度:建议每次输入不超过500字,太长的文本可以分段播放

  3. 调整循环间隔:根据内容重要程度设置播放间隔,重要通知可以短一点

  4. 收藏常用内容:经常使用的广播内容可以收藏,避免重复输入

下载链接

总结

这个项目虽然简单,但实用性很强。通过技术手段解决生活中的小痛点,这正是编程的乐趣所在!如果你也是内向型人格,不妨试试这个工具,让电脑替你说话。


如果觉得这个项目对你有帮助,欢迎 Star 和 Fork!如有问题或建议,欢迎在评论区留言。


作者:张梦南
发布时间:2026年5月28日
版权声明:本文采用 MIT 许可协议


评论