主頁 >  其他 > 批量生成,本地推理,人工智能聲音克隆框架PaddleSpeech本地批量克隆實踐(Python3.10)

批量生成,本地推理,人工智能聲音克隆框架PaddleSpeech本地批量克隆實踐(Python3.10)

2023-06-16 07:54:11 其他

云端煉丹固然是極好的,但不能否認的是,成本要比本地高得多,同時考慮到深度學習的訓練相對于推理來說成本也更高,這主要是因為它需要大量的資料、計算資源和時間等資源,并且對超引數的調整也要求較高,更適合在云端進行,

在推理階段,模型的權重和引數不再調整,相反,模型根據輸入資料的特征進行計算,并輸出預測結果,推理階段通常需要較少的計算資源和時間,所以訓練我們可以放在云端,而批量推理環節完全可以挪到本地,這樣更適合批量的聲音克隆場景,

本地配置PaddleSpeech

首先需要在本地安裝PaddlePaddle框架,關于PaddlePaddle的本地配置,請移步:聲音好聽,顏值能打,基于PaddleGAN給人工智能AI語音模型配上動態畫面(Python3.10),這里不再贅述,

安裝好PaddlePaddle之后,運行命令本地安裝PaddleSpeech:

pip3 install paddlespeech

由于paddlespeech的依賴庫中包括webrtcvad,如果本地環境沒有安裝過Microsoft Visual C++ 14.0,大概率會報這個錯誤:

building 'Crypto.Random.OSRNG.winrandom' extension  
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual  
C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

此時需要安裝一下Microsoft Visual C++ 14.0的開發者工具,最好不要使用微軟的線上安裝包,推薦使用離線安裝包,下載地址:

鏈接:https://pan.baidu.com/s/1VSRHAMuDkhzQo7nM4JihEA?pwd=or7x   
提取碼:or7x

安裝完C++ 14.0即可完成PaddleSpeech的安裝:

D:\work\speech\master_voice>python  
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32  
Type "help", "copyright", "credits" or "license" for more information.  
>>> import paddlespeech  
>>>

下載音色模型和聲碼器

音色模型就是之前我們在:聲音克隆,精致細膩,人工智能AI打造國師“一鏡到底”鬼畜視頻,基于PaddleSpeech(Python3.10)中訓練的國師的音色模型,下載地址:

鏈接:https://pan.baidu.com/s/1nKOPlI7P_u_a5UGdHX76fA?pwd=ygqp   
提取碼:ygqp

隨后下載聲碼器,這里推薦下載【PWGan】和【WaveRnn】兩款聲碼器,不推薦【HifiGan】,因為【HifiGan】的效果實在太糟糕,PWGan的效果差強人意,WaveRnn質量最高,但推理時間也最慢,

下載地址:

鏈接:https://pan.baidu.com/s/1KHIZS5CrydtANXm6CszdYQ?pwd=6lsk   
提取碼:6lsk

下載之后,分別解壓到同一個目錄即可,

本地推理

接下來我們就可以撰寫推理腳本了,

首先匯入需要的模塊:

from pathlib import Path  
import soundfile as sf  
import os  
from paddlespeech.t2s.exps.syn_utils import get_am_output  
from paddlespeech.t2s.exps.syn_utils import get_frontend  
from paddlespeech.t2s.exps.syn_utils import get_predictor  
from paddlespeech.t2s.exps.syn_utils import get_voc_output  
  
# 音色模型的路徑  
am_inference_dir = "./master"  
  
# 聲碼器的路徑  
voc_inference_dir_pwgan = "./pwgan"   
  
# 聲碼器的路徑  
voc_inference_dir_wavernn = "./wavernn"   
  
  
  
# 克隆音頻生成的路徑  
wav_output_dir = "./output"  
  
# 選擇設備[gpu / cpu],默認選擇gpu,   
device = "gpu"

這里定義好模型和聲碼器的路徑,同時定義輸出路徑,默認采用gpu進行推理,速度更快,

隨后定義后要語音生成的文本:

