配對的數(shù)據(jù)集上,完全隨機從頭開始訓(xùn)練。本文是來自喜馬拉雅FM音視頻工程師馬力的投稿,他手把手式的介紹了Tacotron的使用方法,幫助你快速上手。" />

在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個基于Tensorflow框架的開源Tacotron實現(xiàn)

LiveVideoStack ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-04-10 08:47 ? 次閱讀
語音合成(Text to Speech Synthesis)是一種將文本轉(zhuǎn)化為自然語音輸出的技術(shù),在各行各業(yè)有著廣泛用途。傳統(tǒng)TTS是基于拼接和參數(shù)合成技術(shù),效果上同真人語音的自然度尚有一定差距,效果已經(jīng)達到上限,在實現(xiàn)上也依賴于復(fù)雜流水線,比如以文本分析為前端的語言模型、語音持續(xù)時間模型、聲學(xué)特征預(yù)測模型、將頻譜恢復(fù)成時域波形的聲碼器(vocoder)。這些組件都是基于大量領(lǐng)域?qū)I(yè)知識,設(shè)計上很艱難,需要投入大量工程努力,對于手頭資源有限的中小型玩家來說,這種“高大上”的技術(shù)似乎有些玩不起。

幸運的是近年來基于神經(jīng)網(wǎng)絡(luò)架構(gòu)的深度學(xué)習(xí)方法崛起,使得原本在傳統(tǒng)專業(yè)領(lǐng)域門檻極高的TTS應(yīng)用上更接地氣。現(xiàn)在,我們有了新方法Tacotron一種端到端的TTS生成模型。所謂“端到端”就是直接從字符文本合成語音,打破了各個傳統(tǒng)組件之間的壁壘,使得我們可以從<文本,聲譜>配對的數(shù)據(jù)集上,完全隨機從頭開始訓(xùn)練。從Tacotron的論文中我們可以看到,Tacotron模型的合成效果是優(yōu)于要傳統(tǒng)方法的。

本文下面主要內(nèi)容是github上一個基于Tensorflow框架的開源Tacotron實現(xiàn),介紹如何快速上手漢語普通話的語音合成。至于模型的技術(shù)原理,限于篇幅就不再詳細(xì)介紹了,有興趣可以直接閱讀論文,本文的宗旨是,對于剛?cè)腴T的同學(xué)能夠在自己動手實踐中獲取及時的結(jié)果反饋。

在正文開始之前,筆者假設(shè)讀者手頭已經(jīng)準(zhǔn)備好項目運行的軟硬件環(huán)境,包括NVIDIA GTX系列顯卡及其驅(qū)動,能夠在控制臺上使用Python3引入Tensorflow模塊。

關(guān)于Tacotron的源代碼,我們選擇了Keith Ito的個人項目,筆者的漢語語音合成正是基于此源碼上修改而成,代碼在:https://github.com/begeekmyfriend/tacotron

訓(xùn)練語料庫可以在:

http://www.openslr.org/18上下載6.4G大小的THCHS-30,這是由清華大學(xué)開放的漢語普通話語料,許可證為Apache License v2.0。

我們可以開始安裝運行了。先clone源代碼到本地~/tacotron,然后解壓THCHS-30數(shù)據(jù)集到根目錄下,如下所示:

~/tacotron

|- data_thchs30

|- data

|- dev

|- lm_phone

|- lm_word

|- README.TXT

|- test

|- train

注意,~/tacotron是默認(rèn)的路徑,之后運行Python程序會直接把~/tacotron作為根目錄,如果你的項目根目錄不一樣,那么你必須修改程序的默認(rèn)路徑參數(shù),否則會出現(xiàn)運行錯誤。

我們可以深入到:~/tacotron/data_thchs30/data里面去觀摩一下,后其中綴為“wav”是語音文件,采樣率16KHz,樣本寬度16-bit,單聲道,內(nèi)容是時長為10s左右的一段漢語。后綴為“trn”文件為文本標(biāo)注(transcript),不同語言有著不同的標(biāo)注方法,比如英語就可以直接用26個字母加上標(biāo)點符號作為標(biāo)注,也就是直接使用英文內(nèi)容本身;韓語由它自己一套字母表,每個字母可以使用Unicode代碼作為標(biāo)注字符;而漢字本身有2~3萬個,窮舉的話太多,還有很多同音字,所以我們使用漢語拼音作為字符標(biāo)注是一種可行方案(在此向漢語拼音之父周有光表示敬意)。比如有這么一句:

