準備開題

最近忙着趕論文和開題, 很多東西放在了印象筆記和git上, 沒有往csdn搬. 回頭再說吧.

下面的文字也是臨時當個網盤用, 等等就刪了

code-switched TTS 語言片段切換的語音合成 mixed-lingual TTS 混合語言的語音合成

應用場景是生活中涉及到一句話中涉及到中文和英文的部分,比如說外國人在中國生活的時候就會反覆使用或者是香港,香港的中英混雜的現象,然後更更簡單更若役層次的就是句子與句子之間是不同語言。比如說地鐵站上的那個地鐵,地鐵的啵啵啵棒呃以及以及一些指引。

所以他的要求第一是音色一定要相近,就是放在一塊兒來回轉換的時候肯定不難受,但只是要求音色的相近就可以,因爲不同語言之間本來的韻律以及強調的韻律本身就不太想通,呃,強調這個就中中毒,還應該再討論。

所以說扣得所有曲中他不涉及到像風格或者是情感對以及韻律,然後但是他要求的是說中文的時候一定是中文的口音,說英文的時候一定是正宗的英文,不能帶有本土語言的那個口音。

所以可以額外做一個測試測試,就是說看同樣的,比如說中文的句子,用兩個說話人對比他們的韻律,然後風格,然後重音和和情感看是不是有明顯的別的特徵,就是說除了音色欠1萬之外,別的不抑鬱察覺的是不是也在之內?然後說白了就是不考慮太多隻是把整個人的整個的沃飲食統一建模成一個向量然後共同送入到解碼器中

非得要把warns的音就是聲音給人的聲音特徵給分開,說的話可以借鑑,就是谷歌發的那篇說把聲音建國爲音色和口音,這樣的話可以讓同一個人的音色說正宗的英文和中式英文,但是他這個思路的老師強調不能不要順着他這個思路。走不要太瘦這個思路的影響這種思路其實是不太有意義的因爲中文本身就應該有中文的因素一百中文的口音英文就應該有中文的口音沒有意義和沒有必要去單獨說一個故意的老外的口音當然如果書中有本土人說叔叔

並且結合所有的以前的做法.

因此這次interspeech我至少準備兩篇,

關注點不同的. 比如study of input unit和刷loss以及demo的

其實!!! (add+concat+gated) * (residual h, residual context make attention same most simple residual-----2.4.1. Phoneme embedding context vector)

少了一種h爲殘差的concat的

方案, 真正也影響到attention.

包括盧輝的介紹的比concat好的

方法, 可跑完實驗然後study的多了去了

給出有理有據能夠節省別人時間的實驗結果

和實驗結論.

這樣做法在語言含義解釋下. 這個也是study之一, 都去尋找專家知識.

論文embedding不同, 但是encoder的參數相同, 是shared. 而cuhk embedding共享, 但是encoder分開, 其實具體說不清, 要分析的點之一

把關於分佈情況的所有知識點都列出來, 每一個都分析透了, 說明原因.
沒有說話人向量,

而是re-train decoder,

其實我感覺也很好, 但是

前面的很多人訓練平均模型,

這個沒有額外給input更精確,

但是訓練平均音色可以通過這樣的

方式, 挺好的.

他單語合成和多語言混合

實驗差別很大, 可能因爲共享

編碼器.

爲什麼他的用中文的說話人說英文能這麼好???
數據集: 他有很多個說話人, 先天優勢. 接觸的音全.
他用的T-2的encoder
DEC確實一樣, 但是超參數不如人家調的好
人家用的phoneme, 而我目前用的拼音, 之前用phoneme有可能實驗不標準. 畢竟phoneme在確保發音準確性上有優勢
encoder參數的共享, encoder以後更加接近.
訓練的沒有人家好
可以出一篇專業角度來分析幾個不同的T-2以及他們condition的延伸的. 這種更有意義, 並且學到難的細節.

基於的第一版代碼和實驗的實驗分析-2020元旦前後的版本
1.限定: 就使用20wsteps的1fc的joee(有attention guided loss, output_steps=2)的cbhg版本. 隱藏的危險: 2fc會不會更好? 只是說有這個可能, 其實差不多, 只是不一定; 20w會不會不夠, 或者之前的會好? 根據tensorboard的loss, 20wsteps還是比較合理的, 沒必要糾結太精確, 反正怎麼弄都是不滿足工業界cs要求的; 先不分析T-2版本的joee(其實20wsteps的這個版本在bb發英文上甚至更有語義, 好一丟丟, 也多一丟丟重音變化), 因爲還涉及到了CNN中有沒有dropout的問題, 之後再聯合Rayhane的一起分析.
工程路徑爲: /home/ec2-user/Tacotron-2-joee-cs-spe-1fc-ljs-bb-22050-quickConvergence
2.先用10wsteps的來看分佈
3.現在有了18w, 但是忘了訓練過程了…
4.分析tb, 其實最後eval loss不降, train loss波動是否可以改lr, 並且eval eval after loss還在降.


