CLAP-IPA: 音声とIPA列の対照学習による多言語音声表現の獲得
3つの要点
✔️ 音声信号とそれに対応するIPA(国際音声記号)の列との対照学習により、多言語音声処理の基盤モデル(CLAP-IPA)を構築
✔️ 多言語下のKeyword SpottingおよびForced Alignmentにおいて高い性能を記録
✔️ IPAによる学習の恩恵でzero-shot下でも高い性能を維持できる
The taste of IPA: Towards open-vocabulary keyword spotting and forced alignment in any language
written by Jian Zhu, Changbing Yang, Farhan Samir, Jahurul Islam
(Submitted on 14 Nov 2023)
Comments: NAACL 2024 Main Conference
Subjects: Computation and Language (cs.CL); Sound (cs.SD); Audio and Speech Processing (eess.AS)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
概要
音声言語処理は、音声を入力として様々な自然言語処理タスクの実現を目指す研究分野です。近年はGPT-4oをはじめとする高性能なマルチモーダルモデルが出現しており、音声言語処理に残された課題はほとんど無いように思えるかもしれません。しかし実際にはまだまだ課題は山積みです。本記事ではその中でも特に「モデルの多言語化」に着目します。
モデルの多言語化とは、様々な言語で動作するようなモデルを構築することを指します。英語や日本語のようにデータ資源が潤沢な言語であればモデルの構築は比較的容易と言えます。一方で、世界にはデータ資源が不足している言語が沢山あります。そういった言語においても動作するモデルを構築することは、インクルーシブなAI社会の実現に資するものであると言えます。
本記事で紹介する「CLAP-IPA」は、まさにモデルの多言語化という課題に直接的に取り組んだ研究です。ポイントは、音声の記述方法としてIPA(International Phonetic Alphabet; 国際音声記号)という体系を採用していることです。IPAは世界中のあらゆる言語の「音」を記述するための記号体系であり、例えば「IPA(アイピーエー)」は [aɪ-piː-eɪ] と記述されます。
IPAは多言語化と非常に相性が良いと言えます。仮にIPAの代わりに、我々が普段目にするような文字を使うことを考えてみましょう。例えば英語はアルファベットで記述されているのに対し、日本語は漢字や仮名文字で記述されているため、各言語のモデルはそれぞれ異なる記号体系を前提として構築されることとなります。これはモデルのアーキテクチャそのものにも影響を及ぼすため、多言語で一貫したモデルを構築することが難しくなります。また、世界には文字の体系が定まっていないような言語もあり(スイスドイツ語 や アラビア語方言 など)、そもそもこのような方針が取れないこともあり得ます。これに対し、IPAであれば言語に依らず一貫した記述が可能となるため、モデルの多言語化が自然に可能となります。
CLAP-IPAは CLAP という先行研究が元となっています。そのアイデアを一言で言えば、「音声」と「その記号表現」を対照学習させることでより優れた音声表現の構築を目指すものとまとめられます。CLAPでは「記号表現」として通常のテキストが用いられているのに対し、CLAP-IPAではIPAの列を採用することで多言語化を図っています。結果として、Keyword SpottingとForced Alignmentという二つのタスクで高性能を記録。さらに、IPAを用いた恩恵で特にzero-shot下で高い性能を維持できることが実証されました。
IPA(International Phonetic Alphabet; 国際音声記号)とは
IPAとは、世界中のあらゆる言語の「音」を記述するための記号体系です(たまたま某ビールの品種と同名であるため、論文のPDFを見るとタイトルにビールの絵文字が含まれています。ちょっとした遊び心)。IPAの詳細は wikipedia記事 にまとまっているので、ここでは簡単な説明にとどめます。
IPAには、スラッシュ//で囲んだ簡素表記と、各括弧[]で囲んだ精密表記という二つの記法があります。簡素表記は記述対象の言語によって表記法が異なってくるため、言語非依存に音を記述する場合は後者の精密表記が便利です。そこで以下では精密表記による記述に統一します(例:[a], [p] のように表記します)。
我々が話す「音」にはいろいろな種類があります。例えば英語の「dog」は [d], [ɒ], [ɡ] という三つの音で構成されます。これに対し日本語の「道具」は、厳密には [d], [o], [ɯ], [ɡ], [ɯ] という五つの音で構成されます。両者は異なる言語ですが、音のレベルで見ると実は共通した部分があることが分かります。具体的には [d] と [g] は同じ音であるとみなせます。異なる言語であっても音のレベルで見ると共通部分がある、ということは直感的にも明らかでしょう。このようにして、同じ音を同じ記号(=[d] とか [g] とか)として定義してまとめ上げたものがIPAであると言えます。
前述のwikipedia記事にはIPA一覧をまとめた表もあるので、興味のある方は是非チェックしてみてください。
提案モデル(CLAP-IPA)の詳細
データセット(IPA-PACK)の作成
モデルの訓練に先立ち、音声とIPA列が組となったデータセットを作成する必要があります。まず音声とその書き起こしの組からなる多言語データセットを用意します。論文では、FLEURS・MSWC・DORECOの3種類のデータセットを用意しています。この時点での書き起こしは通常のテキストであり、IPA列ではありません。そこでこの書き起こしテキストをG2P(Grapheme-to-Phoneme)システムを用いてIPA列に変換します。Graphemeとは書記素、すなわち通常のテキストを指します。PhonemeはここではIPAのことと捉えて構いません。したがってG2Pは、通常のテキストをIPA列に変換するシステムであると言えます。
これにより、以下の統計に示すようなデータセット(IPAPACK)が得られました。VoxCommunisは38の言語から構成された先行研究のデータセットですが、IPAPACKは実に115もの言語から構成されています。
ただし、G2Pがあらゆる言語において高く信頼できるわけではなく、本来は人手による妥当性の検証が必要です。一部の言語については人手による検証が入っていますが、115言語全てについて検証することはほぼ不可能です。そのため筆者らもIPAPACKにエラーが含まれる可能性があることは認めており、ここが本研究の大きなLimitationの一つと言えるでしょう。
モデルの訓練
CLAP-IPAの元となっているCLAPは「Contrastive Language-Audio Pretraining」の略です。画像処理におけるCLIP(Contrastive Language-Image Pretraining)というモデルを聞いたことのある方も多いと思いますが、CLAPはその音声バージョンと捉えて良いでしょう。
IPA列と音声の組からなるデータセット $\mathcal{B}=\{P_i, S_i\}$ に対し、$x_i=f_S(P_i)$ をIPA列の表現ベクトル、$y_i=f_T(S_i)$ を音声の表現ベクトルとします。ここで、$f_S$(IPA列のエンコーダー)としてはBERTを、$f_T$(音声のエンコーダー)としてはWhisperを用います。
このもとで、以下で定義されるSigLIP lossを計算します。
$z_{ij}$ は正解の組に対しては $1$ を、それ以外の組に対しては $-1$ を取ります。直感的には、正解の組に対しては内積 $x_i\cdot y_j$ を大きくし、それ以外の組では小さくする方向に学習が進みます。すなわち、正解の組のベクトルの類似度が大きくなるように学習が進むこととなります。
なお、先行研究のCLAPではsoftmax lossを採用しており、CLAP-IPAとはlossが異なる点に注意してください。CLAP-IPAが採用しているsigmoid lossの方が性質が良いことが知られています。興味のある方は こちらの論文 をご参照ください。
実験の詳細
CLAP-IPAの性能を、Keyword Spotting(KWS)とForced Alignmentという二つのタスクで評価します。
Keyword Spotting(KWS)
KWSは、あるキーワードと音声を入力として、音声にそのキーワードが含まれているか否かを判定する二値分類タスクです。例えばSiriに対して「Hey Siri」と声をかけるとSiriとのやり取りが開始しますが、これはまさにKWSを行なっていると言えます。
CLAP-IPAをKWSに利用する方法は非常にシンプルです。与えられたキーワードをIPA列に変換してCLAP-IPAの埋め込み$x$を得て、それと入力音声の埋め込み$y$との類似度を測定することで実現できます。類似度が閾値より大きければ「キーワードが音声に含まれている」と判断します。
Forced Alignment
Forced Alignmentとは、与えられた音声から、音素や単語の時間幅を推定するタスクです。CLAP-IPAからはこのForced Alignmentが自然に現れることが分かりました。すなわち、音声とそのIPA列の類似度行列を取ると、ちょうど単語ないし音素の時間幅で類似度が高くなることが観察されたのです。以下の図を見ると分かりやすいでしょう。
二つの行列は共に音声とIPA列(※正確には「単語/音素の列」に変換しています。詳細は論文参照)との類似度行列を表しています。上の図はzero-shot setting、すなわち事前訓練済みのCLAP-IPAで計算した行列です。下の図はalignmentを用いてfine-tuningしたモデルの行列です。zero-shotであってもなんとなく対応が取れているのが見て取れます。fine-tuningするとそれがよりハッキリ現れるのが見て取れるでしょう。
実験結果
まず、KWSの結果を示します。以下はLibriPhraseというデータセットの英語の評価結果を示したものです。
いくつか補足説明します。まず、1番上のEasy/Hardはタスクの難易度を示しており、例えばキーワードが「friend」であったときに、「guard」のような全く違うキーワードの判定をさせるのがEasy、「frind」のように似たような発音のキーワードの判定をさせるのがHardです。Methodの最初の3つは先行研究です。CLAP-IPA-TEXTはIPAの代わりに通常のテキストを、CLAP-IPA-PHONEは音素列を学習に用いたものです。両者に共通しているのは、IPAを用いていないために書き起こしテキストが言語依存となっていることです。残りの5つのモデルが提案モデルとなっています。CLAP-IPA-FLEURSとCLAP-IPA-VCは訓練データを少なくしたモデルで、残りのモデルは訓練データをフルに使っています。モデルサイズはtiny < base < smallの順で大きいです。
結果を見てみると、EasyタスクについてはCLAP-IPAの性能が際立つ一方、Hardタスクにおいては先行研究が上回っています。また、CLAP-IPA-TEXTやCLAP-IPA-PHONEとそれ以外のCLAP-IPA(=IPA列で学習されたモデル)とを比べると、後者の方が全体的な性能が良いことが分かります。このことから、多言語下においてIPAを使う有用性が示されています。
以下はunseen言語、すなわち事前訓練で学習データに入っていない言語での実験結果です。
IPA列で学習している下5個のモデルの性能が特に際立っていますね。
次にForced Alignmentの結果を示します。以下は英語のデータセットであるTIMITの結果です。単語および音素とのアラインメントの性能が示されています。
上6行が先行研究、下6行が提案手法です。先行研究の単語に対する結果が表示されていませんが、これはおそらく英語のForced Alignmentのために訓練されているモデルで性能がかなり高いからではないかと思われます。CLAP-IPAの結果を見てみると、Forced Alignmentのために訓練されていないzero-shot性能であってもまずまずの性能を記録し、それがfine-tuningによって大きく向上することが分かります。
以下はseen言語とunseen言語との結果の比較です。
unseenで性能が上がっているのはさすがに偶然かと思われますが、少なくとも下がっていないのはかなりすごいことだと思います。ここでもIPAを学習に用いる利点が如実に表れています。
まとめ
本研究では、音声とIPA列との対照学習により、多言語の音声表現を獲得する手法を提案しました。特にzero-shot下(unseen言語)での性能は目を見張るものがあり、IPAの良さが遺憾無く発揮されているのではないでしょうか。
通常、IPAが機械学習モデルに登場する機会はそれほど多くありません。理由としては、先述した通り、多言語で信頼のおけるIPAへの変換器がまだ無いことが挙げられます。本研究で作成したIPAPACKにもそれなりにエラーが含まれているでしょう。それでも実際にある程度の規模で学習させてみて、その性能を検証したところが本論文の優れたポイントであると言えます。今後IPAが脚光を浴び、G2Pの研究やIPAを学習に用いる研究が現れることが期待されます。
この記事に関するカテゴリー