語音合成學(xué)習(xí)(三)學(xué)習(xí)筆記
Gradio--搭建可視化演示環(huán)境
一、介紹
簡介
Gradio定位是快速構(gòu)建一個針對人工智能的python的webApp庫,在Hugging Face等提供各種模型推理展示的平臺廣告使用,阿里的魔塔展示也是基于此。
大家思考下,Gradio作為一款python庫,底層邏輯是什么?
- 結(jié)果:Gradio展示的還是web元素
- 過程:所以Gradio是即懂python又懂web開發(fā)(css/js/html)的開發(fā)者,通過python對這些web技術(shù)做了封裝
- pipline:python語言--> css/js/html
Gradio是MIT的開源項目。
使用gradio,只需在原有的代碼中增加幾行,就能自動化生成交互式web頁面,并支持多種輸入輸出格式,比如圖像分類中的圖>>標(biāo)簽,超分辨率中的圖>>圖等。
同時還支持生成能外部網(wǎng)絡(luò)訪問的鏈接,能夠迅速讓你的朋友,同事體驗?zāi)愕乃惴ā?/p>
總結(jié)起來,它的優(yōu)勢有:
- 自動生成頁面且可交互
- 改動幾行代碼就能完成
- 支持自定義多種輸入輸出
- 支持生成可外部訪問的鏈接進行分享
目前已經(jīng)有很多優(yōu)秀的開源項目使用Gradio做demo頁面。那么該怎么使用Gradio,讓我們一起來玩玩~
二 Get start
0.安裝Gradio
pip install gradio 或
為了更快安裝,可以使用清華鏡像源。
pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple
1.寫個簡單的例子
# 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")
# 啟動
# python web.py
# Running on local URL: http://0.0.0.0:7860
# To create a public link, set `share=True` in `launch()`

上面的代碼就是簡單一個webApp,功能是輸入一個文本,輸出一個文本。代碼中關(guān)鍵點:
- 導(dǎo)入包
import gradio as gr - gr.Interface 構(gòu)建一個app, 確定輸入inputs和輸出outputs的類型,已經(jīng)處理輸入inputs的函數(shù)(這個函數(shù)返回一個outputs的類型)
- 提供一個app的功能模塊函數(shù)
- launch 啟動一個web容器,對外提供服務(wù)
梳理下web渲染流程
- 根據(jù)輸入輸出類型(如text)封裝html組件(with css樣式,布局等)
- 點擊submit:通過js獲取輸入的值傳遞(ajax)給后臺處理函數(shù)(greet),通過js回調(diào)函數(shù)接收函數(shù)的返回值,然后通過js賦值給html元素
上面只是介紹了Gradio的簡單的使用,Gradio提供了豐富的html組件,如文本框,圖像,視頻,下拉框,單選框等等。
核心參數(shù)
gradio的核心是它的gr.Interface函數(shù),用來構(gòu)建可視化界面。inputs和outputs都是可以多個,Gradio根據(jù)類型展示相應(yīng)的組件
- fn:放你用來處理的函數(shù)
- inputs:寫你的輸入類型,這里輸入的是圖像,所以是"image"
- outputs:寫你的輸出類型,這里輸出的是圖像,所以是"image"
最后我們用interface.lauch()把頁面一發(fā)布,一個本地靜態(tài)交互頁面就完成了!另外,可以通過.launch(share=True)來分享功能,這個功能可以生成一個域名,可以在外部直接訪問。
interface.launch(inbrowser=True, inline=False, validate=False, share=True)
inbrowser- 模型是否應(yīng)在新的瀏覽器窗口中啟動。
inline- 模型是否應(yīng)該嵌入在交互式python環(huán)境中(如jupyter notebooks或colab notebooks)。
validate- gradio是否應(yīng)該在啟動之前嘗試驗證接口模型兼容性。
share- 是否應(yīng)創(chuàng)建共享模型的公共鏈接。
2. 本人模擬了一個輸入文本轉(zhuǎn)換語音的例子
輸入文本輸出了指定的使用訓(xùn)練好的模型

三 gradio依賴包的版本
踩坑記錄
安裝的gradio 是3.0版本 當(dāng)前環(huán)境 tensorflow 1.9.0 ,執(zhí)行時候報錯

原來是相互依賴,需要升級numpy的版本(當(dāng)前訓(xùn)練模型合成語音的項目環(huán)境需要numpy ==1.14.0)。于是,查一下版本不匹配為了不影響訓(xùn)練合成功能,進行g(shù)radio降級 => 安裝gradio2.0版本,搭建webUI界面顯示了,重新執(zhí)行了文件, 但是出現(xiàn)了語音無法合成,排查許久才發(fā)現(xiàn),自動把numpy升級了。針對合成和執(zhí)行實現(xiàn)web不能同時實現(xiàn)的問題:
<u>最終解決是通過多個包和版本一起指定</u>安裝 完美解決 (gradio和numpy 有依賴關(guān)系)
以上主要是對如何使用gradio的簡單介紹,也是用的較多的搭建可視化組件。