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

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

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

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

wpl4_DeepLearni ? 2018-01-29 10:39 ? 次閱讀

WORLD是一個(gè)基于C語言的開源語音合成系統(tǒng),語音合成主要包括波形拼接和參數(shù)合成兩種方法,WORLD是一種基于vocoder的參數(shù)合成方法,它相比于STRAIGHT的優(yōu)勢(shì)是減少了計(jì)算復(fù)雜度,并且可以應(yīng)用于實(shí)時(shí)的語音合成。由于STRAIGHT不是開源的系統(tǒng),并且在WORLD論文中已經(jīng)對(duì)比了WORLD相比于STRAIGHT無論是在合成的音頻質(zhì)量上還是合成速度上都處于領(lǐng)先優(yōu)勢(shì),所以這里我不準(zhǔn)備介紹STRAIGHT,我們今天主要講一下WORLD語音合成系統(tǒng)的原理以及使用方法。

WORLD系統(tǒng)如下圖所示,包含三個(gè)模塊,分別是DIO、CheapTrick、PLATINUM,其中DIO的作用是用來估計(jì)一段波形的Fundamental Frequency(簡(jiǎn)稱F0),CheapTrick算法是根據(jù)波形和F0來計(jì)算spectral envelope,PLATINUM算法是基于波形、F0和spectral envelope來計(jì)算aperiodic parameter,下面我們來分別看這些參數(shù)的計(jì)算原理。

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

1. F0的計(jì)算

F0在維基百科中的定義是:當(dāng)發(fā)聲體由于振動(dòng)而發(fā)出聲音時(shí),聲音一般可以分解為許多單純的正弦波,所有的自然聲音基本都是由許多頻率不同的正弦波組成的,其中頻率最低的正弦波即為基音,而其他頻率較高的正弦波則為泛音,即這些不同正弦波中的最低頻率稱為基頻。F0是一種非常常用的可以表示聲音的特征,在WORLD中,F(xiàn)0的計(jì)算是基于DIO算法,DIO算法主要包含如下三個(gè)步驟:

第一步:使用不同的截止頻率的低通濾波器,如果濾波后的信號(hào)只包含基頻,那么它就是一個(gè)正弦波,由于事先我們對(duì)F0并不知曉,需要多次試探,所以在這一步中會(huì)有很多不同截止頻率的濾波器被使用;

第二步:計(jì)算每一個(gè)濾波后的信號(hào)中的候選基頻以及可信度,由于只包含基頻的信號(hào)應(yīng)該是一個(gè)正弦波,因此如下圖所示,四個(gè)區(qū)間的跨度應(yīng)該基本相等,我們可以計(jì)算四個(gè)跨度的平均值,用這個(gè)值的倒數(shù)來表示候選基頻。同時(shí),計(jì)算這四個(gè)跨度的標(biāo)準(zhǔn)差來作為衡量基頻可信度的指標(biāo),標(biāo)準(zhǔn)差越大,說明跨度長短差異較大,那么取此頻率作為基頻的可信度就較低。

第三步:選取可信度最高的候選基頻作為最終的基頻。

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

2. 用于估計(jì)頻譜包絡(luò)的CheapTrick算法

首先,我們需要明白什么是語音的頻譜包絡(luò),語音是一個(gè)時(shí)序信號(hào),例如對(duì)于一個(gè)采樣頻率為16kHz的音頻文件,意味著在這個(gè)音頻中,每一秒包含16000個(gè)采樣點(diǎn),這些采樣點(diǎn)在計(jì)算機(jī)中以某種數(shù)據(jù)形式進(jìn)行存儲(chǔ)著(例如常見的有16bit整型),當(dāng)我們使用矩形窗函數(shù)對(duì)一段音頻進(jìn)行處理,它就被劃分成多個(gè)幀,于是得到了多個(gè)子序列,然后對(duì)每個(gè)子序列進(jìn)行傅里葉變換操作,就得到了頻率-振幅圖,將這些圖在時(shí)間維度上展現(xiàn)出來,就得到了這個(gè)語音文件的spectrogram。一張實(shí)際的spectrogram如下圖所示。

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

頻譜包絡(luò)實(shí)際上是在一個(gè)頻率-振幅圖中,將每個(gè)頻率共振峰用平滑的曲線連接起來,而這個(gè)平滑的曲線就是語音的頻譜包絡(luò),下圖展示了頻譜包絡(luò)在頻譜圖中的位置。

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

確定這個(gè)頻譜包絡(luò)的算法有很多,例如常見的是倒譜法(Cepstrum,有趣的是,cepstrum與spectrum兩個(gè)單詞只是開頭四個(gè)字母翻轉(zhuǎn)了位置而已,這其實(shí)也暗示了它們的物理含義有某種巧合的關(guān)聯(lián)...),在WORLD中,使用的是CheapTrick算法來估計(jì)頻譜包絡(luò),該算法工作流程如下:

