当餐馆菜单遇见毒舌大模型:语音合成 + 通义千问的趣味实现
用 Python 实现一个会“怼人”的黑心餐馆助手:菜单管理 + 语音播报 + AI 批判顾客评价
你是否想过,让 AI 模仿贴吧老哥的语气,对你的餐馆评价进行无情的“反击”?
本文通过一个完整的 Python 小项目,展示如何将语音合成模块(pyttsx3) 与大语言模型(阿里通义千问) 结合起来,打造一个既实用又充满恶趣味的交互系统。
一、项目背景与功能概览
1.1 灵感来源
网上常见“黑心商家”段子:菜贵、量少、态度差。如果我们反过来,让一个虚拟的“黑心餐馆助手”不仅管理菜单,还能用毒舌语气“怼”顾客的评价,会不会很有趣?
1.2 主要功能
-
菜单 CRUD:查看、添加、删除、修改菜品(带价格验证,低于 30 元会拒绝)。
-
语音反馈:使用 pyttsx3 将欢迎语、AI 回复、退出语等转为语音播报。
-
AI 怼人评价:用户输入评价,调用阿里云通义千问大模型,以“资深贴吧人”身份回怼。
-
持久化存储:菜单保存在
menu.txt(JSON 格式),重启后数据不丢失。
1.3 技术栈
-
Python 3 基础语法
-
pyttsx3:离线文本转语音(TTS)
-
OpenAI SDK(兼容模式):调用阿里云 DashScope 上的
qwen-plus模型 -
JSON:数据持久化
二、代码核心模块解析
2.1 菜单管理:基础 CRUD
-
启动时从
menu.txt加载,不存在则使用内置菜单。 -
每次增删改后调用
save_menu()保存。
价格校验:添加或修改菜品时,如果价格 ≤ 30 元,拒绝操作。这符合“黑心餐馆”的人设——不卖便宜菜。
2.2 语音模块:pyttsx3 的基本使用
-
pyttsx3是 Python 的离线 TTS 库,支持 Windows、macOS、Linux。 -
say()将文本加入队列,runAndWait()阻塞直到播报完成。 -
在程序的关键节点(欢迎、AI 回复、退出)使用语音反馈,增强拟人感。
2.3 大模型调用:通义千问的“毒舌”模式
-
关键点:System prompt 设定了模型角色——“资深贴吧人,对所有评价都要批判回去”。
-
例如用户评价“菜太咸了”,模型可能回复:“咸?那是给你补充电解质,不识货。”
-
max_tokens=100限制回复长度,避免过于啰嗦。
2.4 主循环交互
-
评价功能先调用大模型,再语音播报,形成完整的“你喷我,我 AI 怼回去”的互动闭环。
三、语言模块与大模型的适用场景分析
这个项目虽然小,但生动体现了“传统语音模块 + 大语言模型”组合的几种典型适用场景:
3.1 智能客服/吐槽机器人
-
传统 TTS:将机器人的文本回复转为语音,适合电话客服、车载助手等需要语音交互的场景。
-
大模型:提供更自然、更个性、甚至带情绪的回复,而不是僵硬的固定话术。
-
本项目实例:大模型模拟“毒舌”角色,让对话变得有“人味儿”(哪怕是负面的人设)。
3.2 教育与娱乐应用
-
例如语言学习助手:用户说一句话,大模型评价发音或语法,TTS 读出反馈。
-
虚拟陪伴:设定大模型的性格(傲娇、温柔、暴躁),TTS 配合语气标签,打造虚拟好友。
3.3 无障碍辅助
-
为视障用户设计的菜单系统:TTS 朗读菜单项,大模型理解用户的自然语言指令(“我想吃便宜的菜”),执行相应操作。
3.4 自动化测试与模拟对话
注:本文使用的 API Key 仅作示例,请勿直接使用。前往 阿里云 DashScope 免费申请。
二者结合,能轻松构建出具有个性化声音和性格的对话系统。无论是用于恶搞、教学,还是真实的产品原型,这种组合都值得一试。
当然,真正的“黑心餐馆”并不值得提倡,但通过代码让 AI 学会“怼人”,或许能帮你释放日常压力——记得把 API Key 藏好,别让老板看见 😉
-
开发阶段用 TTS 播报大模型的输出,无需实际扬声器即可验证对话逻辑。
四、运行与体验
4.1 环境准备

你会听到“欢迎来到黑心餐馆”,然后进入命令行交互界面。
4.3 示例对话

五、总结
通过不到 150 行代码,我们实现了一个菜单管理 + 语音播报 + 大模型毒舌回复的趣味程序。这个例子清晰地展示了:
-
语言模块(TTS) 负责输出的人性化通道;
-
大语言模型 负责内容的智能生成与角色扮演。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)