text_dict = {  
    "1": "我原來想拿中石油的offer",  
    "2": "是不是很大膽",  
    "3": "中石油",  
    "4": "國企天花板",  
    "5": "就是中石油",  
    "6": "出差可以逛太古里",  
    "7": "太爽了",  
    "8": "我最早準備面試的時候",  
    "9": "跟所有同學說的只面中石油",  
    "10": "所有的同學,包括親戚,朋友,他們所有人很興奮",  
    "11": "我女朋友也很興奮",  
    "12": "中石油",  
    "13": "一直說的是去中石油",  
    "14": "我一直在做去中石油的準備",  
    "15": "當時我面試的時候",  
    "16": "我說試用期只要20天",  
    "17": "或者只要25天",  
    "18": "兩周到三周",  
    "19": "hr說為什么?",  
    "20": "我說很簡單",  
    "21": "我每天飛四川",  
    "22": "單程兩個小時",  
    "23": "早上去一次",  
    "24": "晚上去一次",  
    "25": "每天去兩次",  
    "26": "我堅持10天",  
    "27": "20次",  
    "28": "就是20次",  
    "29": "成都太古里",  
    "30": "哇簡直太爽了",  
    "31": "逛街",  
    "32": "去10天就夠了",  
    "33": "然后前面的十天在北京",  
    "34": "上班",  
    "35": "嚴格地上班",  
    "36": "我說試用期只要二十天",  
    "37": "咱試用期就結束了",  
    "38": "哇hr說真的太厲害",  
    "39": "就挑戰性太大了",  
    "40": "一天都不能請假啊",  
    "41": "但是后來我還是放棄了,哈哈哈",  
  
  
    "42": "你知道為什么",  
    "43": "我研究了大量的員工去成都的案例",  
    "44": "嗯,也有一些基層員工",  
    "45": "還有尤其是最近一段時間一些比較大膽的行為",  
    "46": "就是牽手那個我也看了",  
    "47": "我專門看",  
    "48": "研究",  
    "49": "就一直,我就一直下不了決心",  
    "50": "其實我真的非常想去啊,內心深處非常想",  
    "51": "你知道最大問題是什么,當然這是一個專業問題,簡單地說最大問題就是街拍",  
    "52": "就是街拍",  
    "53": "因為你去了他就拍你啊",  
    "54": "就沒有辦法",  
    "55": "對一個員工",  
    "56": "對一個向往太古里的員工",  
    "57": "一個經常逛太古里的員工來說",  
    "58": "他給你來一個街拍",  
    "59": "全給你拍下來",  
    "60": "上傳抖音",  
    "61": "因為你不能蹭蹭蹭蹭",  
    "62": "逛的太快啊",  
    "63": "不能啊",  
    "64": "你從南邊到北邊",  
    "65": "你中間得逛啊",  
    "66": "就拍了",  
    "67": "就拍了",  
    "68": "第一是街拍避免不了",  
    "69": "無論怎么樣",  
    "70": "我想來想去",  
    "71": "因為我算個內行嘛",  
    "72": "我不去了,我就知道街拍跑不了",  
    "73": "街拍,避免不了",  
  
    "74": "第二個",  
    "75": "你的工資會全都損失了",  
    "76": "不是損失一半的工資,一半無所謂",  
    "77": "是全部的工資,獎金,績效,年終獎全都沒有了",  
    "78": "然后你還得停職",  
    "79": "就很尷尬啊",  
    "80": "這樣子就不好混了",  
    "81": "真的不好混了",  
    "82": "最后我差不多一個多月的思想斗爭",  
    "83": "那是個重大決定",  
    "84": "因為我都是按照去中石油準備的",  
    "85": "背面試題呢",  
    "86": "后來說放棄",  
    "87": "我自己決定放棄",  
    "88": "一個人做的決定,一個人的思考",  
    "89": "一個多月以后我放棄了,我第一個電話打給人力,我說我放棄去中石油,他,啊這,就不能接受",  
    "90": "他已經完全沉浸到去太古里當中去了,你知道吧",  
    "91": "就想著太好了,就喜歡的不得了",  
    "92": "怎么可能就過來說服我",  
    "93": "我說你不用跟我說",  
    "94": "你都不太清楚",  
    "95": "反正去中石油",  
    "96": "說怎么可能,你能做到,就開始給我忽悠",  
    "97": "我放棄了",  
    "98": "然后我跟女朋友說放棄",  
    "99": "哎呀,她說她把包包裙子都買了,這那的",  
    "100": "所有人,大家都覺得太遺憾了,",  
    "101": "然后跟老板說",  
    "102": "最有意思是跟老板說",  
    "103": "說真的不去中石油了",  
    "104": "哎呀,哎呀",  
    "105": "就覺著好像就沒勁了,哈哈哈",  
    "106": "說你不是開玩笑吧",  
    "107": "哎呀就覺得,好像不想要我了似的",  
    "108": "開玩笑啊,開玩笑",  
    "109": "就所有人都沮喪而失落",  
    "110": "就我看到大家的反應",  
    "111": "我也很難過,很難過",  
    "112": "我我,我后來還是放棄了",  
    "113": "放棄了,嗯",  
    "114": "所以中石油offer是一個學習",  
    "115": "它對于一個追求太古里的一個員工來說",  
    "116": "它是破壞性的",  
    "117": "你去了中石油又能怎么樣呢?",  
    "118": "你丟掉了信仰",  
    "119": "丟掉了人格啊",  
    "120": "孰重孰輕啊",  
    "121": "所以我在學習",  
    "122": "我在學習做一個合格員工的思考",  
    "123": "這就是我的,遺憾",  
    "124": "但也許是我的一個清醒",  
    "125": "或者學習的心得",  
}

這里字典的key是檔案名,value是音頻的內容,

隨后加載聲碼器地址中的組態檔:

# frontend  
frontend = get_frontend(  
    lang="mix",  
    phones_dict=os.path.join(am_inference_dir, "phone_id_map.txt"),  
    tones_dict=None  
)  
  
# am_predictor  
am_predictor = get_predictor(  
    model_dir=am_inference_dir,  
    model_file="fastspeech2_mix" + ".pdmodel",  
    params_file="fastspeech2_mix" + ".pdiparams",  
    device=device)  
  
# voc_predictor  
voc_predictor_pwgan = get_predictor(  
    model_dir=voc_inference_dir_pwgan,  
    model_file="pwgan_aishell3" + ".pdmodel",      
    params_file="pwgan_aishell3" + ".pdiparams",  
    device=device)  
  
  
voc_predictor_wavernn = get_predictor(  
    model_dir=voc_inference_dir_wavernn,  
    model_file="wavernn_csmsc" + ".pdmodel",      
    params_file="wavernn_csmsc" + ".pdiparams",  
    device=device)  
  
output_dir = Path(wav_output_dir)  
output_dir.mkdir(parents=True, exist_ok=True)  
  
sentences = list(text_dict.items())

這里我們準備兩個聲碼器物件,

最后運行克隆函式:

def clone(voc_predictor):  
  
    merge_sentences = True  
    fs = 24000  
    for utt_id, sentence in sentences:  
        am_output_data = https://www.cnblogs.com/v3ucn/p/get_am_output(  
            input=sentence,  
            am_predictor=am_predictor,  
            am="fastspeech2_mix",  
            frontend=frontend,  
            lang="mix",  
            merge_sentences=merge_sentences,  
            speaker_dict=os.path.join(am_inference_dir, "phone_id_map.txt"),  
            spk_id=0, )  
        wav = get_voc_output(  
                voc_predictor=voc_predictor, input=am_output_data)  
        # 保存檔案  
        sf.write(output_dir / (utt_id + ".wav"), wav, samplerate=fs)  
  
  
if __name__ == '__main__':  
      
    clone(voc_predictor_pwgan)

這里默認的采樣率是24000,am模型使用fastspeech2_mix,因為它可以兼容英文的閱讀,

聲碼器選擇voc_predictor_pwgan,當然也可以將引數修改為voc_predictor_wavernn,

生成后的效果:

結語

基于聲學模型 FastSpeech2的PaddleSpeech的產品力已經相當驚人,就算是放在全球人工智能領域的尺度上,擺在微軟這種業界巨頭的最佳產品Azure-tts旁邊,也是毫不遜色的,感謝百度,讓普通人也能玩惡搞配音專案,最后奉上國師的鬼畜視頻一鍵生成專案,與眾鄉親同饗:

https://github.com/zcxey2911/zhangyimou_voice_clone_text

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555264.html

標籤:其他

上一篇:ChatGPT+Mermaid自然語言流程圖形化產出小試

下一篇:返回列表