首先,對(duì)信號(hào)添加Hanning window,然后對(duì)windowed之后的信號(hào)計(jì)算其功率,公式如下(1)所示;

其次,使用矩形窗函數(shù)對(duì)功率譜進(jìn)行平滑化,公式如下(2)所示;

最后,計(jì)算功率譜的倒譜,并做倒譜提升,公式如下(3)(4)(5)(6)所示;

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

最終得到的Pl(w)就是我們所需要的頻譜包絡(luò)。

3. Aperiodic參數(shù)提取算法

aperiodic是與混合激勵(lì)相關(guān)的參數(shù),為了獲得自然的聲音,激勵(lì)源不能只使用周期信號(hào),也需要包含一些非周期信號(hào)。在WORLD中,aperiodic參數(shù)可以直接基于波形、F0、頻譜包絡(luò)來計(jì)算得到。這種算法叫做PLATINUM,它的工作流程如下:

首先,對(duì)波形添加寬度為2T0的窗函數(shù),并計(jì)算得到其頻譜X(w);將X(w)除以最小相譜Sm(w)得到Xp(w),公式如(11)所示;對(duì)Xp(w)進(jìn)行逆iFFT,即可得到激勵(lì)信號(hào),公式如(10)所示;

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

最終的語音合成是通過將最小相譜與激勵(lì)信號(hào)進(jìn)行卷積得到。

最后,來看一下如何調(diào)用WORLD來合成一段語音以及合成的效果。WORLD源代碼是基于C語言的,但是WORLD也有一個(gè)Python wrapper庫——PyWorld,為了代碼簡(jiǎn)潔起見,這里我們使用PyWorld來演示。

在終端運(yùn)行pip install pyworld以及pip install soundfile即可安裝PyWorld庫,該庫中提供了一個(gè)demo代碼,可以用來演示語音合成。下面一段代碼就是使用WORLD庫來提取音頻特征,并將此特征基于vocoder合成新的音頻,原始音頻和新的音頻的波形圖對(duì)比如下圖所示。

#獲取音頻的采樣點(diǎn)數(shù)值以及采樣率x, fs = sf.read('utterance/vaiueo2d.wav')#使用DIO算法計(jì)算音頻的基頻F0_f0, t = pw.dio(x, fs, f0_floor=50.0, f0_ceil=600.0, channels_in_octave=2, frame_period=args.frame_period, speed=args.speed)#使用CheapTrick算法計(jì)算音頻的頻譜包絡(luò)_sp = pw.cheaptrick(x, _f0, t, fs)#計(jì)算aperiodic參數(shù)_ap = pw.d4c(x, _f0, t, fs)#基于以上參數(shù)合成音頻_y = pw.synthesize(_f0, _sp, _ap, fs, args.frame_period)#寫入音頻文件sf.write('test/y_without_f0_refinement.wav', _y, fs)

下圖是原始波形與合成后音頻的波形對(duì)比,上圖是原始波形,下圖是合成后的音頻波形,可以看到,基本保持一致。由于公眾號(hào)文章只能上傳一段音頻,因此這里我只能上傳合成后的音頻。

詳細(xì)解析WORLD語音合成系統(tǒng)的原理以及使用方法

WORLD語音合成系統(tǒng)可以根據(jù)F0、spectral envelope、aperiodic三個(gè)參數(shù)來合成一段語音,因此,在前沿的語音合成研究中,會(huì)通過深度學(xué)習(xí)技術(shù)學(xué)習(xí)到一段文本所對(duì)應(yīng)的這三個(gè)特征,然后借助WORLD合成為語音。

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

    關(guān)注

    23

    文章

    4587

    瀏覽量

    92501
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7594

    瀏覽量

    135858
  • 語音合成
    +關(guān)注

    關(guān)注

    2

    文章

    87

    瀏覽量

    16132
  • 頻譜
    +關(guān)注

    關(guān)注

    7

    文章

    874

    瀏覽量

    45553

原文標(biāo)題:開源的語音合成系統(tǒng)WORLD介紹以及使用方法

