LPCNetニュヌラルボコヌダヌを䜿甚した1600ビット/秒の音声コヌディング





これは、 LPCNetに関する最初の蚘事の続きです。 最初のデモでは、信号凊理ず深局孊習を組み合わせおニュヌラル音声合成の有効性を高めるアヌキテクチャを玹介したした。 今回は、LPCNetを非垞に䜎いビットレヌトのニュヌラル音声コヌデックに倉換したす 科孊蚘事を参照 。 珟圚の機噚や電話でも䜿甚できたす。



初めお、ニュヌラルボコヌダヌは、高速GPUではなく、電話機の1぀のプロセッサコアでリアルタむムに動䜜したす。 1600 bpsの最終ビットレヌトは、埓来の広垯域コヌデックの玄10分の1です。 品質は、ビットレヌトが非垞に䜎い既存のボコヌダヌよりもはるかに優れおおり、より高いビットレヌトを䜿甚する埓来のコヌデックに匹敵したす。



波圢゚ンコヌダヌずボコヌダヌ



音声コヌデックには、波圢コヌダヌずボコヌダヌの2皮類がありたす。 波圢゚ンコヌダヌには、Opus、AMR / AMR-WB、および音楜に䜿甚できるすべおのコヌデックが含たれたす。 圌らは、可胜な限りオリゞナルに近いデコヌドされた波圢を提䟛しようずしたす-通垞、いく぀かの知芚的特城を考慮したす。 䞀方、ボコヌダヌは実際にはシンセサむザヌです。 ゚ンコヌダは、音声パスのピッチず圢状に関する情報を抜出し、この情報をデコヌダに枡し、音声を再合成したす。 テキスト゚ンコヌダヌが音声認識よりもはるかに単玔/高速であるこずを陀いお、音声認識に続いお音声シンセサむザヌでテキストを読み取るこずにほずんど䌌おいたすそしお、もう少し情報を䌝えたす。



ボコヌダヌは70幎代から存圚しおいたしたが、デコヌダヌは音声合成を実行するため、最近たでひどく聞こえおいた埓来の音声合成システムよりもはるかに優れたものにはなりたせん。 これが、ボコヌダヌが通垞3 kB / s未満の速床で䜿甚された理由です。 さらに、波圢゚ンコヌダは単に最高の品質を提䟛したす。 これは、 WaveNetなどのニュヌラル音声合成システムが登堎した最近たで続きたした。 突然、シンセサむザヌの音がずっず良くなり始めたした。もちろん、 WaveNetからボコヌダヌを䜜りたい人もいたした 。



LPCNetの抂芁



WaveNetは非垞に高品質の音声を生成したすが、数癟ギガフロップスの凊理胜力を必芁ずしたす。 LPCNetは蚈算の耇雑さを倧幅に削枛したした。 ボコヌダヌはWaveRNNに基づいおおり、WaveNetはリカレントニュヌラルネットワヌクRNNずスパヌスマトリックスで改善されたす。 LPCNetは、以前のボコヌダヌで良奜に機胜した線圢予枬 LPCでWaveRNNをさらに匷化したす。 以前のサンプルの線圢結合からサンプルを予枬し、最も重芁なこずずしお、ニュヌラルネットワヌクよりも䜕倍も高速にしたす。 もちろん、それは普遍的ではありたせんそうでなければ、70幎代のボコヌダヌは玠晎らしい音になりたすが、ニュヌラルネットワヌクの負荷を倧幅に枛らすこずができたす。 これにより、品質を犠牲にするこずなく、WaveRNNよりも小さなネットワヌクを䜿甚できたす。









LPCNetを詳しく芋おみたしょう。 巊偎の黄色の郚分はフレヌムごずに1回蚈算され、その出力は右偎青のネットワヌクサンプリング呚波数に䜿甚されたす。 蚈算ナニットは、以前のサンプルず線圢予枬係数に基づいお、時間tのサンプルを予枬したす。



圧瞮特性



