語(yǔ)音合成學(xué)習(xí)(三)學(xué)習(xí)筆記
Gradio--搭建可視化演示環(huán)境
一柬讨、介紹
簡(jiǎn)介
Gradio定位是快速構(gòu)建一個(gè)針對(duì)人工智能的python的webApp庫(kù)削葱,在Hugging Face等提供各種模型推理展示的平臺(tái)廣告使用,阿里的魔塔展示也是基于此开财。
大家思考下眶拉,Gradio作為一款python庫(kù),底層邏輯是什么鸯旁?
- 結(jié)果:Gradio展示的還是web元素
- 過(guò)程:所以Gradio是即懂python又懂web開(kāi)發(fā)(css/js/html)的開(kāi)發(fā)者,通過(guò)python對(duì)這些web技術(shù)做了封裝
- pipline:python語(yǔ)言--> css/js/html
Gradio是MIT的開(kāi)源項(xiàng)目量蕊。
使用gradio铺罢,只需在原有的代碼中增加幾行,就能自動(dòng)化生成交互式web頁(yè)面残炮,并支持多種輸入輸出格式韭赘,比如圖像分類(lèi)中的圖>>標(biāo)簽,超分辨率中的圖>>圖等势就。
同時(shí)還支持生成能外部網(wǎng)絡(luò)訪問(wèn)的鏈接泉瞻,能夠迅速讓你的朋友,同事體驗(yàn)?zāi)愕乃惴ā?/p>
總結(jié)起來(lái)蛋勺,它的優(yōu)勢(shì)有:
- 自動(dòng)生成頁(yè)面且可交互
- 改動(dòng)幾行代碼就能完成
- 支持自定義多種輸入輸出
- 支持生成可外部訪問(wèn)的鏈接進(jìn)行分享
目前已經(jīng)有很多優(yōu)秀的開(kāi)源項(xiàng)目使用Gradio做demo頁(yè)面瓦灶。那么該怎么使用Gradio,讓我們一起來(lái)玩玩~
二 Get start
0.安裝Gradio
pip install gradio 或
為了更快安裝抱完,可以使用清華鏡像源贼陶。
pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple
1.寫(xiě)個(gè)簡(jiǎn)單的例子
# app.py
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch(server_name="0.0.0.0")
# 啟動(dòng)
# python web.py
# Running on local URL: http://0.0.0.0:7860
# To create a public link, set `share=True` in `launch()`
上面的代碼就是簡(jiǎn)單一個(gè)webApp,功能是輸入一個(gè)文本巧娱,輸出一個(gè)文本碉怔。代碼中關(guān)鍵點(diǎn):
- 導(dǎo)入包
import gradio as gr
- gr.Interface 構(gòu)建一個(gè)app, 確定輸入inputs和輸出outputs的類(lèi)型禁添,已經(jīng)處理輸入inputs的函數(shù)(這個(gè)函數(shù)返回一個(gè)outputs的類(lèi)型)
- 提供一個(gè)app的功能模塊函數(shù)
- launch 啟動(dòng)一個(gè)web容器撮胧,對(duì)外提供服務(wù)
梳理下web渲染流程
- 根據(jù)輸入輸出類(lèi)型(如text)封裝html組件(with css樣式,布局等)
- 點(diǎn)擊submit:通過(guò)js獲取輸入的值傳遞(ajax)給后臺(tái)處理函數(shù)(greet)老翘,通過(guò)js回調(diào)函數(shù)接收函數(shù)的返回值芹啥,然后通過(guò)js賦值給html元素
上面只是介紹了Gradio的簡(jiǎn)單的使用,Gradio提供了豐富的html組件铺峭,如文本框墓怀,圖像,視頻卫键,下拉框傀履,單選框等等。
核心參數(shù)
gradio的核心是它的gr.Interface
函數(shù)莉炉,用來(lái)構(gòu)建可視化界面钓账。inputs和outputs都是可以多個(gè)碴犬,Gradio根據(jù)類(lèi)型展示相應(yīng)的組件
- fn:放你用來(lái)處理的函數(shù)
- inputs:寫(xiě)你的輸入類(lèi)型,這里輸入的是圖像梆暮,所以是"image"
- outputs:寫(xiě)你的輸出類(lèi)型服协,這里輸出的是圖像,所以是"image"
最后我們用interface.lauch()
把頁(yè)面一發(fā)布啦粹,一個(gè)本地靜態(tài)交互頁(yè)面就完成了蚯涮!另外,可以通過(guò).launch(share=True)
來(lái)分享功能卖陵,這個(gè)功能可以生成一個(gè)域名,可以在外部直接訪問(wèn)张峰。
interface.launch(inbrowser=True, inline=False, validate=False, share=True)
inbrowser
- 模型是否應(yīng)在新的瀏覽器窗口中啟動(dòng)泪蔫。
inline
- 模型是否應(yīng)該嵌入在交互式python環(huán)境中(如jupyter notebooks或colab notebooks)。
validate
- gradio是否應(yīng)該在啟動(dòng)之前嘗試驗(yàn)證接口模型兼容性喘批。
share
- 是否應(yīng)創(chuàng)建共享模型的公共鏈接撩荣。
2. 本人模擬了一個(gè)輸入文本轉(zhuǎn)換語(yǔ)音的例子
輸入文本輸出了指定的使用訓(xùn)練好的模型
三 gradio依賴包的版本
踩坑記錄
安裝的gradio 是3.0版本 當(dāng)前環(huán)境 tensorflow 1.9.0 ,執(zhí)行時(shí)候報(bào)錯(cuò)
原來(lái)是相互依賴饶深,需要升級(jí)numpy的版本(當(dāng)前訓(xùn)練模型合成語(yǔ)音的項(xiàng)目環(huán)境需要numpy ==1.14.0)餐曹。于是,查一下版本不匹配為了不影響訓(xùn)練合成功能敌厘,進(jìn)行g(shù)radio降級(jí) => 安裝gradio2.0版本台猴,搭建webUI界面顯示了,重新執(zhí)行了文件俱两, 但是出現(xiàn)了語(yǔ)音無(wú)法合成饱狂,排查許久才發(fā)現(xiàn),自動(dòng)把numpy升級(jí)了宪彩。針對(duì)合成和執(zhí)行實(shí)現(xiàn)web不能同時(shí)實(shí)現(xiàn)的問(wèn)題:
<u>最終解決是通過(guò)多個(gè)包和版本一起指定</u>安裝 完美解決 (gradio和numpy 有依賴關(guān)系)
以上主要是對(duì)如何使用gradio的簡(jiǎn)單介紹休讳,也是用的較多的搭建可視化組件。