- 实际应用场景描述
在现代家庭或团队采购中,我们经常会遇到以下情况:
- 在超市或菜市场时,临时想到要买的东西,但手头没有纸笔或手机备忘录。
- 多人一起购物,需求来自不同人口述,容易遗漏或重复购买。
- 购物清单杂乱无章,到了超市还要花时间分类找商品。
如果有一个 语音录入购物需求 的程序,能自动识别语音内容,并将物品分类为 生鲜、日用品、零食类,生成清晰的购物清单,就能大幅提升购物效率和体验。
-
痛点分析
-
手动记录麻烦:在购物途中不方便打字或写字。
-
信息分散:多人需求容易遗漏或重复。
-
分类困难:到了超市还要花时间找对应区域。
-
易忘易错:口头记忆不可靠,容易买多或买少。
-
核心逻辑讲解
3.1 语音识别
- 使用 "speech_recognition" 库调用麦克风录音并转成文本。
- 支持中文识别(需联网使用 Google Speech API 或其他引擎)。
3.2 自然语言处理(NLP)分类
- 使用关键词匹配 + 简单规则分类(可升级为机器学习模型)。
- 例如:包含“苹果”“牛奶” → 生鲜;包含“纸巾”“洗衣液” → 日用品;包含“薯片”“巧克力” → 零食。
3.3 去重与合并
- 对识别出的物品进行去重,避免重复购买。
- 可设置数量(当前版本默认数量为 1,可扩展)。
3.4 输出结构化清单
- 按类别分组输出,方便查看和采购。
- 模块化代码(Python)
shopping_list_generator.py
import speech_recognition as sr import re
class ShoppingListGenerator: def init(self): # 分类关键词 self.categories = { '生鲜': ['苹果', '香蕉', '牛奶', '鸡蛋', '蔬菜', '肉', '鱼', '面包'], '日用品': ['纸巾', '洗衣液', '洗发水', '牙膏', '毛巾', '垃圾袋'], '零食': ['薯片', '巧克力', '饼干', '糖果', '坚果'] } # 反向映射:物品 -> 类别 self.item_to_category = {} for cat, items in self.categories.items(): for item in items: self.item_to_category[item] = cat
def recognize_speech(self):
"""语音识别,返回文本"""
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("请说出您的购物需求(说完后会自动识别)...")
audio = recognizer.listen(source)
try:
text = recognizer.recognize_google(audio, language="zh-CN")
print(f"识别结果:{text}")
return text
except sr.UnknownValueError:
print("无法识别语音,请重试。")
return ""
except sr.RequestError as e:
print(f"语音识别服务错误: {e}")
return ""
def extract_items(self, text):
"""从文本中提取可能的物品名称(简单分词+匹配)"""
# 这里用正则提取连续的中文字符作为候选物品
words = re.findall(r'[\u4e00-\u9fa5]+', text)
found_items = set()
for w in words:
if w in self.item_to_category:
found_items.add(w)
return list(found_items)
def classify_items(self, items):
"""将物品分类"""
classified = {'生鲜': [], '日用品': [], '零食': []}
for item in items:
cat = self.item_to_category.get(item, '其他')
if cat in classified:
classified[cat].append(item)
return classified
def generate_list(self, text):
"""生成分类购物清单"""
items = self.extract_items(text)
classified = self.classify_items(items)
return classified
def main(): generator = ShoppingListGenerator() text = generator.recognize_speech() if not text: return print("\n正在生成购物清单...") shopping_list = generator.generate_list(text) print("\n=== 分类购物清单 ===") for category, items in shopping_list.items(): if items: print(f"{category}:{', '.join(items)}") else: print(f"{category}:无")
if name == "main": main()
- README 文件
语音购物清单生成器
基于 Python + 语音识别 + NLP 规则分类,实现语音录入购物需求并自动生成分类购物清单。
功能
- 语音录入购物需求
- 自动识别物品并分类(生鲜、日用品、零食)
- 去重并生成结构化清单
安装依赖
bash
pip install SpeechRecognition pyaudio
注意:pyaudio 在某些系统可能需要额外安装 portaudio。
使用
bash
python shopping_list_generator.py
按提示说话,程序会自动识别并生成清单。
示例
说出:“我要买苹果、牛奶、纸巾、薯片、巧克力。” 输出:
生鲜:苹果, 牛奶
日用品:纸巾
零食:薯片, 巧克力
-
使用说明
-
安装依赖( "SpeechRecognition" 和 "pyaudio")。
-
运行脚本,确保麦克风可用。
-
对着麦克风说出购物需求(尽量清晰、逐个说出物品)。
-
程序会识别语音并生成分类清单。
-
可根据需要扩展数量、价格、品牌等信息。
-
核心知识点卡片
知识点 说明 语音识别 使用 "speech_recognition" 调用 Google API 实现中文语音转文本 正则表达式 用于从文本中提取中文词语 规则分类 基于关键词匹配实现物品分类,可升级为 ML 模型 模块化设计 将功能拆分为独立方法,便于维护和测试 去重处理 使用集合避免重复物品
- 总结
本项目展示了如何用 Python + 语音识别 + 规则 NLP 快速实现一个 智能购物清单生成器,解决了购物中语音记录、分类、去重的痛点。
- 优点:交互自然、分类清晰、易于扩展。
- 未来可引入 机器学习分类模型(如朴素贝叶斯、BERT)提升识别准确率,并支持数量、品牌、价格等更多属性。
- 适合作为 AI 方法与技术课程 的实践案例,涵盖语音处理、文本分类、数据结构应用。
如果你愿意,可以 升级为机器学习分类版本,用标注数据训练模型,让分类更准确,甚至支持自定义物品类别。
利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!