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

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

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

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

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

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

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

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

1. F0的計算

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#獲取音頻的采樣點數(shù)值以及采樣率x, fs = sf.read('utterance/vaiueo2d.wav')#使用DIO算法計算音頻的基頻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算法計算音頻的頻譜包絡(luò)_sp = pw.cheaptrick(x, _f0, t, fs)#計算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)

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

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

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

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

    關(guān)注

    23

    文章

    4575

    瀏覽量

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

    關(guān)注

    180

    文章

    7581

    瀏覽量

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

    關(guān)注

    2

    文章

    87

    瀏覽量

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

    關(guān)注

    7

    文章

    873

    瀏覽量

    45527

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

    靈犀云智能語音平臺的語音評測SDK使用方法

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

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

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

    智能語音套件VBS7100 試用體驗+使用方法

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

    語音合成芯片與語音芯片對比

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

    語音合成芯片與語音芯片對比

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

    Modelsim詳細(xì)使用方法

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

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

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

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

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

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

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

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

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

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

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

    如何進(jìn)行馬來語語音合成系統(tǒng)的設(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è)計與實現(xiàn)概述