行空板语音AI绘画

2023-07-311.3万
精华项目
AI 快速预览详细 收起
这个项目是通过行空板上的麦克风和讯飞语音识别库,识别用户的语音提示词,并利用FlagStudio提供的文字生成图片API,生成AI图像并在屏幕上显示。项目硬件包括行空板、麦克风和按钮。用户可以通过语音输入创意,生成独特的艺术作品。


【项目背景】今年火爆全网的是通过文本描述生成绘画的形式,ai绘画,也叫“ai作画”、“人工智能绘画”,即通过 AI 生成技术得到画作或图片。ai作画由来已久,有许多创作ai绘画作品的方式,包括基于规则的图像生成算法、深度学习算法。最早的ai作画系统 AARON 由 Harold Cohen 于 1960 年代末开始开发。AARON 使用基于符号规则的方法来生成图像,不同于现在ai作画是输出数字化图像,AARON 真的是用画笔和颜料来绘画。2018 年一幅 AI 生成的画被售出超过 40 万美元。这个项目中 AI 基于 GAN (生成对抗网络)技术,学习了 1.5 万件艺术作品,它只能生成油画风格的艺术作品。 2021 年 1 月,OpenAI 发布了 DALL·E,并在一年后发布了生成能力更强的 DALL·E 2。2022 年 7 月 midjourney 开放公测,有人通过 midjourney 生成的作品获得艺术奖项,引起广泛讨论。2022 年 8 月 AI 模型 Stable Diffusion 的开源,才真正引爆了全民参与 AI 作画的热潮。我们可以通过国内的如 画宇宙、盗梦师、tiamat、6pen、draft art、意间AI绘画、即时设计,轻松体验迄今最强的开源 AI 作画模型。
下面是我使用“画宇宙”(https://creator.nolibox.com/creator),利用提示词:花海 日落 古代 战士,生成的AI图
行空板语音AI绘画图4

【项目设计】
主控使用行空板,利用行空板上的麦克风和讯飞语音识别库,识别提示词,再利用flagstudio提供的文字生成图片API,生成AI图像并在屏幕上显示。
【项目硬件】
按钮连接在行空板P21引脚,用于开启录音,和启动显示AI图像。
行空板语音AI绘画图2


行空板语音AI绘画图1

(提示词:梅 兰 竹 菊)


【语音识别】
注册“讯飞开放平台”,在”控制台“获取:APPID、APISecret、APIKey。
行空板语音AI绘画图5
加载讯飞语音识别扩展
行空板语音AI绘画图6

利用Mind+软件Python模式编写程序:
行空板语音AI绘画图7
测试视频

【AI绘画电脑版】
Mind+ Python模式——代码FlagStudio是智源研究院应用文生图,文生音乐等人工智能模型支持艺术创作相关的开源项目集合,利用图文、声文等多模态模型,依托研究院在NLP和CV领域大模型的研究基础,为艺术创作提供更加符合中文场景的人工智能开源算法和模型,使创作效率更加高效,创作空间更加开阔,创作成果更加细腻。当前主要提供文生图相关的能力。https://flagopen.baai.ac.cn注册获取apikey。
  1. #导入相关库
  2. import requests
  3. import json
  4. import base64
  5. import cv2
  6. import numpy as np
  7. from alive_progress import alive_bar
  8. import time
  9. while True:
  10.     u="https://flagopen.baai.ac.cn/flagStudio/auth/getToken"
  11.     param={"apikey":"aee3672220ec348b3b3dfaa7956a8282"}
  12.     token_response=requests.get(url=u,params=param)
  13.     token_json=json.loads(token_response.text)
  14.     token=token_json['data']['token']
  15. #调用api
  16.     u = "https://flagopen.baai.ac.cn/flagStudio/v1/text2img"
  17.     prompt=input("请输入你的创意:")
  18.     param={"prompt":prompt,"steps":80,"style":"国画","width":512,"height":512}
  19.     header={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36",
  20.         "Accept": "application/json",
  21.         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
  22.         "X-Requested-With": "XMLHttpRequest",
  23.         "token":token}
  24.     response=requests.post(url=u,json=param,headers=header)
  25.     print('AI正在绘画中...')
  26.     img_json=json.loads(response.text)
  27.     img=img_json['data']
  28.     img=base64.b64decode(img)
  29.     imgstring = np.array(img).tobytes()
  30.     imgstring = np.asarray(bytearray(imgstring), dtype="uint8")
  31.     image = cv2.imdecode(imgstring, cv2.IMREAD_COLOR)
  32.     mylist = range(0,30)
  33.     with alive_bar(len(mylist)) as bar:
  34.         for i in mylist:
  35.             bar()
  36.             time.sleep(0.5)
  37.     print('绘制完成')
  38.     cv2.imshow('result',image)
  39.     cv2.waitKey(0)
  40.     cv2.destroyAllWindows()
复制代码

行空板语音AI绘画图8
【行空板AI绘画测试】
使用行空板上的A键开启录音,B键启动AI绘画并在屏幕上显示。
行空板语音AI绘画图3

(提示词:奔腾的俊马)

行空板语音AI绘画图11

(提示词:可爱的兔子)^_^

行空板语音AI绘画图12

(提示词:海上日落)^_^


行空板语音AI绘画图9
测试演示视频

【行空板AI绘画】
装置按钮按下启动录音,再次按下启动AI绘画并在屏幕上显示。
行空板语音AI绘画图10
python代码:
  1. #  -*- coding: UTF-8 -*-
  2. # MindPlus
  3. # Python
  4. from pinpong.extension.unihiker import *
  5. import requests,json,base64,cv2,time
  6. from pinpong.board import Board,Pin
  7. from unihiker import Audio
  8. from unihiker import GUI
  9. import numpy as np
  10. import xunfeiasr
  11. import math
  12. import cv2
  13. u_gui=GUI()
  14. Board().begin()
  15. u_audio = Audio()
  16. p_p21_in=Pin(Pin.P21, Pin.IN)
  17. xunfeiasr.xunfeiasr_set(APPID="d41ee990",APISecret="NmFkZjdhM2U3ZmU5ZmNlN2FjOGJmYjY4",APIKey="d551eafc91a585a49beabe7ad3644ca4")
  18. ShiBieNaRong = 0
  19. BiaoShi = 0
  20. AnNiuBiaoShi = 0
  21. 识别显示=u_gui.draw_text(text="行空板AI画",x=25,y=120,font_size=30, color="#0000FF")
  22. while True:
  23.     if (not (ShiBieNaRong == 0)):
  24.         if (BiaoShi == 1):
  25.             BiaoShi = 0
  26.             buzzer.play(buzzer.DADADADUM,buzzer.Once)
  27.     if (p_p21_in.read_digital()==True):
  28.         if (AnNiuBiaoShi == 0):
  29.             AnNiuBiaoShi = 1
  30.             u_gui.clear()
  31.             识别显示=u_gui.draw_text(text="正在录音……",x=15,y=120,font_size=30, color="#0000FF")
  32.             ShiBieNaRong = 0
  33.             u_audio.record("record.wav",4)
  34.             BiaoShi = 1
  35.             识别显示.config(text="正在识别……")
  36.             ShiBieNaRong = xunfeiasr.xunfeiasr(r"record.wav")
  37.             识别显示.config(text=ShiBieNaRong)
  38.     else:
  39.         if (AnNiuBiaoShi == 1):
  40.             AnNiuBiaoShi = 0
  41.             识别显示.config(text="AI绘画中...")
  42.             u="https://flagopen.baai.ac.cn/flagStudio/auth/getToken"
  43.             param={"apikey":"dc267e87afd46df5265544412f2ee40d"}
  44.             token_response=requests.get(url=u,params=param)
  45.             token_json=json.loads(token_response.text)
  46.             token=token_json['data']['token']
  47.             prompt = ShiBieNaRong
  48.             u = "https://flagopen.baai.ac.cn/flagStudio/v1/text2img"
  49.             param={"prompt":prompt,"steps":80,"style":"国画","width":512,"height":512}
  50.             header={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36","Accept": "application/json","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With": "XMLHttpRequest","token":token}
  51.             response=requests.post(url=u,json=param,headers=header)
  52.             img_json=json.loads(response.text)
  53.             img=img_json['data']
  54.             img=base64.b64decode(img)
  55.             imgstring = np.array(img).tobytes()
  56.             imgstring = np.asarray(bytearray(imgstring), dtype="uint8")
  57.             image = cv2.imdecode(imgstring, cv2.IMREAD_COLOR)
  58.             进度条=u_gui.fill_rect(x=0,y=200,w=0,h=30,color="#FF0000")
  59.             for my_variable in range(1, 11):
  60.                 进度条.config(w=(math.ceil((240 * (my_variable / 10)))))
  61.                 time.sleep(0.2)
  62.             进度条.remove()
  63.             image=cv2.resize(image,(240,320))
  64.             cv2.imwrite("img.png", image)
  65.             AI图=u_gui.draw_image(image="img.png",x=0,y=0)
复制代码
【演示视频】







创作许可协议

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

评论(14)
孙洪尧1985
孙洪尧1985
Handshake status 401 Unauthorized,大家运行时候有这样的报错吗
k神无双
k神无双
### error: [Errno -3] Temporary failure in name resolution 这样的域名错误如何解决?
7rDjLTJGYHa0
7rDjLTJGYHa0回复k神无双
这语音识别部分的错误提示
yahan0904
yahan0904
https://flagopen.baai.ac.cn注册获取apikey。怎么获取?
达拉斯
达拉斯
大佬,又出新作啦,太棒了。。。
DeadWalking
DeadWalking
学习云天老师!
付老师
付老师
老师您好,请问FlagStudio的apikey如何获取?我进去https://flagopen.baai.ac.cn网站,在apikey管理里面没有找到对应的模型
7rDjLTJGYHa0
7rDjLTJGYHa0回复付老师
这个问题你解决了吗?
ZZ小海鸥
ZZ小海鸥
太牛了
小小怪同学呀
小小怪同学呀
Traceback (most recent call last):
File "/root/mindplus/cache/新建项目-2023-8-3-21-27-57.mp/AI绘画.py", line 11, in
import xunfeiasr
ModuleNotFoundError: No module named 'xunfeiasr'
请问这样该怎么解决?
云天
云天
作者
回复小小怪同学呀
Mind+ python 模块 图形化下,运行
花生编程
花生编程
好棒的项目啊,赞!
花生编程
花生编程
厉害厉害
三春牛-创客
三春牛-创客
真的好智能,赞!
三春牛-创客
三春牛-创客
哇,厉害啊!!
rzegkly
rzegkly
每次读云天老师作品,收获满满
木子哦
木子哦
大佬,又出新作啦!!
云天
云天
作者
回复木子哦
评论内容
- 没有更多了 -