綠 是 陽春 煙 景 大塊 文章 的 底色 四月 的 林 巒 更是 綠 得 鮮活 秀媚 詩意 盎然

用漢語拼音標(biāo)注為:

lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de5 di3 se4 si4 yue4 de5 lin2 luan2 geng4 shi4 lv4 de5 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2

注意到除了拉丁字母的拼音,還有1~5個阿拉伯?dāng)?shù)字,表示聲調(diào)(四種聲調(diào)加上輕聲)。

也可以使用音素(聲母+韻母)為單元標(biāo)注:

l v4 sh ix4 ii iang2 ch un1 ii ian1 j ing3 d a4 k uai4 uu un2 zh ang1 d e5 d i3 s e4 s iy4 vv ve4 d e5 l in2 l uan2 g eng4 sh ix4 l v4 d e5 x ian1 h uo2 x iu4 m ei4 sh ix1 ii i4 aa ang4 r an2

根據(jù)經(jīng)驗筆者要指出,如果以字符為單位[a-z1-5],其實上述兩種標(biāo)注方法沒有本質(zhì)區(qū)別,故我們只要使用漢語拼音標(biāo)注方案即可。

聰明的讀者應(yīng)該明白了,所謂的<文本,聲譜>配對,就是要讓機器學(xué)會將每一個包括空格和標(biāo)點在內(nèi)的字符[a-z1-5 ,.;:],對應(yīng)到(mel或線性)聲譜的某幾幀。

接下來進入實際操作階段。在根目錄下運行如下命令:

> python3 preprocess.py --dataset thchs30

這條命令會在根目錄下生成training目錄,里面存放了每個音頻文件的mel頻譜和線性頻譜(通過短時傅里葉變換STFT而得),后綴為"npy"的文件,用numpy庫加載即可得到多個narray數(shù)組(可以視為多個特征向量組成的多維矩陣),用作語音的聲學(xué)特征提取。除此之外還有個train.txt文件,里面基本上就是csv的格式將拼音標(biāo)注同每個文件的聲譜對應(yīng)起來。

再提醒一遍,我們的tacotron根目錄默認(rèn)是~/tacotron,更改需要改變命令行參數(shù)。有了<文本,聲譜>配對數(shù)據(jù)集形式后,我們可以訓(xùn)練了,輸入以下命令行:

> nohup python3 train.py --name thchs30 > output.out &

我們使用了nohup命令來屏蔽一切中斷信號,同時將Python進程置于后臺,這是由于訓(xùn)練過程十分漫長(一般收斂需要10個小時,得到好的效果需要2天),免得網(wǎng)絡(luò)中斷或者終端斷開導(dǎo)致Python進程被殺死。訓(xùn)練過程中的輸出將會保存在logs-thchs30目錄下,可能是這樣的:

~/tacotron

|- logs-thchs30

|- model.ckpt-92000.data-00000-of-00001

|- model.ckpt-92000.index

|- model.ckpt-92000.meta

|- step-92000-align.png

|- step-92000-align.wav

|- ...

以上是92K次迭代后保存下來的模型和alignment圖,順便說一下我們不需要關(guān)注step-92000-align.wav這個音頻文件,這并不是通過模型預(yù)測的實際效果,只是在訓(xùn)練中使用了teacher forcing方法,不代表evaluation效果,可以不去管它。

如何判斷訓(xùn)練是否達到預(yù)期呢?個人經(jīng)驗有兩個:一看學(xué)習(xí)是否收斂;二看損失(loss)低于某個值。由于Tacotron模型本質(zhì)上是基于編碼器解碼器模式的seqtoseq模型,所以學(xué)習(xí)是否收斂可以從編碼器序列和解碼器序列是否對齊(alignment)判斷。

我們放了兩張alignment圖對比,上圖訓(xùn)練了140K次迭代,可以看到?jīng)]有出現(xiàn)對齊,說明沒有收斂。可能的原因很多,比如數(shù)據(jù)集質(zhì)量不好,標(biāo)注不正確等等。下圖是92K次迭代,可以看到對齊情況良好,表明基本上可以通過文本來合成出有效的語音。這里要指出,所謂對齊并不是一定要筆直的斜線,它只是代表編碼器序列(文本)和解碼器序列(聲譜)是否對應(yīng)起來,而且像素點越亮,效果越好。

第二個判斷點是loss值,越小表明越接近地真值(ground truth),當(dāng)然必須在收斂的前提下,loss會趨于穩(wěn)定。在實際訓(xùn)練中有可能出現(xiàn)loss值很低,但是仍然沒出現(xiàn)alignment的情況,這是是無法合成語音的。