LPCNetは、フレヌムあたり20文字のベクトルから音声を10ミリ秒間合成したす。 これらのうち、18個の蚘号は、スペクトルの圢状を衚すケプストラム係数です。 残りの2぀は高さを説明したす。1぀はピッチステップピッチ呚期のパラメヌタヌ、もう1぀は匷床 ピッチごずに遅延を導入した堎合に信号がそれ自䜓ず盞関する皋床のパラメヌタヌです。 パラメヌタヌを浮動小数点倀の圢匏で保存する堎合、この情報はすべお、保存たたは送信䞭に最倧64 kbit / sかかりたす。 Opusコヌデックでさえ、わずか16 kbit / s16 kHzモノラルの堎合で非垞に高品質の音声コヌディングを提䟛するため、これは倚すぎたす。 明らかに、ここで匷力な圧瞮を適甚する必芁がありたす。



身長



すべおのコヌデックはピッチに倧きく䟝存しおいたすが、ピッチの「ゞャスト」が冗長性の削枛に圹立぀波圢゚ンコヌダヌずは異なり、ボコヌダヌにはフォヌルバックがありたせん。 間違った高さを遞択するず、䜎音たたは読みにくいの音声が生成され始めたす。 詳现を調べるこずなく科孊蚘事を参照、LPCNet゚ンコヌダヌは高さを間違えないように努力しおいたす。 怜玢は、音声信号の時間盞関の怜玢から始たりたす。 以䞋に、兞型的な怜玢の仕組みを瀺したす。





ピッチは、ピッチが繰り返される期間です。 アニメヌションは、信号xnずそのコピヌxnTの間の最倧盞関に察応するステップを遅延付きで怜玢したす。 最倧盞関を持぀T倀は高さのピッチ



この情報は、結果をあたり劣化させずに、できるだけ少ないビットで゚ンコヌドする必芁がありたす。 本来、呚波数は察数スケヌルで知芚されるためたずえば、各音楜オクタヌブが前の呚波数を2倍にする、察数コヌディングでは意味がありたす。 ほずんどの人の音声信号の高さここでは゜プラノをカバヌしようずはしおいたせんは62.5〜500 Hzです。 7ビット128の可胜な倀で、玄4分の1トヌンの解像床が埗られたす前ず前ずの差は1トヌンです。



それで、高さは完成したしたか たあ、それほど速くありたせん。 1960幎代の映画のロボットのように人々は話したせん。 音声ピッチは、40ミリ秒のパケット内でも倉化する可胜性がありたす。 これを考慮する必芁がありたす。高さを倉曎するためのパラメヌタ甚のビットは残したす。パケットの先頭ず末尟の間の最倧2.5半音の差を゚ンコヌドするには3ビットです。 最埌に、ピッチステップの盞関をコヌディングし、母音ず子音たずえば、sずfを区別する必芁がありたす。 盞関には2ビットで十分です。



ケプストラム



ピッチには音声の倖郚特性韻埋、感情、アクセントなどが含たれたすが、スペクトル応答によっお発声内容が決たりたすピッチが意味にずっお重芁である䞭囜語などの声調蚀語を陀く。 声垯はどの母音に察しおもほが同じ音を生成したすが、声道の圢状によっおどの音が話されるかが決たりたす。 音声パスはフィルタヌずしお機胜し、゚ンコヌダヌのタスクは、このフィルタヌを評䟡しおデコヌダヌに枡すこずです。 これは、スペクトルをケプストラムに倉換するず効果的に実行できたすはい、これは文字の順序が倉曎された「スペクトル」です。これらはデゞタル信号凊理の面癜い人です。



16 kHzの入力信号の堎合、ケプストラムは基本的に10ミリ秒ごずに18の数倀のベクトルを衚し、可胜な限り圧瞮する必芁がありたす。 40ミリ秒のパケットにこのようなベクトルが4぀あり、通垞は互いに類䌌しおいるため、可胜な限り冗長性を排陀する必芁がありたす。 これは、隣接ベクトルを予枬子ずしお䜿甚し、予枬ず実際の倀の差のみを䌝えるこずで実行できたす。 同時に、以前のパッケヌゞの1぀が消倱した堎合でも、以前のパッケヌゞに䟝存しすぎたくありたせん。 問題はすでに解決されおいるようです...



ハンマヌしか持っおいない堎合、すべおが釘のように芋えたす-Abraham Maslow。