(臨時, 但是不刪)
1.encoded_output到底代表了什麼?
linguistic features(語言學信息), 其中核心的是phoneme features(音位信息), 剩下的比如所處位置, 詞性, 前後的phoneme–無根據, 但感覺像
language features(語言信息), 主要輔助決定上面的phoneme features, 剩下的如音調和重音系統信息–無根據, 亂猜的:
分爲整齊統一變換語言信息, 和針對具體phoneme features打表變換語言信息; 然而可能只有統一變換的信息需要建模, 整體同一變換後就可達到各自完整語言信息效果, 原因一是: 打表變換語言信息造成的字母(input)到phoneme features的影響, 其實一直在同一個space/domain下, 且就那麼幾種來回變換, 因此打表變換語言信息擬合在了獨立encoder中, 不需要再體現到language features進而再encoded_output中. 所以壓力在是否phoneme features space可以有共享(如IPA, 或者看下發音和語譜圖的聯繫), 找到發音單元, 使得該發音分辨率下兩種語言可共用, 即集合A, B, A=B是最好. 注意是encoded_output中的phoneme features, 而不是input embedding, 他們映射不同, 但最終空間相同(因爲A, B集合大小太小, 所以以離散角度, 需要能夠替換對應, 而不只是在一個空間, 目的是結合speaker embedding後讓decoder均見過). 剩下的是比如中文的音調信息, 英文的重音信息, 這種在另一個語言中沒有的信息, 就像A+X, 和B+Y並起來, 假設A=B, X和Y不想交, 那麼得到A+X+Y, 其中X, Y就是語言信息中的統一變換變換信息, 統一體現在將中文看做無重音, 將英文看做第四聲調, 來concat補充每個的encoded_output, 則體現出了語言信息類似於音色信息讓語譜圖整體同一變換的特性. 如果concat全, 那麼各自都是全集的子集, 加上speaker embedding後, 並不破壞特徵, phoneme features + 音調 + 重音 + speaker embedding, 只是cross時候的組合沒有出現過, 但是若這幾部分分別控制聲音做的解耦性很好的話, 是沒問題的. 因爲本來就缺失那種組合的數據, 但是可以借鑑另外一種語言的, 理由沒想好, 大致就是網絡模型是數學模型和解耦模型, 可以簡化爲在端到端神經網絡的前提下, 動一部分信息, 它可以不影響別的信息最終體現到聲音中. 利用的核心假設就是這個. 而A/B部分不用變, (但是需要確認是否發音A=B, 還是隻有少部分shared, 雖然影響不大). 對於X和Y, 要做類似於speaker embedding那樣的處理, 把維度的位置給空出來, 填上以對方語言標準來說最合適的值, 作爲輸入, 然後和speaker embedding處理一樣, 分別concat(或更好的, 可以看看王木師兄emphasis怎麼處理, 其實不重要, 意思是一樣的)到A/B上. 因此需要翻翻中文的linguistic features的文件, 和英文的linguistic features的文件內容, 區分出A/B, X, Y, 找到XY以及對應的值, 通過專家規則, 語音統計實驗, 神經網絡訓練, 這是最重要的. 比如最簡單的:
phoneme encoder(中, 英文兩個) + tone encoder + emphasis encoder, 獨立同長的三個輸入序列, 考慮上下文獨立經過編碼器, 直接concat, 然後最爲encoded_output, 讓decoder解碼去吧. 就是感覺獨立起來是不是信息不夠? 比如在phoneme的embedding中就concat tone 和 emphasis(不過我想要的是直到encoded_output的時候, 中英文都保留着A/B+X+Y的結構, 不會因爲梯度反傳而丟掉, 所以結構上強行concat一波), 或者在concat後再變換一次. 都行. | 觀察input和發音, 哪些是和語言無關的變化, 哪些是有關的變化. 結合linguistic 分析. 比如phoneme有關, tone無關, emphasis無關.
實際支撐的知識和現象是, 比如我看到tian, 會拼出類似於"天", 但是再加上3, 就是"舔". English, 不加重音就是English, 加了重音就是English. 這兩個例子都有先phoneme, 再tone和emphasis的過程, 感覺上是不相關的(1,2,3,4, 重音與否均可與音獨立發出來), 做實驗的時候也可以互相組合.
原因二是: 不管目前phoneme主導的features是什麼, concat上language embedding的話, 經過非線性變換, 就能達到任何效果. 所以考慮先得到平均/共享phoneme特徵, 再concat上語言信息, 之後非線性變換後, 又能得到各異的信息了, 看上去和音色是一致的, 也就是在網絡中, 整體一致的變換信息也可以完成打表變換信息, 只不過需要在經過幾個NN. – 原因二隻是一個理解方式.
所以目前的思路: concat(phoneme/Graphyme/self-define embedding, tone, emphasis) -> SPE, 中文, 英文各自的phoneme encoder, 得到phoneme_output; 之後, tone 經過 tone embedding(共享), 以及 tone encoder(共享), 得到tone_output. emphasis 共享 emphasis_output, 把他們concat到一起(phoneme_output, tone_output, emphasis_output), 不再做任何和語言相關的處理, 直接送於attention, 或者過個RNN/DNN等處理, 反正不能過跟語言有關的處理. 思路來源是新年NBA 保羅喬治: 新4年4快4樂4, 均是四聲, 發發發發發.
借鑑蔡雄講的3個encoder, 但是從根本上有兩種用法:
shared encoder對應tone, emphasis, 而輸入是比如graphyme或者phoneme, 分別有自己的encoder, 得到該有的phoneme features, 另外shared encoder包含tone encoder 和 emphasis encoder, 負責算出這部分的output. 其實speaker embedding也可以算是這一部分, speaker embedding的特性比如音色, 文本, 語言信息, 下面再說. 重點是–如何讓單獨encoder的phoneme_output中英文的是同一個域(方案有: 本來之後共用decoder, 就差不多了; 梯度反轉層; 離散向量, 聚類, 或自己選, 或者直接IPA; 新的模型, 比如訓練一定時間後, 先中文encoded_output找到所有的英文encoded_output距離最近, 互相代替使用, 去接着訓練, 並且可以把這個方法作爲評測encoder質量的標準. 這樣甚至能夠直接消除phoneme之外的tone, emphasis, speaker) 以及如何只含有phoneme特徵, 去掉tone, emphasis, speaker features(方案有: 蔡雄講論文的獨立性loss; vae; bert預訓練; GAN, 不過不會, 反正得對抗; 離散Bottelneck; dropout; tone, emphasis, speaker信息從一開始就很靠譜等), 其實這個跟去掉speaker features的做法是一樣的, 看論文統計下.
shared encoder對應phoneme那部分, 因爲那部分發音信息其實是一致的, 只不過input之前我們統一在之前加一個映射就好, 只是個小trick, 但是tone, emphasis, speaker並不是, 因此需要分開. 但是需要對這論文看一遍; 感覺這個方法更適合分不清language features有啥的時候用.
從大的來說, 指明language features中非發音部分信息是什麼, 並給於專家知識的input, 影響發音部分信息獨立或預處理, 來和speaker embedding處理方式區別對待, 能夠造成語言信息(tone 1, 2, 3, 4, 5, 6, emphasis 0, 1, 但要指明完A+B-A和A+B-B, 這個很關鍵)和說話人信息不對稱了, 使用的層級不同, 輸入不同; 進一步來說, speaker embedding可能有語言信息, 所以採用multi論文中的speaker encoder, 只建模區分人與人的音色部分.
speaker features(說話人信息), 主要是timbre features(音色信息), 剩下的比如韻律習慣, 重音習慣等, 等讀論文拆解–不知道
others, 如emotion, prosody, style 查一查有沒有解析信息的論文. 不過先不考慮這一部分, 默認數據集具有統計意義中性.
2.上一段話涉及到的論文:

