云天 发表于 2023-7-31 16:37:44

行空板语音AI绘画

本帖最后由 云天 于 2023-7-31 16:46 编辑

【项目背景】今年火爆全网的是通过文本描述生成绘画的形式,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图


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



(提示词:梅 兰 竹 菊)

【语音识别】
注册“讯飞开放平台”,在”控制台“获取:APPID、APISecret、APIKey。

加载讯飞语音识别扩展


利用Mind+软件Python模式编写程序:

测试视频
https://www.bilibili.com/video/BV1Rh4y1c77g/?share_source=copy_web&vd_source=98855d5b99ff76982639c5ca6ff6f528
【AI绘画电脑版】
Mind+ Python模式——代码FlagStudio是智源研究院应用文生图,文生音乐等人工智能模型支持艺术创作相关的开源项目集合,利用图文、声文等多模态模型,依托研究院在NLP和CV领域大模型的研究基础,为艺术创作提供更加符合中文场景的人工智能开源算法和模型,使创作效率更加高效,创作空间更加开阔,创作成果更加细腻。当前主要提供文生图相关的能力。https://flagopen.baai.ac.cn注册获取apikey。


#导入相关库
import requests
import json
import base64
import cv2
import numpy as np
from alive_progress import alive_bar
import time

while True:
    u="https://flagopen.baai.ac.cn/flagStudio/auth/getToken"
    param={"apikey":"aee3672220ec348b3b3dfaa7956a8282"}
    token_response=requests.get(url=u,params=param)
    token_json=json.loads(token_response.text)
    token=token_json['data']['token']

#调用api
    u = "https://flagopen.baai.ac.cn/flagStudio/v1/text2img"
    prompt=input("请输入你的创意:")
    param={"prompt":prompt,"steps":80,"style":"国画","width":512,"height":512}
    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}
    response=requests.post(url=u,json=param,headers=header)
    print('AI正在绘画中...')

    img_json=json.loads(response.text)
    img=img_json['data']
    img=base64.b64decode(img)


    imgstring = np.array(img).tobytes()
    imgstring = np.asarray(bytearray(imgstring), dtype="uint8")
    image = cv2.imdecode(imgstring, cv2.IMREAD_COLOR)
    mylist = range(0,30)
    with alive_bar(len(mylist)) as bar:
      for i in mylist:
            bar()
            time.sleep(0.5)
    print('绘制完成')
    cv2.imshow('result',image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


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

(提示词:奔腾的俊马)

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

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


测试演示视频
https://www.bilibili.com/video/BV1CM4y1H7E5/?share_source=copy_web&vd_source=98855d5b99ff76982639c5ca6ff6f528
【行空板AI绘画】
装置按钮按下启动录音,再次按下启动AI绘画并在屏幕上显示。

python代码:

#-*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.extension.unihiker import *
import requests,json,base64,cv2,time
from pinpong.board import Board,Pin
from unihiker import Audio
from unihiker import GUI
import numpy as np
import xunfeiasr
import math
import cv2


u_gui=GUI()
Board().begin()
u_audio = Audio()
p_p21_in=Pin(Pin.P21, Pin.IN)
xunfeiasr.xunfeiasr_set(APPID="d41ee990",APISecret="NmFkZjdhM2U3ZmU5ZmNlN2FjOGJmYjY4",APIKey="d551eafc91a585a49beabe7ad3644ca4")
ShiBieNaRong = 0
BiaoShi = 0
AnNiuBiaoShi = 0
识别显示=u_gui.draw_text(text="行空板AI画",x=25,y=120,font_size=30, color="#0000FF")

while True:
    if (not (ShiBieNaRong == 0)):
      if (BiaoShi == 1):
            BiaoShi = 0
            buzzer.play(buzzer.DADADADUM,buzzer.Once)
    if (p_p21_in.read_digital()==True):
      if (AnNiuBiaoShi == 0):
            AnNiuBiaoShi = 1
            u_gui.clear()
            识别显示=u_gui.draw_text(text="正在录音……",x=15,y=120,font_size=30, color="#0000FF")
            ShiBieNaRong = 0
            u_audio.record("record.wav",4)
            BiaoShi = 1
            识别显示.config(text="正在识别……")
            ShiBieNaRong = xunfeiasr.xunfeiasr(r"record.wav")
            识别显示.config(text=ShiBieNaRong)
    else:
      if (AnNiuBiaoShi == 1):
            AnNiuBiaoShi = 0
            识别显示.config(text="AI绘画中...")
            u="https://flagopen.baai.ac.cn/flagStudio/auth/getToken"
            param={"apikey":"dc267e87afd46df5265544412f2ee40d"}
            token_response=requests.get(url=u,params=param)
            token_json=json.loads(token_response.text)
            token=token_json['data']['token']
            prompt = ShiBieNaRong
            u = "https://flagopen.baai.ac.cn/flagStudio/v1/text2img"
            param={"prompt":prompt,"steps":80,"style":"国画","width":512,"height":512}
            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}
            response=requests.post(url=u,json=param,headers=header)
            img_json=json.loads(response.text)
            img=img_json['data']
            img=base64.b64decode(img)
            imgstring = np.array(img).tobytes()
            imgstring = np.asarray(bytearray(imgstring), dtype="uint8")
            image = cv2.imdecode(imgstring, cv2.IMREAD_COLOR)
            进度条=u_gui.fill_rect(x=0,y=200,w=0,h=30,color="#FF0000")
            for my_variable in range(1, 11):
                进度条.config(w=(math.ceil((240 * (my_variable / 10)))))
                time.sleep(0.2)
            进度条.remove()
            image=cv2.resize(image,(240,320))
            cv2.imwrite("img.png", image)
            AI图=u_gui.draw_image(image="img.png",x=0,y=0)


【演示视频】
https://www.bilibili.com/video/BV1Hx4y1X7CX/?share_source=copy_web&vd_source=98855d5b99ff76982639c5ca6ff6f528






木子呢 发表于 2023-7-31 18:55:36

大佬,又出新作啦!!

云天 发表于 2023-7-31 21:37:27

木子呢 发表于 2023-7-31 18:55
大佬,又出新作啦!!

{:6_202:}

rzegkly 发表于 2023-8-1 16:48:42

每次读云天老师作品,收获满满{:5_116:}

三春牛-创客 发表于 2023-8-1 22:27:56

哇,厉害啊!!{:6_215:}{:6_215:}

三春牛-创客 发表于 2023-8-1 22:29:43

真的好智能,赞!

花生编程 发表于 2023-8-2 23:14:19

厉害厉害

花生编程 发表于 2023-8-2 23:15:22

好棒的项目啊,赞!

小小怪同学呀 发表于 2023-8-3 22:15:38

Traceback (most recent call last):
File "/root/mindplus/cache/新建项目-2023-8-3-21-27-57.mp/AI绘画.py", line 11, in <module>
    import xunfeiasr
ModuleNotFoundError: No module named 'xunfeiasr'

请问这样该怎么解决?

ZZ小海鸥 发表于 2023-8-4 09:03:23

太牛了

云天 发表于 2023-8-5 16:21:47

小小怪同学呀 发表于 2023-8-3 22:15
Traceback (most recent call last):
File "/root/mindplus/cache/新建项目-2023-8-3-21-27-57.mp/AI绘画 ...

Mind+ python 模块 图形化下,运行

付老师 发表于 2023-10-18 12:16:40

老师您好,请问FlagStudio的apikey如何获取?我进去https://flagopen.baai.ac.cn网站,在apikey管理里面没有找到对应的模型

DeadWalking 发表于 2024-1-10 13:15:29

学习云天老师!

达拉斯 发表于 2024-3-8 15:32:09

大佬,又出新作啦,太棒了。。。

DFBJeEqYNRj 发表于 2024-3-14 20:16:04

https://flagopen.baai.ac.cn注册获取apikey。怎么获取?

k神无双 发表于 2024-4-4 21:31:19

### error: Temporary failure in name resolution   这样的域名错误如何解决?

孙洪尧1985 发表于 2024-5-19 14:48:31

Handshake status 401 Unauthorized,大家运行时候有这样的报错吗

7rDjLTJGYHa0 发表于 2024-6-4 21:10:12

付老师 发表于 2023-10-18 12:16
老师您好,请问FlagStudio的apikey如何获取?我进去https://flagopen.baai.ac.cn网站,在apikey管理里面没 ...

这个问题你解决了吗?

7rDjLTJGYHa0 发表于 2024-6-4 21:11:58

k神无双 发表于 2024-4-4 21:31
### error: Temporary failure in name resolution   这样的域名错误如何解决?

这语音识别部分的错误提示
页: [1]
查看完整版本: 行空板语音AI绘画