文章出處:【微信號(hào):DeepLearningDigest,微信公眾號(hào):深度學(xué)習(xí)每日摘要】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI語音處理-文字合成語音功能

    這篇文章就介紹華為云提供的語音合成服務(wù)使用方法,利用提供的API接口完成語音合成功能,將合成語音
    的頭像 發(fā)表于 07-08 09:50 ?2006次閱讀
    AI<b class='flag-5'>語音</b>處理-文字<b class='flag-5'>合成語音</b>功能

    基于數(shù)字信號(hào)處理器的中文語音合成系統(tǒng)設(shè)計(jì)

    本文介紹的就是一種基于DSP的中文語音合成系統(tǒng)的實(shí)現(xiàn)方法。隨著語音信號(hào)處理技術(shù)的不斷發(fā)展與成熟,語音
    發(fā)表于 12-28 09:32 ?1932次閱讀

    基于波形音頻段處理的中文語音合成研究

    特性,合成語音清晰自然,所以其質(zhì)量普遍高于基于規(guī)則合成,而且該種方法簡(jiǎn)單直觀、運(yùn)算量小,因此獲得了廣泛應(yīng)用。但基于拼接方法
    發(fā)表于 03-06 22:24

    靈犀云智能語音平臺(tái)的語音評(píng)測(cè)SDK使用方法

    分享一下集成語音評(píng)測(cè)功能的方法:①先登錄中國移動(dòng)開發(fā)者社區(qū);②登錄成功后,進(jìn)入“管理中心”再點(diǎn)擊下圖紅框指示的“應(yīng)用發(fā)布” ;③填妥應(yīng)用的名稱和簡(jiǎn)介,然后勾選“含有能力”,選擇你希望應(yīng)用語音能力的平臺(tái)并在
    發(fā)表于 08-20 10:57

    基于LabVIEW語音合成系統(tǒng)設(shè)計(jì)

    有會(huì)基于LabVIEW語音合成系統(tǒng)設(shè)計(jì)的嗎
    發(fā)表于 04-06 22:26

    智能語音套件VBS7100 試用體驗(yàn)+使用方法

    ` 本帖最后由 *** 于 2017-5-13 08:46 編輯 第二波:智能語音套件VBS7100 試用體驗(yàn)+使用方法語音套件VBS7100使用方法可參考兩種方式,如下圖所示。后期陸續(xù)測(cè)評(píng),敬請(qǐng)期待!
    發(fā)表于 05-11 13:06

    語音合成芯片與語音芯片對(duì)比

    實(shí)現(xiàn)實(shí)時(shí)播報(bào)。 語音芯片,顧名思義就是可以存儲(chǔ)控制播放語音的IC;是指將語音信號(hào)通過采樣轉(zhuǎn)化為數(shù)字,存儲(chǔ)在IC的ROM中,再通過電路將ROM中的數(shù)字還原成語音信號(hào)。從
    發(fā)表于 03-08 17:26

    語音合成芯片與語音芯片對(duì)比

    實(shí)現(xiàn)實(shí)時(shí)播報(bào)。語音芯片,顧名思義就是可以存儲(chǔ)控制播放語音的IC;是指將語音信號(hào)通過采樣轉(zhuǎn)化為數(shù)字,存儲(chǔ)在IC的ROM中,再通過電路將ROM中的數(shù)字還原成語音信號(hào)。從
    發(fā)表于 03-11 15:39

    Modelsim詳細(xì)使用方法

    Modelsim 詳細(xì)使用方法介紹。點(diǎn)擊下載
    發(fā)表于 04-23 10:28

    語音合成IC與語音IC的兩三事

    通過電路將ROM中的數(shù)字還原成語音信號(hào)。從使用方法來看,語音芯片的主要使用方式是先對(duì)其進(jìn)行錄音,錄音完成燒錄后再來對(duì)其使用。 總的來說,語音IC是把聲音錄制進(jìn)去才能播放,
    發(fā)表于 05-13 17:02

    基于語音合成技術(shù)的車載終端系統(tǒng)該怎樣去設(shè)計(jì)?

    什么是語音合成技術(shù)?基于語音合成技術(shù)的車載終端系統(tǒng)該怎樣去設(shè)計(jì)?
    發(fā)表于 05-12 07:25

    ModelSim軟件的詳細(xì)使用方法是什么?

    ModelSim軟件有哪些主要特點(diǎn)?ModelSim軟件的詳細(xì)使用方法是什么?
    發(fā)表于 06-21 07:35

    基于DSP的中文語音合成系統(tǒng)設(shè)計(jì)

    基于DSP的中文語音合成系統(tǒng)設(shè)計(jì) 引言   本文介紹的就是一種基于DSP的中文語音合成系統(tǒng)
    發(fā)表于 10-09 14:50 ?1277次閱讀
    基于DSP的中文<b class='flag-5'>語音</b><b class='flag-5'>合成</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    語音合成系統(tǒng)研究

    語音合成系統(tǒng)研究,語音合成是通過機(jī)械的、電子的方法產(chǎn)生人造
    發(fā)表于 05-24 15:59 ?4365次閱讀
    <b class='flag-5'>語音</b><b class='flag-5'>合成</b><b class='flag-5'>系統(tǒng)</b>研究

    如何進(jìn)行馬來語語音合成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)概述

    馬來語廣泛使用于馬來西亞、新加坡等東南亞國家,目前使用人數(shù)約有2億多人。本文研究馬來語語音合成系統(tǒng)的前端文本分析與處理方法、以及基于HMM的
    發(fā)表于 12-24 15:54 ?4次下載
    如何進(jìn)行馬來語<b class='flag-5'>語音</b><b class='flag-5'>合成</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)與實(shí)現(xiàn)概述