7087浏览
查看: 7087|回复: 7

[项目] 行空板AI绘画——腾讯版

[复制链接]
本帖最后由 云天 于 2024-1-6 15:44 编辑

【项目背景】
2023 年,大模型的落地按下加速键,文生图便是最火热的应用方向之一。自从 Stable Diffusion 诞生以来,海内外的文生图大模型不断涌现,一时有「神仙打架」之感。每一次技术迭代,都带来了模型生成效果和速度的飞速提升。文生图是AIGC领域的核心技术之一,也是体现通用大模型能力的试金石,对模型算法、训练平台、算力设施都有较高的要求。
【项目设计】
今天,作者使用Mind+行空板试用腾讯文成图功能。
【项目亮点】
1.使用讯飞语音识别,设置绘画风格及提示词
2.可设置AI绘画的风格如:
  1. FengGeZiDian = {"不限定风格":"000","水墨画":"101","概念艺术":"102","油画一":"103","油画二":"118","水彩画":"104","像素画":"105","厚涂风格":"106","插图":"107","剪纸风格":"108","印象派1":"109","印象派2":"119","古典肖像画":"111","黑白素描画":"112","赛博朋克":"113","科幻风格":"114","暗黑风格":"115","3D风格":"116","蒸汽波":"117","日系动漫":"201","怪兽风格":"202","唯美古风":"203","复古动漫":"204","游戏卡通手绘":"301","通用写实风格":"401"}
复制代码
3.使用音量大小判断,决定是否录音进行识别。
【项目效果图】
在《泊船瓜洲》这首诗中,「春风又绿江南岸,明月何时照我还」,写出了无数游子的乡愁。分别用这两句使用“油画风格”、“通用写实风格”进行效果测试。由于手机的拍摄效果不佳,配合使用截屏展示。
行空板AI绘画——腾讯版图5


油画风格:春风又绿江南岸
行空板AI绘画——腾讯版图1

油画风格:明月何时照我还
行空板AI绘画——腾讯版图4

通用写实风格:春风又绿江南岸
行空板AI绘画——腾讯版图2

通用写实风格:明月何时照我还
行空板AI绘画——腾讯版图3


【程序编写:音量大小判定——录音】
编写自定义模块listening.py,使用pyaudio库、wave库、numpy库。最小声音阈值设置为500(可根据实际场景的背景噪声设置),当大于此阈值时,开始录音。当小于此阈值超过1.3秒时,停止录音。
  1. import pyaudio,wave
  2. import numpy as np
  3. def listen():
  4.     temp = 20
  5.     CHUNK = 1024
  6.     FORMAT = pyaudio.paInt16
  7.     CHANNELS = 1
  8.     RATE = 16000
  9.     RECORD_SECONDS = 2
  10.     WAVE_OUTPUT_FILENAME = 'record.wav'
  11.     mindb=500    #最小声音,大于则开始录音,否则结束
  12.     delayTime=1.3  #小声1.3秒后自动终止
  13.     p = pyaudio.PyAudio()
  14.     stream = p.open(format=FORMAT,
  15.                     channels=CHANNELS,
  16.                     rate=RATE,
  17.                     input=True,
  18.                     frames_per_buffer=CHUNK)
  19.     #snowboydecoder.play_audio_file()
  20.     print("开始!计时")
  21.     frames = []
  22.     flag = False            # 开始录音节点
  23.     stat = True                                #判断是否继续录音
  24.     stat2 = False                        #判断声音小了
  25.     tempnum = 0                                #tempnum、tempnum2、tempnum3为时间
  26.     tempnum2 = 0
  27.     while stat:
  28.         data = stream.read(CHUNK,exception_on_overflow = False)
  29.         
  30.         audio_data = np.frombuffer(data, dtype=np.short)
  31.         temp = np.max(audio_data)
  32.         if temp > mindb and flag==False:
  33.             flag =True
  34.             print("开始录音")
  35.             tempnum2=tempnum
  36.         if flag:
  37.             frames.append(data)
  38.             if(temp < mindb and stat2==False):
  39.                 stat2 = True
  40.                 tempnum2 = tempnum
  41.                 print("声音小,且之前是是大的或刚开始,记录当前点")
  42.             if(temp > mindb):
  43.                 stat2 =False
  44.                 tempnum2 = tempnum
  45.                 #刷新
  46.             if(tempnum > tempnum2 + delayTime*15 and stat2==True):
  47.                 print("间隔%.2lfs后开始检测是否还是小声"%delayTime)
  48.                 if(stat2 and temp < mindb):
  49.                     stat = False
  50.                     #还是小声,则stat=True
  51.                     print("小声!")
  52.                 else:
  53.                     stat2 = False
  54.                     print("大声!")
  55.         print(str(temp)  +  "      " +  str(tempnum))
  56.         tempnum = tempnum + 1
  57.         if tempnum > 3600:
  58.             tempnum=0                        #超时直接退出
  59.             #stat = False
  60.     print("录音结束")
  61.     stream.stop_stream()
  62.     stream.close()
  63.     p.terminate()
  64.     wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
  65.     wf.setnchannels(CHANNELS)
  66.     wf.setsampwidth(p.get_sample_size(FORMAT))
  67.     wf.setframerate(RATE)
  68.     wf.writeframes(b''.join(frames))
  69.     wf.close()
