python实现语音AI助手(demo)

版本说明
● v 0.1(demo)
○ 完成了唤醒词+语音转文字+文字转语音+大模型调用
○ 长对话文本
项目概述
该项目旨在构建一个框架,使大模型能够自主控制接入的硬件设备。接入新硬件时,只需添加相应参数即可。我的目标是在生活助手应用中,通过语言理解和用户意图预测,提供更便捷的控制体验。
设想功能
例如,当我晚上准备睡觉并感觉热时,传统的问答式AI助手无法满足需求。通过本项目,大模型在设定角色和权限后,可以主动分析用户需求。当我说“我现在想睡觉,有点热”时,大模型会自动执行以下操作:
● 打开空调并设置至17°(静音模式)
● 关闭灯光
● 一段时间后(当室内温度降低)将空调调至26°
由于当前大模型只能调用经过审核的外部工具,我的方案是生成JSON格式的指令字符串,通过中间件控制硬件设备。测试表明,这种方法是可行的,关键在于处理参数和命令的数量。

在这里插入图片描述

项目准备工作

  1. 唤醒词
    唤醒词使用 porcupine。 (可能需要科学上网)
    官方文档地址:https://picovoice.ai/docs/api/porcupine-python/
  2. 语音转文字
    语音转文字使用百度云的 SDK——AipSpeech 库
    (写这个文档的时候,发现百度智能云的网站打不开了,但是挺好找的这个文档)
    官方文档地址:
  3. 大模型(阿里-通义千问)
    官方文档地址:https://help.aliyun.com/zh/dashscope/developer-reference/use-qwen-by-api?spm=a2c4g.11174283.0.0.fd644937lTMLVL
  4. 文字转语音
    使用讯飞的 sdk
    官方文档地址:https://www.xfyun.cn/doc/tts/online_tts/API.html
    必备知识
    大模型
    这里只介绍大模型如何使用,而非其原理。
    消息类型
    与大模型沟通时,主要有三种消息类型:
  5. 系统消息:设定大模型的角色和规则(如 {“role”:“system”,“message”:"你是一个叫阿加斯的人工助手。 "})。
  6. 用户消息:用户提问(如 {“role”:“user”,“message”:“你叫什么名字?”})。
  7. 助手消息:大模型的回答(如 {“role”:“assistant”,“message”:"我的名字是阿加斯。 "})。
    上下文管理
    为了让大模型记住之前的对话,每次交互时都需将消息记录下来。例如:
[
    {"role": "system", "message": "你是一个叫阿加斯的人工助手。"},
    {"role": "assistant", "message": "好的,我叫阿加斯,我会回答你的提问。"},
    {"role": "user", "message": "你叫什么名字?"},
    {"role": "user", "message": "你好,我叫阿加斯。"}
]

Token
“Token”是模型处理文本的基本单位,具体取决于模型的分词方式。

内容逻辑
基本代码逻辑
在这里插入图片描述在这里插入图片描述

在一个主循环中,首先进入唤醒词的循环,直到被唤醒后跳出循环词的循环;
开始录制音频,直到声音小于阈值,停止录制并保存音频到文件;
将音频转为文字;
发送文字到大模型,并获取返回的内容;
将返回的文字进行文字 转语音然后播放。

在这里插入图片描述
因为有一些配置我在写这个文档的时候,把配置直接写在了代码里,不能放出所有代码,等后面有空修改一下,再放出来。

运行环境
mac+vscode+python3.9
用公司的电脑应该也是可以运行的,等后面再测试。

备注
后面还是要改一下用的内容,语音转文字应该是用 websoct ,不能用http 请求。应该要换成百度云的实时语音转换。然后看到 esp32 有自己本地的唤醒识别,等后面有动力有空了再看下。
esp32 的唤醒词模型文档地址:https://docs.espressif.com/projects/esp-sr/zh_CN/latest/esp32/wake_word_engine/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值