標籤雲
其他(161056) Python(38230) JavaScript(25496) Java(18240) C(15237) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7253) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4594) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2435) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1966) Web開發(1951) C++(1940) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 批量生成,本地推理,人工智能聲音克隆框架PaddleSpeech本地批量克

    云端煉丹固然是極好的,但不能否認的是,成本要比本地高得多,同時考慮到深度學習的訓練相對于推理來說成本也更高,這主要是因為它需要大量的資料、計算資源和時間等資源,并且對超引數的調整也要求較高,更適合在云端進行。 在推理階段,模型的權重和引數不再調整。相反,模型根據輸入資料的特征進行計算,并輸出預測結果 ......

    uj5u.com 2023-06-16 07:54:11 more
  • ChatGPT+Mermaid自然語言流程圖形化產出小試

    本文旨在介紹如何使用ChatGPT和Mermaid語言生成流程圖的技術。在現代軟體開發中,流程圖是一種重要的工具,用于可視化和呈現各種流程和結構。結合ChatGPT的自然語言處理能力和Mermaid的簡單語法,可以輕松地將文本描述轉化為圖形表示,使技術檔案更具可讀性和易懂性。 ......

    uj5u.com 2023-06-16 07:54:02 more
  • 給你的 Discord 接入一個既能聯網又能畫畫的 ChatGPT

    如果有這樣一款 Discord 機器人,它既能**訪問互聯網**,又能**繪畫**,還能給 YouTube 視頻提供**摘要**。最重要的是,它是**完全免費**的,不需要提供 OpenAI 的 API Key,**我就問你香不香?** 現在就有這樣一款機器人,你用還是不用? ## Discord ......

    uj5u.com 2023-06-16 07:53:29 more
  • 北斗GPS衛星授時服務器(NTP授時)應用于地鐵自控系統

    北斗GPS衛星授時服務器(NTP授時)應用于地鐵自控系統 北斗GPS衛星授時服務器(NTP授時)應用于地鐵自控系統 京準電子科技官微——ahjzsz 1.1時鐘系統概況 地鐵時鐘系統是軌道交通系統的重要組成部份之一,其主要作用是為控制中心調度員、車站值班員、各部門作業人員及乘客提供統一的標準時間資訊 ......

    uj5u.com 2023-06-16 07:53:02 more
  • web基礎與HTTP協議

    目錄 一、DNS 二、域名 三、web基礎 四、HTTP 五、總結 摘要:簡單敘述web基礎,網頁的概念,域名決議,域名結構,HTML超文本傳輸語言,cookie和session擴展 一、DNS 1.DNS概念 內網和外網無法通信,為了內網可以和外網通信,dns技術解決問題,可以將公網和私網互相通信 ......

    uj5u.com 2023-06-16 07:52:35 more
  • UE開發使用Rider時快取干爆C盤的解決方案

    我們在使用Rider開發UE時,Ride會為每一個專案創建一個解決方案快取,如果開幾個新專案寫測驗demo,我們的C盤會逐漸捉急 ![默認情況下](https://img2023.cnblogs.com/blog/2003597/202306/2003597-20230615183008462-89 ......

    uj5u.com 2023-06-16 07:52:10 more
  • 讀資料壓縮入門筆記05_字典轉換

    為了找到資料流的理想分詞,我們需要有某種方法來處理現有的和那些還沒有遇到的符號,并能以一種高效的方式將兩者合并為盡可能長的符號集 ......

    uj5u.com 2023-06-16 07:51:51 more
  • 網路傳輸中的重要引數-簡單的網路畫像

    [toc] 在前兩篇博文對[帶寬](https://www.cnblogs.com/mapleumr/p/17469513.html)、[時延與丟包率](https://www.cnblogs.com/mapleumr/p/17464980.html)有了初步的認識后(引流引流哈哈哈),我們已經可以 ......

    uj5u.com 2023-06-16 07:51:21 more
  • SQL查詢面試題,會這些基本夠用了

    ### 寫在前面 我已經記不起來,有多久沒更新文章了。 5月中旬我還在上班,中旬以后一系列發生的事情,真的遠遠超出了可承受范圍,只能硬著頭皮面對! 我是誰,我應該是誰,又能怎樣,只能向前····· ### 資料庫實體 #### class表 ![image.png](https://p6-jueji ......

    uj5u.com 2023-06-16 07:51:03 more
  • 大促質量備戰之三化戰役:“常態化、精細化、一體化”

    大促作為JD一年兩度的盛事,質量備戰是不可或缺的重要環節。每逢大促都是一次大型的聯合戰役,在這種戰役中,不僅有各種“海陸空”技術爭奇斗艷,還會讓我們的技術視野變得更寬闊,讓我們協同變得更默契,所謂以戰養兵。測驗團隊作為質量備戰團隊,沉淀了“常態化”、“精細化”、“一體化”的三化備戰策略,希望與君共勉... ......

    uj5u.com 2023-06-16 07:50:00 more