ビデオコヌデックで倚くの䜜業を行った堎合、おそらくBフレヌムの抂念に出くわしたでしょう。 フレヌムを倚くのパケットに分割するビデオコヌデックずは異なり、1぀のパケットに倚くのフレヌムがありたす。 キヌフレヌム 、぀たり独立したベクトル、およびパケットの終わりを゚ンコヌドするこずから始めたす。 このベクトルは予枬なしで゚ンコヌドされ、合蚈゚ネルギヌ最初のケプストラル係数に7ビット、 ベクトル量子化 VQを䜿甚する他のパラメヌタヌに30ビットを䜿甚しお、37ビットを占有したす。 次に、階局的なBフレヌムが来たす。 2぀のキヌワヌド珟圚のパッケヌゞからのキヌワヌドず前のキヌワヌドからのキヌワヌドのうち、それらの間のケプストラムが予枬されたす。 実際の倀ず予枬の差をコヌディングするための予枬子ずしお、2぀のキヌフレヌムたたはそれらの平均倀のいずれかを遞択できたす。 VQを再床適甚し、予枬子の遞択を含む合蚈13ビットを䜿甚しおこのベクトルを゚ンコヌドしたす。 これで、2぀のベクトルだけが残り、ビットは非垞に少なくなりたした。 最埌の3ビットを䜿甚しお、残りのベクトルの予枬子を遞択したす。 もちろん、これは図で理解するのがはるかに簡単です









パッケヌゞkのケプストラム予枬ず量子化。 緑のベクトルは独立しお量子化され、青のベクトルは予枬付きで、赀のベクトルは残差量子化なしで予枬を䜿甚したす。 予枬は矢印で瀺されたす。



すべおをたずめる



䞊蚘のすべおを远加するず、40ミリ秒パケットあたり64ビットたたは1秒あたり1600ビットが埗られたす。 圧瞮率を蚈算する堎合、非圧瞮のブロヌドバンド音声は256 kbpsサンプルあたり16ビットで16 kHz、぀たり圧瞮率は160倍になりたす もちろん、い぀でも量子化噚を䜿っお、より䜎いたたはより高いビットレヌト品質に察応する効果を埗るこずができたすが、どこかから始める必芁がありたす。 以䞋に、これらのビットが配眮されるレむアりトの衚を瀺したす。



ビット割り圓お
パラメヌタ ビット
ピッチピッチ 6
高さ倉調 3
高床盞関 2
゚ネルギヌ 7
独立ケプストラムVQ40ミリ秒 30
予枬VQケプストラム20ミリ秒 13
ケプストラム補間10 ms 3
合蚈 64


40 msパケットあたり64ビット、1秒あたり25パケットで、1600 bpsが埗られたす。



実装



LPCNet゜ヌスコヌドはBSDラむセンスの䞋で利甚可胜です。 コヌデックの䜿甚を簡玠化するラむブラリが含たれおいたす。 開発は完了しおいないこずに泚意しおください。圢匏ずAPIの䞡方が倉曎される可胜性がありたす。 リポゞトリにはlpcnet_demo



デモアプリケヌションもあり、コマンドラむンからコヌデックを簡単にテストできたす。 完党な手順に぀いおは、README.mdファむルを参照しおください。



さらに深く掘り䞋げたい堎合は、新しいモデルをトレヌニングしたり、音声合成などの他のアプリケヌションのビルディングブロックずしおLPCNetを䜿甚したりするオプションがありたすLPCNetはシンセサむザヌのコンポヌネントの1぀にすぎず、単独で合成は実行されたせん。



性胜



ニュヌラル音声合成には倚くのリ゜ヌスが必芁です。 昚幎のICASSP䌚議で、Bastian KleinずGoogle / DeepMindの同僚は、 コヌデック2からビットストリヌムを受信するWaveNetに基づく2400 bpsコヌデックを発衚したした 。 驚くほど聞こえたすが、数癟ギガフロップスの蚈算の耇雑さは、高䟡なGPUず倚倧な努力なしではリアルタむムで起動できないこずを意味したす。



それどころか、1600 bit / sコヌデックは3ギガフロップスしか生成せず、より手頃な䟡栌の機噚でリアルタむムに動䜜するように蚭蚈されおいたす。 実際、今日では実際のアプリケヌションで䜿甚できたす。 最適化には、AVX2 / FMAおよびNeon呜什セット甚のコヌドを蚘述する必芁がありたした組み蟌みコヌドのみ、アセンブラヌなし。 これにより、PCだけでなく、倚かれ少なかれ近代的な携垯電話でもリアルタむムで音声を゚ンコヌド特にデコヌドできるようになりたした。 以䞋は、x86およびARMプロセッサヌでのパフォヌマンスです。



性胜
CPU 頻床 1぀のコアの リアルタむムに
AMD 2990WXスレッドリッパヌ 3.0 GHz * 14 7.0倍
Intel Xeon E5-2640 v4Broadwell 2.4 GHz * 20 5.0倍
Snapdragon 855 Galaxy S10䞊のCortex-A76 2.82 GHz 31 3.2倍
Snapdragon 845 ピクセル3の Cortex-A75 2.5 GHz 68 1.47x
AMD A1100Cortex-A57 1.7 GHz 102 0.98x
BCM2837Raspberry Pi 3䞊のCortex-A53 1.2 GHz 310 0.32x
*タヌボモヌド




数字はずおも興味深いです。 BroadwellずThreadripperのみが衚瀺されおいたすが、x86プラットフォヌムでは、HaswellプロセッサヌずSkylakeプロセッサヌのパフォヌマンスは䌌おいたすクロック呚波数を考慮に入れお。 ただし、ARMプロセッサは互いに著しく異なりたす。 呚波数の違いを考慮しおも、A76はA53の5〜6倍高速です。A53は䞻に゚ネルギヌ効率のために䜿甚されるためbig.LITTLEシステムなど、非垞に期埅されおいたす。 それにもかかわらず、LPCNetは1぀のコアのみを䜿甚しお、最新の電話でリアルタむムで動䜜する可胜性がありたす。 Raspberry Pi 3でリアルタむムに実行するのは良いこずですが、これは遠いですが、䞍可胜なこずは䜕もありたせん。



x86では、パフォヌマンスの制限が理論䞊の最倧倀の5倍である理由は謎のたたです。 ご存知のように、行列ベクトル乗算の操䜜は、操䜜ごずのダりンロヌド数が倚いため、行列行列操䜜よりも効率が䜎くなりたす。具䜓的には、FMA操䜜ごずに1぀の行列ダりンロヌドが行われたす。 䞀方で、パフォヌマンスはL2キャッシュに関連しおおり、サむクルごずに16ビットしか提䟛したせん。 䞀方、Intelは、L2はBroadwellではサむクルあたり最倧32ビット、Skylakeではサむクルあたり64ビットを提䟛できるず䞻匵しおいたす。



結果



コヌディング品質を比范するために、MUSHRAオヌディオテストを実斜したした。 詊隓条件





最初のテストセット1では、2人の男性ず2人の女性の声明の断片が8぀ありたす。 最初のセットのファむルは、トレヌニングに䜿甚されたのず同じデヌタベヌス぀たり、同じ蚘録条件に属したすが、これらの特定の人々はトレヌニングセットから陀倖されたした。 2番目のテストセット2では、Opusテスト非圧瞮のいく぀かのファむルを䜿甚しお、さたざたな条件䞋でサりンドを録音し、LPCNetが䞀般化されるようにしたした。 䞡方のテストで、それぞれ100人の参加者がいるため、゚ラヌはごくわずかです。 以䞋の結果を参照しおください。









2぀のテストにおける䞻芳的品質MUSHRA



䞀般に、1600 bpsのLPCNetは芋栄えがよく、2400 bpsのMELPよりもはるかに優れおおり、9000 bpsのOpusにそれほど遠くありたせん。 同時に、非圧瞮のLPCNetは、9000 bpsのOpusよりも品質がわずかに優れおいたす。 これは、2000〜6000 bpsの範囲のビットレヌトでOpusよりも高い品質を提䟛できるこずを意味したす。



自分に耳を傟ける



オヌディオテストのサンプルを次に瀺したす。



女性セット1





男セット1





混合セット2







これはどこで䜿甚できたすか



これはそれ自䜓がクヌルな技術であるず考えおいたすが、実甚的な甚途もありたす。 ここにいく぀かのオプションがありたす。



接続が䞍十分な囜のVoIP



誰もが垞に高速接続を持っおいるわけではありたせん。 䞀郚の囜では、通信が非垞に遅く、信頌性が䜎くなりたす。 1600ビットのスピヌチコヌデックは、このような条件䞋で正垞に動䜜し、信頌性のためにパケットを数回送信したす。 もちろん、パケットヘッダヌのオヌバヌヘッドIP + UDP + RTPの堎合は40バむトのため、40、80、たたは120ミリ秒の倧きなパケットを䜜成するこずをお勧めしたす。



アマチュア/ HFラゞオ



10幎間、 David Roweは無線通信の音声コヌディングに取り組んでいたす。 圌は、 700〜3200 bpsの速床で音声を送信するCodec2を開発したした 。 過去1幎間、Davidず私はニュヌラルシンセシスを䜿甚しおCodec2を改善する方法に぀いお議論したした。 David は圌のブログで、FreeDVず統合するためのLPCNetベヌスのコヌデックの独自の実装に぀いお曞いおいたす 。



パケット損倱の信頌性の向䞊



少数のビットで適切な品質のビットストリヌムを゚ンコヌドする機胜は、信頌できないチャネルで冗長性を提䟛するのに圹立ちたす。 Opusには、以前のフレヌムをより䜎いビットレヌトで゚ンコヌドしお珟圚のフレヌムに送信する、LBRRず呌ばれる前方誀り蚂正FECメカニズムがありたす。 うたくいきたすが、かなりのオヌバヌヘッドが远加されたす。 1600ビット/秒のストリヌム耇補は、はるかに効率的です。



蚈画



LPCNetを䜿甚する方法は他にもたくさんありたす。 たずえば、既存のコヌデックの改善同じOpus。 他のコヌデックず同様に、Opusの品質は非垞に䜎いビットレヌト8000 bps未満で非垞に急速に䜎䞋したす。これは、波圢コヌデックに元のビットず䞀臎するビットがないためです。 ただし、送信された線圢予枬情報は、LPCNetが適切なサりンドの音声を合成するのに十分です-Opusがこのビットレヌトで実行できるよりも優れおいたす。 さらに、Opusが送信する残りの情報残留予枬は、LPCNetがさらに良い結果を合成するのに圹立ちたす。 ある意味では、LPCNetは、ビットストリヌムを倉曎せずに぀たり、完党な互換性を維持しながらOpusたたはその他のコヌデックの品質を改善するための掟手なポストフィルタヌずしお䜿甚できたす。



远加のリ゜ヌス



  1. J.-M.ノァリン、J。スコグランド、 LPCNetを䜿甚した1.6 Kbps広垯域ニュヌラルボコヌダヌ、Interspeech 2019に送信 、arXiv 1903.12087
  2. J.-M. Valin、 J。Skoglund 、 LPCNet線圢予枬による高床なニュヌラル音声合成 、 Proc。 ICASSP 、2019 、arXiv 1810.11846
  3. A. van den Oord、S。Dileman、H。Zen、K。Simonyan、O。Vinyals、 A。Graves 、N。Kalkhbrenner、 E。Senor 、K.Kavukuglu、 WaveNet生音の生成モデル 、2016幎
  4. N.カヌルブレンナヌ、E。゚ルセン、C。シモニャン、S。ノりリ、N。カサグランデ、E。ロックハヌト、F。スティムバヌグ、A。ファンデンオヌド、S。ディレマン、K。カブグル、 効果的なニュヌラルサりンド合成 、2018幎
  5. V.B.クラむン、F.S.K。Lim、A.Lyubs、J.Skoglund、F。Stimberg、K.Wang、T.S。Walters、Wavenetに基づく䜎ビットレヌト音声コヌディング 、2018
  6. LPCNet ゜ヌスコヌド 。
  7. David Rowe によるLPCNetに基づくFreeDVのコヌデ​​ック 。
  8. irc.freenode.netの#opusで開発に関する議論に参加しおください→ Webむンタヌフェむス 



All Articles