音声認識・音声合成・話者:声を理解し、声を作る
声を文字にし、文字を声にし、誰の声かを見分ける技術を学びます。基礎層では、音声認識・音声合成・話者識別が何をするのかをつかみます。深掘り層では、隠れマルコフモデルによる音声認識の組み立て、長さのずれを乗り越える CTC、波形をじかに作る WaveNet、そして話者識別のしくみまでを説明でき、大規模な音声認識などの発展も理解できるようになります。
ねらい
このレッスンでは、声を理解し、声を作る技術を学びます。
基礎
「声を文字にする音声認識、文字を声にする音声合成、誰の声かを見分ける話者識別」という全体像をつかみます。前提となる知識がなくても、ここは読み切れます。
1. 声を文字にする:音声認識
音声認識(おんせいにんしき)とは、話した声を文字の並びに変換する技術です。声という音のデータを受け取り、そこで話された言葉を文章として書き起こします。
たとえば「おはよう」と話しかけると、その音を聞き取って、「おはよう」という文字に直します。スマートフォンの音声入力や、会議の自動書き起こしが、身近な例です。前のレッスンでとり出した音の特徴が、ここで手がかりになります。
2. 文字を声にする:音声合成
音声合成(おんせいごうせい)とは、文字の並びから、話し声を作り出す技術です。音声認識とは、ちょうど逆の向きの仕事です。文章を読み上げる声を機械が作ります。
駅の案内放送や、読み上げアプリの声が、身近な例です。かつては機械的で平板な声でしたが、近年は人の声に近い、自然な読み上げができるようになりました。
3. 誰の声かを見分ける:話者識別
話者識別(わしゃしきべつ)とは、声を手がかりに、誰が話しているかを見分ける技術です。声の高さや話し方には、人それぞれの個性があります。その個性をとらえて、話し手を区別します。
声で持ち主を確かめる本人確認や、会議の記録で発言者を区別する使い方があります。なお、声の調子から気持ちを読み取る、音声からの感情分析もあります。感情分析そのものは、自然言語処理のレッスンで学びました。
ここまでの要点
- 音声認識は、話した声を文字の並びに変換します。
- 音声合成は、文字の並びから話し声を作ります。
- 話者識別は、声の個性から、誰が話しているかを見分けます。
まずは全体像をつかめれば十分という人は、ここで区切って大丈夫です。「声を文字に、文字を声に、声から人を見分ける」と押さえられていれば、このテーマの土台はできています。
発展
ここからは、声を文字にし、文字を声にするしくみをくわしく見ます。確率や系列のあつかいなど、数式も少し使います。
4. 音声認識のしくみ:隠れマルコフモデルによる組み立て
音声認識は、長らく2つの部品を組み合わせて作られてきました。1つは、音の特徴が、どの音の単位に対応するかを推定する部品です。これを音響モデルと呼びます。もう1つは、言葉の並びとしてどの文がもっともらしいかを判断する部品です。こちらは、言語モデルのレッスンで学んだ言語モデルにあたります。
音響モデルの土台に長く使われてきたのが、隠れマルコフモデル(かくれマルコフモデル、Hidden Markov Model)です。頭文字をとって HMM(エイチエムエム)とも呼ばれます。
隠れマルコフモデルは、時間とともに移り変わる、目に見えない状態の連なりを表す確率モデルです。声の場合、目に見えない状態は、いまどの音素を話しているか、にあたります。音素は、意味を区別する最小の音の単位で、音声の信号処理のレッスンで学びました。私たちが観測できるのは音の特徴だけで、その裏にある音素の並びは直接は見えません。見えない状態の連なりを確率で推し量る点が、名前の「隠れ」の由来です。
名前のもう半分の「マルコフ」は、強化学習の枠組みのレッスンで学んだマルコフ性のことです。次に何が起きるかは、そこまでの経緯によらず、いまの状態だけで決まる、という割り切りでした。隠れマルコフモデルもこの割り切りを置きます。次にどの音素へ移るかは、それまでにどの音素をたどってきたかによらず、いま話している音素だけで決まると考えます。この割り切りがあるので、音素の並びを端から順に推し量っていけます。
隠れマルコフモデルは、2種類の確率を持ちます。1つは、ある音素から次の音素へ移りやすさを表す確率です。もう1つは、ある音素のときに、どんな音の特徴が出やすいかを表す確率です。この2つを使って、観測した音の特徴の並びから、その裏にあるもっともらしい音素の並びを推定します。推定した音素の並びを言語モデルと合わせて、文へと組み立てます。式で書くと、文らしさの点数 = 音響モデルの確からしさ × 言語モデルの確からしさ となります。読み下すと、音として合っているかと、言葉の並びとして自然かの両方を掛け合わせて、いちばん点数の高い文を選ぶ、という意味です。片方だけでは足りません。音として近くても言葉にならない並びは言語モデルが落とし、言葉として自然でも音と合わない並びは音響モデルが落とします。
5. 長さのずれを乗り越える:CTC とエンドツーエンド音声認識
音声認識には、やっかいな問題があります。入力と出力で、長さが大きくちがうことです。音の特徴は、ごく短い時間ごとに切り出すため、非常に多くの個数になります。一方、書き起こす文字は、それよりずっと少ない個数です。しかも、どの音の区間がどの文字に対応するかは、あらかじめ分かりません。
この対応づけを人手で用意するのは、大変な手間です。そこで、対応づけを与えなくても学習できるようにする工夫が、CTC(シーティーシー、Connectionist Temporal Classification)です。
CTC の考え方は、次のとおりです。まず、何も文字を出さない状態を表す、空白の記号を用意します。そのうえで、多くの音の区間それぞれに、文字か空白を割りあてます。同じ文字が続いたらまとめ、空白を取りのぞくと、目的の文字の並びになります。1つの正解の文字列に対して、その途中の割りあて方は何通りもあります。CTC は、正解に行きつくすべての割りあて方の確率を足し合わせ、それが高くなるように学習します。どこがどの文字か、という細かい対応づけを人が与えなくてよくなります。
CTC のおかげで、音の特徴から文字までを1つのニューラルネットワークで一気に学べるようになりました。音響モデルと言語モデルを別々に組み立てるのではなく、入力から出力までをひとつながりに学ぶこの作り方をエンドツーエンド音声認識と呼びます。
6. 波形をじかに作る:WaveNet と音声合成の系譜
音声合成の方式も、世代を追って移り変わってきました。
初めの世代は、あらかじめ録音しておいた短い音の断片をつなぎ合わせる方式でした。断片をつなぐこの方式を波形接続と呼びます。肉声の断片を使うため部分的には自然ですが、つなぎ目がなめらかになりにくい弱点がありました。
次の世代は、声の特徴を確率モデルから作り出す方式です。ここでも隠れマルコフモデルが使われました。なめらかにつなげられる一方、こもったような機械的な声になりがちでした。
大きな質の向上をもたらしたのが WaveNet(ウェーブネット)です。WaveNet は、2016年に公表された、音の波形そのものを作り出すモデルです。第2節までで見たとおり、デジタルの音は数字の列です。WaveNet は、この数字を1つずつ、直前までの並びから予測して作っていきます。1秒あたり16,000個ほどにもなる数値を順に生成します。言語モデルが次の言葉を予測するのと同じように、次の波形の値を予測するのです。
波形をじかに作るため、WaveNet は肉声に近い、なめらかで自然な声を実現しました。その後の音声合成の質を大きく引き上げたモデルとして知られています。
7. 話者識別:声の個人性をとらえる
話者識別は、声の個性をとらえて、話し手を区別する技術です。声道の形や話し方のくせは人によってちがうため、声の特徴には個人差が表れます。
処理の流れは、おおよそ次のとおりです。まず、声から話し手の個性を表すベクトルをとり出します。次に、そのベクトルどうしの近さで、同じ人かどうかを判断します。あらかじめ登録した人たちの中から話し手を当てる使い方と、名乗った人が本人かどうかを確かめる使い方があります。前者を話者識別、後者を話者認証と呼び分けることもあります。
声で本人を確かめるしくみは、鍵やパスワードの代わりにも使われます。ただし、録音した声で だまされる危険もあるため、なりすましへの対策も合わせて考えられています。
8. 大規模な音声認識と、音声を扱うモデル
ここからは、現行の技術に触れます。音声処理の今を理解するのに役立ちます。
近年は、非常に大量の音声とその書き起こしで学習した、大規模な音声認識モデルが登場しています。多くの言語をまとめて扱い、雑音の多い音声でも高い精度で書き起こせます。2022年に公表された Whisper(ウィスパー)は、その代表例の1つです。こうした顔ぶれは移り変わるため、大量のデータで学ぶという手法の側を押さえておくとよいでしょう。
さらに、声をじかに扱う言語モデルも広がりつつあります。話しかけると、いったん文字にしてから処理するのではなく、音声のまま理解して、音声で応答します。声で対話する使い方が、より自然になっていく方向です。
理解度の確認
説明できる項目にチェックを入れましょう。すべて確認できたら、完了ボタンで記録します。
分からなかった点・気になった点
読み込み中です。