觀察encoded_output分佈, 主要的問題是說話人信息跟語言信息綁定在一起,沒有分離開。
input unit 通過 encoder 之後的 encoded_output 能夠被分爲兩類, 是因爲所隱含的 with context linguistic feature 天然中文, 英文語言就不同.

我覺得可能的方向是先看看如何使得hidden embedding沒有speaker信息.
這跟語料有關係, 在目前的數據庫下恐怕很難,因爲從輸入信息來看,speaker信息和language信息是等價的

藉助其他的有speaker信息的數據庫例如VCTK. 同時具體的技術可以試試對抗學習

A

我覺得主要的問題是說話人信息跟語言信息綁定在一起,沒有分離開。這跟語料有關係。我覺得可能的方向是先看看如何使得hidden embedding沒有speaker信息,藉助其他的有speaker信息的數據庫例如VCTK。

具體的技術可以試試對抗學習

我本來想的是: input unit 通過 encoder 之後的 encoded_output 能夠被分爲兩類, 是因爲所隱含的 with context linguistic feature 天然中文, 英文語言就不同.

但是其實因爲是從audio反傳回來的, 導致speaker信息會在裏面, 這個是獨立於(理想下)語言linguistic feature體系/空間的, 它的存在也能分爲兩類, 所以會干擾我們對encoded_output的研究