复制代码
【程序编写——Mind+图形化编程】
1.Mind+库管理安装tencentcloud库。
2.扩展——用户库增加 base64和讯飞语音。
行空板AI绘画——腾讯版图7

2.代码tencentcloud初始化
行空板AI绘画——腾讯版图6

3.风格字典初始化
行空板AI绘画——腾讯版图8

4.导入自定义音量侦听模块文件,初始化语音识别,行空板屏幕开机显示

行空板AI绘画——腾讯版图9

5、设置绘画风格
行空板AI绘画——腾讯版图10

6、设置提示词
行空板AI绘画——腾讯版图11

7.向腾讯云平台发送提示词及绘画风格(默认为日漫风格)进行AI绘画,并将结果在行空板屏幕上显示。
行空板AI绘画——腾讯版图12

【Python代码】
  1. #  -*- coding: UTF-8 -*-
  2. # MindPlus
  3. # Python
  4. from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
  5. from tencentcloud.common.profile.client_profile import ClientProfile
  6. from tencentcloud.common.profile.http_profile import HttpProfile
  7. from tencentcloud.aiart.v20221229 import aiart_client, models
  8. from tencentcloud.common import credential
  9. from pinpong.extension.unihiker import *
  10. import requests,json,base64,cv2,time
  11. from pinpong.board import Board,Pin
  12. from unihiker import GUI
  13. import numpy as np
  14. import listening
  15. import xunfeiasr
  16. import time
  17. import cv2
  18. # 自定义函数
  19. def AIPingTaiChuShiHua():
  20.     global client
  21.     SecretId="AKID1qePFETUPGyUmtBHH4e5TgokW9e3UsSu"
  22.     SecretKey="a5RgkeQ7ikecr55542vStP5pRwJWimhY"
  23.     cred = credential.Credential(SecretId, SecretKey)
  24.     httpProfile = HttpProfile()
  25.     httpProfile.endpoint = "aiart.tencentcloudapi.com"
  26.     clientProfile = ClientProfile()
  27.     clientProfile.httpProfile = httpProfile
  28.     client = aiart_client.AiartClient(cred, "ap-shanghai", clientProfile)
  29. def FengGeZiDianChuShiHua():
  30.     global FengGeZiDian
  31.     FengGeZiDian = {"不限定风格":"000","水墨画":"101","概念艺术":"102","油画一":"103","油画二":"118","水彩画":"104","像素画":"105","厚涂风格":"106","插图":"107","剪纸风格":"108","印象派1":"109","印象派2":"119","古典肖像画":"111","黑白素描画":"112","赛博朋克":"113","科幻风格":"114","暗黑风格":"115","3D风格":"116","蒸汽波":"117","日系动漫":"201","怪兽风格":"202","唯美古风":"203","复古动漫":"204","游戏卡通手绘":"301","通用写实风格":"401"}
  32. u_gui=GUI()
  33. Board().begin()
  34. AIPingTaiChuShiHua()
  35. FengGeZiDianChuShiHua()
  36. 标签=u_gui.draw_text(text="行空板",x=0,y=0,font_size=20, color="#0000FF")
  37. 识别显示=u_gui.draw_text(text="行空板AI画",x=25,y=120,font_size=30, color="#0000FF")
  38. xunfeiasr.xunfeiasr_set(APPID="**********",APISecret="***************************",APIKey="***************************")
  39. ShiBieNaRong = 0
  40. BiaoShi = 0
  41. AnNiuBiaoShi = 0
  42. FengGe = "000"
  43. time.sleep(5)
  44. 识别显示.config(font_size=20)
  45. 识别显示.config(x=5)
  46. 识别显示.config(text="提示词或设置风格")
  47. while True:
  48.     if (not (ShiBieNaRong == 0)):
  49.         buzzer.play(buzzer.DADADADUM,buzzer.Once)
  50.     listening.listen()
  51.     u_gui.clear()
  52.     ShiBieNaRong = 0
  53.     识别显示=u_gui.draw_text(text="正在识别语音",x=15,y=120,font_size=25, color="#0000FF")
  54.     ShiBieNaRong = xunfeiasr.xunfeiasr(r"record.wav")
  55.     if ShiBieNaRong in FengGeZiDian:
  56.         标签=u_gui.draw_text(text="设置风格:",x=0,y=0,font_size=20, color="#FF0000")
  57.         FengGe = (FengGeZiDian[ShiBieNaRong])
  58.         BiaoShi = 0
  59.         识别显示.config(font_size=20)
  60.         识别显示.config(text=ShiBieNaRong)
  61.         time.sleep(2)
  62.         标签.config(text="设置提示词:")
  63.         识别显示.config(text="请说出提示词")
  64.     else:
  65.         标签=u_gui.draw_text(text="识别提示词结果:",x=0,y=0,font_size=20, color="#FF0000")
  66.         BiaoShi = 1
  67.         if (len("") < 7):
  68.             识别显示.config(font_size=20)
  69.         else:
  70.             识别显示.config(font_size=10)
  71.         识别显示.config(text=ShiBieNaRong)
  72.         time.sleep(2)
  73.     if (BiaoShi == 1):
  74.         if (not len(ShiBieNaRong)):
  75.             识别显示.config(font_size=20)
  76.             识别显示.config(text="识别内容为空")
  77.             识别显示.config(color="#FF0000")
  78.             time.sleep(3)
  79.             标签.config(text="设置提示词:")
  80.             识别显示.config(color="#0000FF")
  81.             识别显示.config(text="请说出提示词")
  82.         else:
  83.             标签.config(text="请等待:")
  84.             识别显示.config(font_size=20)
  85.             识别显示.config(text="AI绘画中...")
  86.             req = models.TextToImageRequest()
  87.             TiShiCi = ShiBieNaRong
  88.             params = {"Prompt":ShiBieNaRong, "Styles": [ FengGe ], "ResultConfig": {"Resolution": "1024:768"}}
  89.             req.from_json_string(json.dumps(params))
  90.             resp = client.TextToImage(req)
  91.             image_base64 = resp.ResultImage
  92.             image_data = base64.b64decode(image_base64)
  93.             np_array=np.frombuffer(image_data,np.uint8)
  94.             image=cv2.imdecode(np_array,cv2.IMREAD_COLOR)
  95.             image=cv2.resize(image,(240,320))
  96.             cv2.imwrite("img.png", image)
  97.             AI图=u_gui.draw_image(image="img.png",x=0,y=0)