當(dāng)我們從訓(xùn)練日志上看到,loss值低于0.07的時候,基本表示學(xué)習(xí)收斂并且效果穩(wěn)定了。可以殺掉后臺Python進程,別擔(dān)心,logs-thchs30目錄下已經(jīng)保存了之前訓(xùn)練過程中產(chǎn)生的模型,你可以從任意時刻生成模型隨時恢復(fù)繼續(xù)訓(xùn)練,比如我們需要從92K次迭代生成的模型基礎(chǔ)上繼續(xù)訓(xùn)練,命令行如下:

> nohup python3 train.py --name thchs30 --restore_step 92000 >> output.out &

好了,現(xiàn)在終于到了檢驗我們錄音效果的時刻了!不過我們無法直接輸入漢字文本,而是拼音標(biāo)注,好在有開源項目python-pinyin幫我們搞定:https://github.com/mozillazg/python-pinyin

比如我們想合成一句“每個內(nèi)容生產(chǎn)者都可以很方便地實現(xiàn)自我價值,更多的人有了微創(chuàng)業(yè)的機會。”我們使用python-pinyin輸出的拼音標(biāo)注拷貝到eval.py里,輸入命令行:

> python3 eval.py --checkpoint logs-thchs30/model.ckpt-133000

一段時間后,就會在logs-thchs30目錄下生成了eval-133000-0.wav,這就是我們想要的結(jié)果,一起來聽聽看吧~

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 語音合成
    +關(guān)注

    關(guān)注

    2

    文章

    92

    瀏覽量

    16437
  • GitHub
    +關(guān)注

    關(guān)注

    3

    文章

    482

    瀏覽量

    17527