所以我看到的目前的t-SNE是兩類, 其實不能說明說, 中文的encoder之後的信息, 和英文的encoder之後的信息(大致稱爲語言學信息)在該輸入單元(比如目前的字母), 所共處的space下, 是割裂開的兩類, 而不是大量重合一致的, 類似於IPA發音有很多共享的情況.

額 不太準確 咱們老師的課我沒好好上 用起來就不準確

所以一旦去掉了speaker信息, 那麼就可以清爽的觀察編碼之後的語言學特徵/hidden embedding特徵了,

在目前的數據庫下恐怕很難,因爲從輸入信息來看,speaker信息和language信息是等價的

所以去掉speaker是個難點. 去掉speaker之後等到觀察完, 再考慮語言特徵的domain adaptation

考慮數據集的話 確實就是師兄說的VCTK

單語多弄幾個說話人, 比如這篇Building a mixed-lingual neural TTS system with only monolingual data

我先只考慮兩個數據集下的吧

藉助別的的預訓練

  1. 仍頂着目前實驗: (1)先驗證我們的想法, 看看能不能把目前hidden embedding和speaker embedding算下相關性, 然後看看怎麼互相減掉一下說話人向量信息再看分佈, 或者加上另一個說話人向量再看分佈. ----- 這個有個強烈的假設, 就是假設語言特性不是像說話人特性一樣, 可以抽象爲embedding, 是蘊含在字母發音內的, 即hidden embedding內, 不能從26個hidden embedding 內找到共同的那個足夠代表語言特性的向量(而音色可以), 它是對於每個字母都不同的. 因此speaker embedding中幾乎不含語言信息

(2)去掉(1)的假設, 直觀想就是speaker embedding不用了, 用預訓練好的speaker encoder來, speaker features來做, 不能訓練這部分. 比如那個: 很多git 星星.

嗯嗯,你把想法寫清楚成實驗步驟,然後就去試試吧

老師說得對,不要搞太複雜

好東西往往是簡單的

使得hidden embedding沒有speaker信息,藉助其他的有speaker信息的數據庫例如VCTK。 這個是怎麼藉助呢. 就是師兄說的對抗學習嗎~

對,當然只是一個方向

我先按着我知道的兩個對抗方式想想


實驗一: 仿Paper-JD編碼前後分佈分析
第一部分
實驗設置
輸入CUHK論文Demo涉及的句子–small_text_list_for_synthesis.txt
session.run得到向量, 直接當地畫圖, 但是畫T-SNE以後還有?
實驗代碼和過程
先直接用187500steps合成wavs, 感覺沒有10w好, 但有效果, 並且有eval loss支持. 不要過度分析, 設置數據太少, 甚至32/96的那個都沒用上
不知道plot的close, 和一直在一張圖上畫怎麼弄. 因爲每次都是batch第0個, 比較散.
第二部分
PPT中跑出來有線性插值變化的句子–
第三部分
描述: 多跑一個phoneme的實驗, 並且共享encoder, 復現JD. 並和JD對比.
和google的區別, 只有speaker id送到了decoder, 且這一次正確在LSTM前
和CUHK區別, 共享encoder, phoneme.
和JD的區別, 沒有30+30個500句話的說話人.
特點: 最簡單的更改, 沒有residual結構, 主要是看encoder和共享input unit的關係, 用於本大實驗的參照, 以及對論文的子集復現.
實驗設置
拷貝tacotron-2-joee-cs-spe-1fc-ljs-bb-22050-quickconvergence, 叫做: T2-JD-shared-phoneme-SE-DEC-2-speakers
T2-JD-shared-graphyme-SE-DEC-2-speakers, 晚上時間不夠了, 先跑一版, 這個作爲範例-反例. 但是training_data不一定對哦!

實驗二: 具有代表性demo指引下的context vector分析

實驗三: 具有代表性demo指引下的frame級別, phone級別分析, 以及概念的整理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章