🔍
[NHN FORWARD 2021] Non-Autoregressive 구조의 한국어 TTS 개발기 - YouTube
Channel: unknown
[11]
こんにちは、NHNのNLPラボのパク・ギナムです。
[14]
この度はNHN FORWARDでNon-Autoregressive構造の
[17]
韓国語TTSの開発経験を発表することになりました。
[20]
これまで音声合成の主流だったAutoregressiveモデルから脱して
[23]
より速くて軽いNon-Autoregressiveモデルが登場したことで
[27]
音声合成サービスの新しい変化を呼び起こしています。
[31]
基本的な音声合成サービスを超えて
[32]
個人化サービスまで、様々な形で活用される
[34]
Non-Autoregressvie構造の音声合成モデルについてご紹介してから
[38]
開発しながら知り得た色んなTipを共有したいと思います。
[45]
まず、マシンラーニングベースのEnd-to-End TTSモデルについて説明してから
[51]
Auto / Non-Autoregressive構造の違いについて
[52]
説明していきたいと思います。
[54]
次にNon-Autoregressive構造ベースの
[56]
韓国語TTSモデルのパイプラインと開発Tipを共有してから
[61]
個人化TTSのための音声複製過程を共有したいと思います。
[64]
最後には今後、NHN 音声合成チームで何を行っていくかについて説明したいと思います。
[71]
まず、End-to-End TTSモデルに至るまでの過程について説明したいと思います。
[77]
そのためには音声合成とは何かから説明する必要があると思いますが
[80]
音声合成とは言い換えれば
[82]
Text-to-Speech、略してTTSと言われています。
[86]
TTSモデルは、テキストを受けたら
[87]
そのテキストの内容に基づいて
[88]
音声を出力する役割を果たします。
[93]
マシンラーニングが使用される前の
[94]
音声合成手法としては大きく2つがありました。
[97]
一つは多量の音便をdatabaseから取り出し、
[100]
合成および組み合わせで出力するconcatenative方法で
[103]
もう一つはhidden Markovモデルを利用して
[105]
テキストに合う音便を統計的に抽出する
[108]
parametric方法がありました。
[110]
しかし、これらは感情のない固い発話をしたり
[113]
構造が複雑で音質に劣るなど
[115]
様々なサービスに使用されるには無理がありました。
[120]
しかし、マシンラーニングの登場により
[122]
我々はテキストをすぐに音声で変換できる
[124]
方法論を持つようになりました。
[128]
現在、End-to-End TTSモデルは2つの段階に分けられています。
[132]
一つはテキストからAcoustic featureを作るAcoustic Modelで
[135]
もう一つはAcoustic Featureから音声
[137]
wavformを作るVocoder Modelです。
[140]
このように2つの段階からなるEnd-to-Endモデルが主流の構造ですが
[143]
最近、これを一つに合わせる
[144]
研究も行われています。
[147]
今後、こちらでお話しするAuto / Non-Auto regressive構造は
[150]
Acoustic Modelに対する話になります。
[154]
Auto / Non-Auto regressiveの違いは
[156]
最近、TTSモデルの構造的変化のうち、最も劇的であり
[159]
TTSの開発において必ず知っておくべき要素です。
[163]
先にAutoregressiveについて調べてみましょう。
[166]
簡単に言えば、前のsequenceの結果を入力にして
[169]
次のsequenceを推論する形の構造です。
[172]
このような構造の代表例として
[173]
機械翻訳の基本モデルである
[175]
seq2seqのdecoderを例に挙げられると思います。
[178]
図では、「I am a student」という入力を
[180]
エンコーダーでtext featureにして
[183]
これとその前のsequenceのフランス語の単語を利用して
[185]
次のフランス語の単語をデコーダーから
[186]
推論する形となっています。
[191]
TTSモデルのうち、最も大衆的に利用されたモデルのtacotronは
[195]
seq2seqと基本的な構造が非常に似ています。
[198]
発表の年度を問えば、tacotronがseq2seqのモデルから
[200]
アイデアを借用したものだと言えます。
[205]
tacotronは seq2seqからtextが
[207]
出力される部分をacoustic featureに
[209]
置き換えたものだと言えます。
[211]
もちろん、autoregressive構造であるだけに
[214]
前のacoustic featureを利用して次のfeatureを推論します。
[218]
しかし、最近1~2年間、Non-Autoregressive構造が
[221]
浮上しています。
[223]
この構造は、前のsequenceを利用して
[225]
次のsequenceの結果を推論するのではなく
[227]
一度にすべてのシーケンスを推論する形となっています。
[230]
特にtransformerという
[232]
non-autoregressvie構造のモデルは
[234]
自然誤処理
[235]
つまり、NLP 分野で活発に研究が行われています。
[240]
NLPのアイデアは、音声合成にもよく適用されます。
[243]
encoderのtext featureを
[244]
transformer decoderを介して
[246]
acoustic featureにする形です。
[248]
このような構造は最近の1~2年の間
[250]
Glow-tts、fastspeechなど、多くのモデルで見られます。
[255]
Non-Autoregressive構造は多くのメリットを持っています。
[259]
パフォーマンスがtacotronに比べて劣らない上
[261]
前のシーケンスの結果を使用しないため
[264]
推論のスピードがはるかに速いです。
[266]
また、tacotronの昔ながらのエラーである
[268]
相次いで合成されてしまうエラーがありません。
[271]
また、後処理を行う必要がなく、モデル内で
[273]
speed pitchなどを調整できる
[275]
機能もあります。
[277]
あえてデメリットを挙げるとしたら、サードパーティー のジュールを利用して
[279]
パイプラインが複雑になる場合があります。
[282]
しかし、これを単純化するする研究も最近行われています。
[287]
あ、一つ、重要なメリットを言い忘れました。
[289]
何よりもtacotronの使用中に
[290]
最も困難だったattentionにエラーが発生して
[293]
失敗する場合は、もうありません。
[297]
では、次のチャプターからは、non-autoregressiveベースの
[300]
韓国語TTSモデルの開発およびTipについてご紹介します。
[306]
韓国語TTSのパイプラインは、比較的に簡単です。
[307]
Data preparation過程は、オーディオのレギュラー化および
[310]
モデルに必要なduration、pitchなどのパラメーターを抽出することで
[313]
一つのデータセットを構築します。
[315]
まず、大規模のデータセットで
[317]
acoustic modelとvocoderモデルをトレーニングして
[319]
pertainedモデルを生成します。
[321]
次にpretrainedモデルをターゲットとする
[323]
話し手の小規模データセットを入れてfine-tuningする方法で
[326]
ターゲットの話し手に対するTTSモデルを生成します。
[331]
モデルとしては、代表的なnon-autoregressiveモデルである
[333]
fastspeech2を選定しました。
[335]
Transformer encoder、decoderで構成されているほか
[338]
One-to-many problemを回避するため
[341]
duration pitch energyなどのfeatureを利用する
[343]
variance adaptorが追加で構成されています。
[347]
Non-autoregressiveで一度にacoustic featureを抽出するためには
[350]
各input featureに対するduration情報が事前にに必要になります。
[354]
従って、prerprocessing過程で
[356]
Montreal forced alignerのようなサードパーティーモジュールを
[358]
各音素に対するduration抽出に使用します。
[361]
右側の図のように各音素が
[363]
何秒から何秒まで発話されるかを測定して
[366]
これをモデルに使用します。
[369]
この時、区切りも一つの発話として認識して
[372]
ラベリングすることが重要です。
[374]
データが十分ではない場合は
[375]
文章をみるだけでどこが
[376]
区切りの部分かを認識できますが
[378]
そうできない場合がたまたまあります。
[381]
もし、区切りを一つのdurationとしてラベリングしなければ
[385]
「小麦粉が柔らかい」を「小麦~粉が柔らかい」のように
[388]
不自然に発話することもあります。
[390]
また、。 ?などの符号ラベリングをする必要があり
[391]
クエスチョンマークのような符号にもラベリングをしてこそ
[393]
符号に合わせて発話を作っていくことができます。
[397]
他にもaudioをnormalizationすることも
[400]
一定のパフォーマンスに大きく貢献し
[402]
durationをベースに
[403]
前後の空白を切ることも
[405]
パフォーマンスを標準化する上で大きく役立ちます。
[410]
データの準備が終わったら、トレーニングに入ります。
[413]
よくトレーニングされたモデルを作るということは
[416]
「過剰適合が起きないようにする」と
[417]
ほぼ同じ言葉であるほど、過剰適合を取るため
[420]
多くのパラメーターを調整する必要があります。
[422]
特にデータ内の文字の頻度や形式などが
[424]
過剰適合を引き起こしやすい
[425]
要素であることを認識しなければなりません。
[428]
「だ」で終わる文章が多い場合は
[430]
「だ」以外の文字で終わる文章は
[431]
一々発話するのが困難なのが
[433]
一つの例になるかと思います。
[434]
過剰適合を防ぐため
[436]
色んなパラメーターに手をつけることがありますが
[438]
encoder decoderのlayerや
[440]
attention headの数を変えるのも良い方法です。
[443]
また、learning rateを適切に進めていくことも
[445]
また重要です。
[447]
個人的には 過剰適合を取ることであるだけに
[449]
dropoutを調整することが
[451]
大きな効果が得られたことをお伝えします。
[455]
モデル選別も難しい作業の一つです。
[458]
モデルパフォーマンスで最も致命的なのは
[460]
過剰適合により
[461]
文章内の一、二文字が似ている
[463]
他の文字で発音される場合ですが
[465]
このような場合は、数値的な情報で見つけるのが非常に難しいです。
[468]
従って、経験に依存するところが少なくありません。
[471]
まずは十分なトレーニングを行うことが重要で、
[474]
schedulerによって変化が行われた区間別に
[476]
結果を分けて確認してみることもお勧めします。
[479]
また、データセットに関連する発話エラーがあるかもしれないので
[482]
該当エラーケースを収集することも
[484]
モデル選別に役立つことがあります。
[488]
モデルパフォーマンスだけでなく、サービス段階におけるパフォーマンスも重要です。
[492]
例えば、 引用符のような符号が入っている時
[495]
自然に読むためには前の引用符はスペースを置いて読んで
[498]
後ろの引用符は続けて読むのが最も自然です。
[502]
このようにサービスに適用されたシナリオを想定して
[505]
自然に発話できるよう、TTSモデルを調整することが非常に重要です。
[510]
では、デモをお見せしたいと思います。
[512]
まず、一番目は通常のTTS音声の結果です。
[516]
外国でも韓国のコンテンツが人気だって信じられますか?
[521]
二番目はpitch値を高く調整して出力された結果です。
[525]
外国でも韓国のコンテンツが人気だって信じられますか?
[530]
声が高くなりました。最後はスピードを速くした時の結果です。
[534]
外国でも韓国のコンテンツが人気だって信じられますか?
[538]
このようにNon-Auto regressive TTSモデルを通じて
[541]
優れたクオリティと汎用性の高いTTSモデルを作ることができました。
[545]
次は自然な発話が適用されたTTSの結果です。
[549]
一番目は読点が多くある時の結果です。
[552]
作品や人物などに対する
[554]
あらすじ、結末、反転要素などが直接·間接的に含まれています。
[558]
二番目は引用符が入った時の結果です。
[561]
チョン局長は「仮想資産の価格を追跡して
[564]
最適なタイミングに還収する予定」だと述べた。
[566]
次のように文章の前後処理を適切に行うことで
[569]
サービスのパフォーマンスを高めることができました。
[574]
次のチャプターからは、基本発話モデルから
[577]
さらに踏み込んで個人化TTSについて調べてみたいと思います。
[581]
我々がTTSを使用する時に
[583]
一般的に提供される声優の声などに接することがよくあります。
[586]
恋人や友達、両親のような身近い人の声を
[589]
TTSで聞いたことはあまりないでしょう。
[592]
しかし、それが可能であれば
[594]
日常の中でより密接にTTSサービスを利用できるのではないでしょうか?
[597]
このようなアイデアから始まったのが個人化TTSです。
[602]
個人化TTSが日常化すれば
[603]
様々なサービスが生み出されると思います。
[606]
母がいない時も母の声で童話を読んでくれたり
[609]
芸能人が真新しいコメントで目を覚ましてくれるアラーム。
[612]
トレーナーが留守でもコーチしてくれる運動ルーティンなど
[615]
様々なところに適用できる
[617]
潜在力を持っています。
[620]
個人化TTSの日常化を実現するため 超えるべき多くのチャレンジが存在します。
[625]
個人化TTSは、録音の利便性のため
[627]
10分以内のデータが求められると思いますが
[630]
これは現在の10~20時間の
[631]
音声データ量に比べ、著しく少ないです。
[634]
また、個人で録音すると思われるだけに スタジオクオリティの音質ではないため
[638]
TTSのパフォーマンスに悪影響を及ぼすこともあるでしょう。
[641]
これらの問題を解決してこそ
[642]
個人化TTSが日常に馴染むことができます。
[647]
個人化TTSを実現するためには、多くのテクニックが必要ですが
[651]
その中で一例をご紹介しますと
[653]
音色抽出などが必要になります。
[656]
既存のPre-trainingされたモデルに音色抽出モジュールで
[658]
抽出された音色を被せることで
[660]
パフォーマンスの低下をできるだけ抑えながら音声を複製できます。
[665]
音色抽出モジュールが効果的に適用するためには
[667]
一番目に同じ話し手であれば
[669]
相違な文章がか入ってきても
[670]
同じfeatureで入力されるように作る必要があります。
[674]
二番目に話し手の間で特徴が似ているのは近く、
[676]
他は遠く配置されるようにfeatureを作る必要があります。
[680]
右側の図のように
[681]
soft/womanと sharp/manの中間
[683]
Featureがこのようなベクトル空間に位置すれば
[685]
当然、sharp/manに近い声である必要があるという意味です。
[690]
我々は約800人の話し手について
[691]
音色抽出ツールから featureを抽出し
[693]
これを2d空間にデプロイしてみました。
[696]
この時、各話し手に対するデータ数は100個です。
[699]
この時、我々は、同じ話し手が同じfeatureを持って
[701]
結合されていることを確認できたと同時に
[704]
また、Mで表示された男性、Fで表示された女性がお互いに区分されて
[707]
グループを形成したことを確認できました。
[710]
これは完璧ではありませんが
[711]
Featureが連続的に変わるということを
[713]
間接的に見せていると言えます。
[717]
我々は、個人化TTSの方法論を音声複製
[720]
つまり、voicecloningと呼んでおり
[722]
パイプラインは次のように構成されます。
[724]
結論的に音声複製のパイプラインは既存の構造に
[727]
音色抽出ツールが含まれた形で構成されました。
[730]
まず、事前トレーニングでpretrainされたacoustic/vocoderモデルを得て
[734]
これを10分以内のデータセットにfine-tuningすることで
[736]
我々が希望するする個人化TTSモデルを確保できました。
[742]
音声複製のトレーニングのいくつかのTipについてお伝えしますと
[744]
音色が過剰適合されるのと音質が過剰適合されるタイミングが異なり
[748]
良いモデルを選ぶことが非常に困難な場合があります。
[751]
従って、過剰適合を防ぐ様々な手法を通じて
[753]
シンクを合わせる必要があります。
[755]
また、高いクオリティのモデルが生成されるタイミングが短いため
[759]
これを取り出すことにもノウハウが必要である上
[762]
個人化TTSに使用される各話し手が一定のクオリティではないため
[765]
これを一元化できる方法も必要になると思います。
[770]
では、デモをお見せしたいと思います。
[772]
どちらが音声複製された声で
[774]
どちらが録音された声かを当ててみてください。
[777]
一番目の音声をお聞かせします。
[781]
あいつらは周りを物ともせずに大声で騒いでいたよ。
[786]
次に、二番目の音声をお聞かせします。
[789]
じゃあ、今日は途中で病気休暇を取って家に帰って休んだらどう?
[794]
では、どちらが音声複製された声なんでしょうか?
[798]
はい、一番目が10分くらいの音声で複製された声でした。
[802]
少し機械音がしていましたので簡単に当てられただろうと思います。
[805]
しかし、音色がほぼ同じだという面で
[807]
ある程度、音声複製は行われたと思います。
[812]
二番目もどちらが音声複製された声で
[814]
どちらが録音された声かを当ててみてください。
[818]
一番目の音声をお聞かせします。
[822]
アフリカで暮らしていた子なんだから暖かくなきゃ。
[826]
次に二番目の音声をお聞かせします。
[829]
北米で人気のアジアのスターを 挙げるとしたらやっぱりBTSだよね!
[835]
では、どちらが音声複製された声でしょうか?
[840]
はい、二番目が10分くらいの音声で複製された声でした。
[844]
両方とも音質、音色ともに似ていて自然だったので
[846]
区分するのが難しかっただろうと思います。
[849]
すべてのケースがこのようによく作られたわけではありませんが
[852]
基本的に音色複製には問題なく
[854]
音質も悪くありませんでした。
[858]
それでは、今後進むべき方向性についてお話したいと思います。
[863]
基本モデルも、まだまだ
[864]
クオリティ向上の余地が多くあります。
[867]
前後処理を高度化してクオリティを引き上げる一方で
[869]
プロセスを自動化して
[871]
より速いトレーニングを可能にしたいと思います。
[873]
また、これから進化するモデルを引き続き追跡し
[875]
開発していきたいと思います。
[877]
感情をエンベッドすることもサービスの重要な要素として
[880]
文章のsentimentによって感情を被らせることができるのであれば
[882]
より高いクオリティのサービスを提供できると思います。
[886]
最後に個人化TTSにおける改善事項を振り返りながら
[889]
ノイズが多いデータでどのように
[891]
高いクオリティの結果を作り出すか
[893]
また、10分以内の少ないデータだけで
[895]
高いクオリティで合成できるかについて
[896]
引き続き研究していくつもりです。
[900]
ご清聴ありがとうございました。
Most Recent Videos:
You can go back to the homepage right here: Homepage