原文標(biāo)題:基于Tacotron漢語語音合成的開源實踐

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    SSM框架的源碼解析與理解

    SSM框架(Spring + Spring MVC + MyBatis)是種在Java開發(fā)中常用的輕量級企業(yè)級應(yīng)用框架。它通過整合Spring、Spring MVC和MyBatis三
    的頭像 發(fā)表于 12-17 09:20 ?920次閱讀

    用于SLAM中點云地圖綜合評估的開源框架

    在SLAM中評估大規(guī)模的點云地圖仍頗具挑戰(zhàn),主要原因在于缺乏統(tǒng)、穩(wěn)健且高效的評估框架。本文提出了MapEval,這是用于點云地圖綜合評估的開源
    的頭像 發(fā)表于 12-13 11:18 ?897次閱讀
    用于SLAM中點云地圖綜合評估的<b class='flag-5'>開源</b><b class='flag-5'>框架</b>

    RK3568國產(chǎn)處理器 + TensorFlow框架的張量創(chuàng)建實驗案例分享

    、實驗?zāi)康?本節(jié)視頻的目的是了解張量定義、了解張量的表示形式、并學(xué)習(xí)基于TensorFlow框架的張量創(chuàng)建方法。 二、實驗原理. 張量定義 1、張量是多維數(shù)組,這個定義常見于各種人工智能軟件。 2
    發(fā)表于 12-03 14:43

    卷積神經(jīng)網(wǎng)絡(luò)的實現(xiàn)工具與框架

    卷積神經(jīng)網(wǎng)絡(luò)因其在圖像和視頻處理任務(wù)中的卓越性能而廣受歡迎。隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,多種實現(xiàn)工具和框架應(yīng)運而生,為研究人員和開發(fā)者提供了強大的支持。 TensorFlow 概述
    的頭像 發(fā)表于 11-15 15:20 ?626次閱讀

    真格基金宣布捐贈開源AI項目vLLM

    開源技術(shù)處于 AI 革命的中心。Llama 3、Mistral 等開源大模型迅速追趕 GPT-4,TensorFlow、Pytorch 等開源深度學(xué)習(xí)
    的頭像 發(fā)表于 09-24 16:13 ?710次閱讀

    如何在Tensorflow實現(xiàn)反卷積

    TensorFlow實現(xiàn)反卷積(也稱為轉(zhuǎn)置卷積或分?jǐn)?shù)步長卷積)是涉及多個概念和步驟的過程。反卷積在深度學(xué)習(xí)領(lǐng)域,特別是在圖像分割、圖像超分辨率、以及生成模型(如生成對抗網(wǎng)絡(luò)GA
    的頭像 發(fā)表于 07-14 10:46 ?1079次閱讀

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google開發(fā)的開源深度學(xué)習(xí)框架,它允許開發(fā)者方便地構(gòu)建、訓(xùn)練和部署各種復(fù)雜的機器學(xué)習(xí)模型。
    的頭像 發(fā)表于 07-12 16:38 ?1243次閱讀

    使用TensorFlow進行神經(jīng)網(wǎng)絡(luò)模型更新

    使用TensorFlow進行神經(jīng)網(wǎng)絡(luò)模型的更新是涉及多個步驟的過程,包括模型定義、訓(xùn)練、評估以及根據(jù)新數(shù)據(jù)或需求進行模型微調(diào)(Fine-tuning)或重新訓(xùn)練。下面我將詳細(xì)闡述這個過程,并附上相應(yīng)的
    的頭像 發(fā)表于 07-12 11:51 ?811次閱讀

    tensorflow和pytorch哪個更簡單?

    PyTorch更簡單。選擇TensorFlow還是PyTorch取決于您的具體需求和偏好。如果您需要易于使用、靈活且具有強大社區(qū)支持的框架,PyTorch可能是
    的頭像 發(fā)表于 07-05 09:45 ?1389次閱讀

    tensorflow和pytorch哪個好

    tensorflow和pytorch都是非常不錯的強大的框架TensorFlow還是PyTorch哪個更好取決于您的具體需求,以下是關(guān)于這兩框架
    的頭像 發(fā)表于 07-05 09:42 ?1148次閱讀

    tensorflow簡單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進行簡單的模型訓(xùn)練。TensorFlow開源的機器學(xué)習(xí)庫,廣泛用于各種機器學(xué)習(xí)任務(wù)
    的頭像 發(fā)表于 07-05 09:38 ?1250次閱讀

    keras模型轉(zhuǎn)tensorflow session

    和訓(xùn)練深度學(xué)習(xí)模型。Keras是基于TensorFlow、Theano或CNTK等底層計算框架構(gòu)建的。TensorFlow
    的頭像 發(fā)表于 07-05 09:36 ?821次閱讀

    如何使用Tensorflow保存或加載模型

    TensorFlow廣泛使用的開源機器學(xué)習(xí)庫,它提供了豐富的API來構(gòu)建和訓(xùn)練各種深度學(xué)習(xí)模型。在模型訓(xùn)練完成后,保存模型以便將來使用或部署是
    的頭像 發(fā)表于 07-04 13:07 ?2573次閱讀

    TensorFlow的定義和使用方法

    TensorFlow由谷歌人工智能團隊谷歌大腦(Google Brain)開發(fā)和維護的開源機器學(xué)習(xí)庫。它基于數(shù)據(jù)流編程(dataflow programming)的概念,將復(fù)雜的
    的頭像 發(fā)表于 07-02 14:14 ?1378次閱讀

    TensorFlow與PyTorch深度學(xué)習(xí)框架的比較與選擇

    深度學(xué)習(xí)作為人工智能領(lǐng)域的重要分支,在過去十年中取得了顯著的進展。在構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的過程中,深度學(xué)習(xí)框架扮演著至關(guān)重要的角色。TensorFlow和PyTorch是目前最受
    的頭像 發(fā)表于 07-02 14:04 ?1577次閱讀
    主站蜘蛛池模板: 国产视频一二区 | 久久久99精品免费观看精品 | 老司机精品免费视频 | 欧美性色生活片天天看99 | 色婷婷色综合激情国产日韩 | 韩国三级视频网站 | 天堂在线免费视频 | 天天摸天天操天天爽 | videofreeones性欧美另类 | 5x性区m免费毛片视频看看 | 免费精品美女久久久久久久久 | 欧美一级三级在线观看 | 欧美一级www片免费观看 | 免费观看视频网站 | 福利姬 magnet | 免费视频在线播放 | 国产精品视频一区国模私拍 | 欧美黄色片网站 | 欧美一区二区影院 | 欧美福利二区 | 高清成年美女黄网站色大 | 免费我看视频在线观看 | 18年大片免费在线 | 色综合色综合色综合色综合 | 国产精品久久久久久久久 | 一本视频在线 | 精品国产理论在线观看不卡 | 中文字幕不卡免费高清视频 | 天天插天天射 | 日韩毛片免费线上观看 | 国产一区二区丁香婷婷 | 一卡二卡卡四卡无人区中文 | 永久在线观看 | 黄网站在线观看视频 | 国产精品成人四虎免费视频 | 亚洲一区欧美日韩 | 永久免费看mv网站入口 | 免费在线视频播放 | 国产亚洲视频在线 | 男人j桶进女人j的视频 | 日本人亚洲人成人 |