复制代码
【演示视频】





IMG_20240106_143200.jpg

aYYSW8AepLLd  高级技师

发表于 2024-1-7 16:16:47

大神又出新作了
回复

使用道具 举报

_深蓝_  中级技师 来自手机

发表于 2024-1-9 09:10:30

云天出品,必是精品。
请教大佬,我使用手机来查看该篇文章。在Python

代码下面出现了以下的代码。
p
h1-em- coding: UTF-8 -em-h1
h1MindPlush1
h1Pythonh1
...
xunfeiasr.xunfeiasr_set(APPID="strongstrong**strongstrong",APISecret="strongstrongstrongstrongstrongstrongstrongstrongstrongstrongstrongstrongstrongem",APIKey="emstrongstrongstrongstrongstrongstrongstrongstrongstrongstrongstrongstrongstrong")

而这些代码不符合Python的规则。
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2024-1-9 13:51:51

  1. xunfeiasr.xunfeiasr_set(APPID="**********",APISecret="***************************",APIKey="***************************")
复制代码
回复

使用道具 举报

firevin  学徒

发表于 2024-2-10 22:14:34

本帖最后由 firevin 于 2024-2-10 22:41 编辑
编写程序后,在连接行空板后,运行报错“ModuleNotFoundError: No module named 'tencentcloud'”,但我已经在mind+的库管理中添加了tencent-sdk-python,并检查过,在“C:\Users\userv\Documents\mindplus-py\environment\Python3.8.5-64\Lib\site-packages”下有“tencent”文件夹。请问如何解决?
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2024-2-12 16:13:21

firevin 发表于 2024-2-10 22:14
编写程序后,在连接行空板后,运行报错“ModuleNotFoundError: No module named 'tencentcloud'”,但我已 ...

连接行空板后,如何运行的?上传程序到行空板上运行程序,还是在Mind+中运行的行空板上的临时程序?我不知道我表达清楚没有?行空板上是否安装库?
回复

使用道具 举报

达拉斯  高级技师

发表于 2024-2-28 18:33:36

运行报错“ModuleNotFoundError: No module named 'tencentcloud'”
回复

使用道具 举报

国斌  见习技师

发表于 2024-3-24 16:10:55

运行报错  ModuleNotFoundError: No module named 'listening'
请问这是少了什么库呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail