合成音声

サイト内検索
Search
Exact matches only
Search in title
Search in content
Search in excerpt
Search in comments
Filter by Custom Post Type

音声合成

音声合成とは人間の音声を人工的に作る事です。最近多くの機械が音声で答えてくれるようになりました。

最近のAIによる合成音で更に自然な音声に聞こえるようになるようです。我々は自分で発音できますから合成音の必要なく、音声合成は英語学習には直接関係ありません。しかし、その合成音の作り方を知る事により、言語音声の特性が理解できて、英語の発音練習のヒントになるかもしれません。

何よりも音声信号はデータが連続的に繋がったアナログ信号です。つまり音素のような離散した音が規則正しく並んだものではありません。音声がアナログ信号と言う事は連続的に変化している音のストリームに過ぎません。

人の声を合成するとはどういう作業とは声の高さの成分と共振特性(フォルマント)という2つの特徴を推定することです。人間では声帯で振動するブザー音が生成されて、それが口を通る時に共振が発生します。共振の特性が付与されてその人の声になります。テキストからの音声合成は、これを時々刻々と推定して波形を生成するということになります。

従来は、推定のために発声メカニズムの数理モデルを使っていました。しかし、この数理モデルで自然な音声を出すにためんは問題がありました。例えば、ある人が2回「あいうえお」と言ったと場合にテキストは同じですが、この2回の波形を実際に比べると違うものになっています。この違いがゆらぎ成分であり、人間らしい音声の大事な要素でした。

ゆらぎがない声は、こもったような声に聞こえます。サンプル音を平均化したような声です。口の動きを平均化すると口の動きが小さくなり、肉声感がなくなったような音になります。

数理モデルによる音声合成の場合に、ゆらぎに対応するために確率的なアプローチが使われました。しかし、ゆらぎそのものが不確実ですから、それを記述する確率モデルを構築するのは非常に難しくなります。

2016年に現れたWaveNetが、程良いゆらぎを表現した自然な音声を実現しました。その方法は音声を点として考え“ディープラーニング”させる事でした。

WaveNetでが音声を点の時系列として捉えアナログデータにして、ディープラーニングで学習させています。人間の耳ではアナログ情報しか聞く事ができません。ディープラーニングを音声情報処理に使えるようになった背景は、近年の音声認識や合成技術が改善された大きな理由にはデータを大量に集められるようになり、そして大量のデータを処理する計算が可能になったからです。

一般的にはデータをディープニューラルネットワーク(DNN)に入力し、出力データを対応する教師データと比較し、出力データと教師データの差が小さくなるように繰り返し学ばせる作業を行います。

従来の機械学習で研究者が設計していた特徴量を設計する必要がない代わりに、精度の良い学習のためにはサンプルとなるデータを大量に用意する必要があります。

大量のデータをDNNで学習するには大量の計算が必要で、ディープラーニングの成功にはデータ量と計算機の性能を両立が不可欠です。ディープラーニングが成果を上げている画像処理も、インターネットの発達によるネット上の大量の画像データや計算機の発達があってからです。

このようにディープラーニングが可能になったのは、WaveNetは音声を点として考え、アナログデータような扱いができるようになったからです。

音声はアナログ信号なので、コンピュータで扱う際にはサンプリングおよび量子化という作業が必要です。例えばCD音質の44.1kHz/16bit等です。

これはある音声波形から1秒間に4万4100回、波形の一瞬を標本化して、その波形の値を2の16乗の種類、すなわち、6万5536種類の値に置き換え、1秒間の空気振動を4万4100個の6万5536種類からなる点というデジタルデータで表現しています。

音声を取り扱う際には、16kHzのサンプリング周波数が比較的よく利用されており、音声の特徴をうまく活用することで、8bitの量子化でも比較的高い音質を維持できます。

WaveNetでは、この点を直接DNNで処理しています。音声を、1秒間だけでも1万6000個の点になる巨大な系列データとして捉え、音声合成の際にはこの点を直接DNNから生成することで音声波形を作ります。

これにより、従来の数理モデルで必要だった過程や近似などの研究者による調整作業が必要ありません。

ボーカロイドはどれほどうまく調整しても、どこか“機械的”な感じが抜けておりません。その理由は数理モデルを利用しているからです。数理モデルは実際の現象をかなり単純化しているので、人間の音声の大きな劣化が生まれています。