用100行代码体验ChatGPT音箱

2023-03-011513
AI 快速预览详细 收起
本文介绍了如何使用Mind+和行空板制作一个ChatGPT音箱。首先打开Mind+,选择Python模式,添加行空板模块、百度语音模块和OpenAI模块。然后进行图形化编程,连接行空板并运行代码。最后设计外壳并打印,组装行空板和音箱,联网后即可开始使用。整个过程简单易懂,适合初学者和STEM教育场景。

随着ChatGPT如火如荼的讨论,我们作为科技爱好者也禁不住手痒痒,想做点什么。

于是我问了下ChatGPT该怎么做

image.png

 

嗯,大致了解了。

那我们就开干吧。

 

更新一下,OpenAI最新发布了GPT3.0的模型的api,mind+的用户库OpenAI也及时更新了。

注意:由于openai政策的变化,api的访问不能直接到达服务器。可能无法正常使用。

正在寻求解决方案。

步骤1 打开最新的mind+

步骤2 选择python模式

步骤3 添加行空板模块

步骤4 添加百度语音模块

步骤5 添加用户库OpenAI模块

步骤6 图形化编程

步骤7 连接行空板

步骤8 运行代码

步骤9 设计外壳

步骤10 打印外壳

步骤11 组装行空板和音箱

步骤12 联网

步骤13 开始使用

材料清单

  • 行空板 X1 链接
  • usb喇叭或蓝牙音箱 X1
代码
#  -*- coding: UTF-8 -*-
#注意填入百度云AI的秘钥和OpenAI的api key
# MindPlus
# Python
from unihiker import Audio
from aip import AipSpeech
from unihiker import GUI
import openai
import time


def synthesis(text):
  try:
    return aip_speech_client.synthesis(text,"zh", 1, aip_synthesis_option)
  except Exception:
    return aip_speech_client.synthesis(text,"zh", 1)

def saveAudio(src):
  try:
    with open(src, "wb") as f:
      return f.write(aip_synthesis_result)
  except FileNotFoundError as e:
    print(f"[文件不存在] {e}")
    return None
  except TypeError as e:
    print(f"[输入类型异常] {e}")
    return None
  except BaseException as e:
    print(f"[通用异常] {e}")
    return None

def readAudio(src):
  try:
    with open(src, "rb") as f:
      return f.read()
  except FileNotFoundError as e:
    print(f"[文件不存在] {e}")
    return None
  except TypeError as e:
    print(f"[输入类型异常] {e}")
    return None
  except BaseException as e:
    print(f"[通用异常] {e}")
    return None

def asr(b, f, r):
  aip_asr_result = aip_speech_client.asr(b, f, r)
  if aip_asr_result["err_no"] == 0:
    return " ".join(aip_asr_result["result"])
  else:
    print(aip_asr_result["err_no"] + " " +aip_asr_result["err_msg"])
    return None

# 事件回调函数
def button_click1():
    global flag
    flag = 1


u_gui=GUI()
u_audio = Audio()
aip_speech_client = AipSpeech("undefined", "undefined", "undefined") #填入百度AI语音合成的appID,API Key和Secret Key
aip_synthesis_option = {"aue": 6, "per": 3, "spd": 6, "pit": 5, "vol": 7}
openai.api_key = "" #填入OpenAI的api key

def askOpenAI(question):
    res = openai.Completion.create(
        model="text-davinci-003",
        prompt=question,
        temperature=0.9,
        max_tokens=1024,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0.6,
        stop=None
    )
    message = res.choices[0].text
    return message
anniu=u_gui.add_button(text="问我",x=90,y=260,w=60,h=40,onclick=button_click1)
xianshi=u_gui.draw_text(text="请触摸问我,说出问题",x=15,y=50,font_size=15, color="#00CCCC")
wenzi =u_gui.draw_text(text="",x=10,y=10,font_size=10, color="#000000")
wenzi .config(w=230)
ShiBieJieGuo = ""
flag = 0

while True:
    if (flag == 2):
        aip_synthesis_result = synthesis(askOpenAI(ShiBieJieGuo))
        saveAudio("speech.wav")
        ShiBieJieGuo = asr(readAudio("speech.wav"), "wav", 16000)
        wenzi .config(text=ShiBieJieGuo)
        u_audio.play("speech.wav")
        flag = 0
        wenzi .config(text="      ")
        anniu.config(state="normal")
        xianshi.config(x=15)
    if (flag == 1):
        xianshi.config(x=600)
        wenzi .config(text="聆听中。。。")
        anniu.config(state="disable")
        u_audio.record("record.wav",10)
        ShiBieJieGuo = asr(readAudio("record.wav"), "wav", 16000)
        wenzi .config(text=ShiBieJieGuo)
        time.sleep(2)
        wenzi .config(text="思考中。。。")
        flag = 2

 

代码等相关代码也在gitee开源了,欢迎大家star

https://gitee.com/rocketscn/chat-gpt-unihiker-speaker

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

所需材料/产品

加载全部

    行空板M10(UNIHIKER)Python教学主控板 - 蘑菇云科创教育

    行空板M10(UNIHIKER)Python教学主控板 - 蘑菇云科创教育

    行空板M10(UNIHIKER)Python教学主控板 - 蘑菇云科创教育

相关推荐

评论(6)
花生编程
花生编程
赞!
花生编程
花生编程
不错不错
nsynet
nsynet
能不能把这些可以公开的代码在gitee等平台上公开了,可以继续研究和优化?
贺兰山下
贺兰山下
谢谢分享,学习了
腿毛利小五郎
腿毛利小五郎
教程详细谢谢楼主
老曾
老曾
高手,请教下用你发的程序上传到行空板后,后面出现思考中就不动了,是什么问题
山水
山水回复微笑的rockets
openai的接口现在需要魔法才行,我也在看怎么弄。现在3.5的turbo也不是太贵,如果不墙可以试试
- 没有更多了 -

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

相关推荐

所需材料/产品

行空板M10(UNIHIKER)Python教学主控板 - 蘑菇云科创教育

行空板M10(UNIHIKER)Python教学主控板 - 蘑菇云科创教育

行空板M10(UNIHIKER)Python教学主控板 - 蘑菇云科创教育