大家新年快樂(lè),事業(yè)生活蒸蒸日上,解封的第一個(gè)年,想必大家都回家過(guò)年,好好陪陪家人了吧,這篇文章也是我在老家碼的,還記得上篇我?guī)Т蠹一玖私饬藈hisper,相信大家對(duì)whisper是什么,怎么安裝whisper,以及使用都有了一個(gè)認(rèn)識(shí),這次作為新年第一篇文章,我將介紹一下自己開(kāi)發(fā)的基于whisper+pyqt5做的一個(gè)字幕生成工具,還挺有意思的,中間也遇到各種問(wèn)題,然后解決。每次嘗試做什么,最爽莫過(guò)于遇到問(wèn)題,然后一一解決,最后成功的實(shí)現(xiàn)自己想要的,就算是一個(gè)再簡(jiǎn)單的項(xiàng)目,相信大家只要有成長(zhǎng)就會(huì)很滿足開(kāi)心吧。話不多說(shuō),直接進(jìn)入今天的主題,讓我們來(lái)看看這個(gè)工具。
- 外觀
首先讓我們來(lái)看看工具樣子如下圖所示,自我吐槽一下,界面挺丑的,不得不感嘆自己沒(méi)有界面審美,不過(guò)我已經(jīng)盡力了,哈哈,不過(guò)自我感覺(jué)看這個(gè)界面還是挺直觀的就能知道這個(gè)工具的作用,以及使用也很直接方便。主要有兩個(gè)模塊,如圖,1為選擇模塊,2為運(yùn)行結(jié)果顯示模塊。
?
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-428124.html
- 功能介紹
- 公共選擇部分
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-428124.html
?
如上圖紅色框所示,所有功能這幾個(gè)選擇框是公用的,文字應(yīng)該寫的也算清楚,簡(jiǎn)單介紹一下。
模型選擇:必選項(xiàng),選擇一個(gè)whisper模型。
語(yǔ)言選擇:必選項(xiàng),選擇一個(gè)要識(shí)別翻譯成哪種語(yǔ)言。
計(jì)算引擎選擇:非必選項(xiàng),不選默認(rèn)為cpu。
模型讀取保存路徑:非必選項(xiàng),不選默認(rèn)在應(yīng)用目錄下,如果事先下好模型,可以選擇對(duì)應(yīng)目錄,避免應(yīng)用第一次下載找不到模型從而下載模型。
輸出文件保存路徑:必選項(xiàng),選擇運(yùn)行生成文件的保存路徑。
結(jié)束按鈕:需要停止正在執(zhí)行的功能,可以點(diǎn)擊此按鈕。
?
- 功能部分
1.生成字幕文件:音頻文件或者視頻文件根據(jù)選擇的語(yǔ)言生成一個(gè)對(duì)應(yīng)語(yǔ)言的srt字幕文件,文件內(nèi)容為音頻文件或者視頻文件說(shuō)的內(nèi)容,效果如圖所示
?
2.視頻添加字幕:視頻文件根據(jù)選擇的語(yǔ)言自動(dòng)為視頻添加srt字幕,效果如圖所示
?
3.監(jiān)聽(tīng)聲音翻譯:監(jiān)聽(tīng)window的喇叭發(fā)出的聲音并且識(shí)別生成srt字幕文件,不過(guò)這個(gè)功能因?yàn)闆](méi)時(shí)間弄,暫時(shí)沒(méi)弄,后面有時(shí)間會(huì)加上,界面暫時(shí)如下圖所示
?
?
- 問(wèn)題以及總結(jié)
軟件已經(jīng)介紹完了,在開(kāi)發(fā)過(guò)程中其實(shí)遇到了很多坑,比如第一次使用pyqt5,跟主要功能模塊的信息傳遞,以及使用pyinstaller打包成應(yīng)用的時(shí)候會(huì)遇到很多坑,這里著重記錄下。
使用pyinstaller -D 主程序文件打包的時(shí)候,運(yùn)行會(huì)有一堆問(wèn)題,然后仔細(xì)看打包過(guò)程會(huì)有很多警告,有些包沒(méi)打進(jìn)去,需要在打包的時(shí)候把這些包使用--copy-metadata添加指定包的元數(shù)據(jù)進(jìn)來(lái),最后打包成功后,發(fā)現(xiàn)python的whisper模塊不在應(yīng)用里,可以將python目錄下的whisper復(fù)制到應(yīng)用目錄里,然后由于使用到了ffmpeg所以也需要把這個(gè)文件復(fù)制到應(yīng)用目錄中,才成功運(yùn)行,本以為萬(wàn)事大吉,但是這個(gè)應(yīng)用會(huì)自帶cmd窗口,于是在打包命令中添加-w參數(shù),但是又遇到到了挺多問(wèn)題這里主要記錄兩個(gè):
1.AttributeError: 'NoneType' object has no attribute 'flush'這個(gè)錯(cuò)誤,根據(jù)提示找到對(duì)應(yīng)python模塊sitr-packages/transformers/utils/logging.py的如下代碼段,修改如下圖所示
?
?
2.最后運(yùn)行應(yīng)用的時(shí)候下載模型會(huì)一直卡住,這是由于關(guān)閉了窗口,有些代碼使用了需要從cmd中獲取打印消息或者顯示到cmd的功能,所以這里排查到應(yīng)該是whisper下載模型的時(shí)候使用了tqdm來(lái)顯示進(jìn)度條導(dǎo)致的,所以到whisper的__init__.py文件中找到這段代碼將如下圖所示兩行代碼注釋掉即可。
?
?
最后再附上打包命令:
pyinstaller --upx-dir=C:\Users\xxx\Desktop\upx\upx-4.0.1-win64 -D -w pythoner_league_translate.py --copy-metadata tqdm --copy-metadata regex --copy-metadata tokenizers --copy-metadata numpy --copy-metadata regex --copy-metadata packaging --copy-metadata filelock --copy-metadata requests --copy-metadata whisper
其中upx地址,可以自己下載一個(gè)upx然后替換成你自己電腦路徑即可
忘記說(shuō)了whisper默認(rèn)的中文是繁體字,這里本人已經(jīng)把它轉(zhuǎn)換成簡(jiǎn)體了。
如果大家有興趣想玩玩,應(yīng)用我已經(jīng)幫大家打包好了,可以直接使用,代碼也有,下面是各個(gè)下載地址:
應(yīng)用模型下載地址(現(xiàn)在只打包了exe應(yīng)用,如后續(xù)有需要可以打包mac應(yīng)用):
鏈接:https://pan.baidu.com/s/1nj174s3tyHUAsazi4tHW0g
提取碼:3ugi
代碼gihub地址:https://github.com/PythonerLeague/PythonerLeague_translate
最后有問(wèn)題可以留言或者關(guān)注PythonerLeague公眾號(hào)進(jìn)行溝通,這次分享就到這里了,最后再祝大家新年開(kāi)開(kāi)心心,有時(shí)間記得多陪陪家人。
?
?
?
?
?
?
?
到了這里,關(guān)于whisper實(shí)踐--基于whisper+pyqt5開(kāi)發(fā)的語(yǔ)音識(shí)別翻譯生成字幕工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!