语音录入购物需求,自动生成分类购物清单,分生鲜,日用品,零食类,避免购物漏买或多买。

29 阅读4分钟
  1. 实际应用场景描述

在现代家庭或团队采购中,我们经常会遇到以下情况:

  • 在超市或菜市场时,临时想到要买的东西,但手头没有纸笔或手机备忘录。
  • 多人一起购物,需求来自不同人口述,容易遗漏或重复购买。
  • 购物清单杂乱无章,到了超市还要花时间分类找商品。

如果有一个 语音录入购物需求 的程序,能自动识别语音内容,并将物品分类为 生鲜、日用品、零食类,生成清晰的购物清单,就能大幅提升购物效率和体验。

  1. 痛点分析

  2. 手动记录麻烦:在购物途中不方便打字或写字。

  3. 信息分散:多人需求容易遗漏或重复。

  4. 分类困难:到了超市还要花时间找对应区域。

  5. 易忘易错:口头记忆不可靠,容易买多或买少。

  6. 核心逻辑讲解

3.1 语音识别

  • 使用 "speech_recognition" 库调用麦克风录音并转成文本。
  • 支持中文识别(需联网使用 Google Speech API 或其他引擎)。

3.2 自然语言处理(NLP)分类

  • 使用关键词匹配 + 简单规则分类(可升级为机器学习模型)。
  • 例如:包含“苹果”“牛奶” → 生鲜;包含“纸巾”“洗衣液” → 日用品;包含“薯片”“巧克力” → 零食。

3.3 去重与合并

  • 对识别出的物品进行去重,避免重复购买。
  • 可设置数量(当前版本默认数量为 1,可扩展)。

3.4 输出结构化清单

  • 按类别分组输出,方便查看和采购。
  1. 模块化代码(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()

  1. README 文件

语音购物清单生成器

基于 Python + 语音识别 + NLP 规则分类,实现语音录入购物需求并自动生成分类购物清单。

功能

  • 语音录入购物需求
  • 自动识别物品并分类(生鲜、日用品、零食)
  • 去重并生成结构化清单

安装依赖

bash

pip install SpeechRecognition pyaudio

注意:pyaudio 在某些系统可能需要额外安装 portaudio。

使用

bash

python shopping_list_generator.py

按提示说话,程序会自动识别并生成清单。

示例

说出:“我要买苹果、牛奶、纸巾、薯片、巧克力。” 输出:

生鲜:苹果, 牛奶

日用品:纸巾

零食:薯片, 巧克力

  1. 使用说明

  2. 安装依赖( "SpeechRecognition" 和 "pyaudio")。

  3. 运行脚本,确保麦克风可用。

  4. 对着麦克风说出购物需求(尽量清晰、逐个说出物品)。

  5. 程序会识别语音并生成分类清单。

  6. 可根据需要扩展数量、价格、品牌等信息。

  7. 核心知识点卡片

知识点 说明 语音识别 使用 "speech_recognition" 调用 Google API 实现中文语音转文本 正则表达式 用于从文本中提取中文词语 规则分类 基于关键词匹配实现物品分类,可升级为 ML 模型 模块化设计 将功能拆分为独立方法,便于维护和测试 去重处理 使用集合避免重复物品

  1. 总结

本项目展示了如何用 Python + 语音识别 + 规则 NLP 快速实现一个 智能购物清单生成器,解决了购物中语音记录、分类、去重的痛点。

  • 优点:交互自然、分类清晰、易于扩展。
  • 未来可引入 机器学习分类模型(如朴素贝叶斯、BERT)提升识别准确率,并支持数量、品牌、价格等更多属性。
  • 适合作为 AI 方法与技术课程 的实践案例,涵盖语音处理、文本分类、数据结构应用。

如果你愿意,可以 升级为机器学习分类版本,用标注数据训练模型,让分类更准确,甚至支持自定义物品类别。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!