[音量注意] 今音声を複製して、他人の声で音声を生み出すニューラルネットワークの技術が進んでいます。こちらの動画は2016年時点のものですが、投稿者によるニューラルネットワークを応用したアニメ声優の音声作成に成功しています。
そもそもニューラルネットワークとは何か?
近年注目されている機械学習や深層学習(ディープラーニング)を学習する際に、おさえておきたいのが「ニューラルネットワーク」という概念。機械学習と呼ばれるものには多くの手法があるが、そのひとつがニューラルネットワークというアプローチです。これはつまり機械学習、深層学習の一つなのです。
これは、人間の脳内にある神経細胞(ニューロン)とそのつながり、神経回路網を、「人工ニューロン」という数式的なモデルで表現したもので、 ニューラルネットワークは、入力層、出力層、隠れ層から構成され、層と層の間には、ニューロン同士のつながりの強さを示す重み「W」が存在します。
「人間の脳の中にあるニューロンは電気信号として情報伝達を行います。その際にシナプスの結合強度(つながりの強さ)によって、情報の伝わりやすさが変わってきます。この結合強度を、人工ニューロンでは重みWで表現する」
引用:ビジネス+IT
今回のような声の作成については、音声という抽象度の高いデータに法則性を発見し、機械学習により複雑な関数近似をして分類するために、ディープラーニング手法を用いて、人間の音声を自動的に制作します。代表的なフレームワークでは、「TensorFlow」「Chainer」「Caffe」などが有名です。
今回の音声作成の実験内容
今回使用したのが LSTM(Long short-term memory) モデルと使用し、3つのレイヤーと680ものニューロンが存在しています。
今回使用する音声に対して、法則性を見つけようとし、発見したらそれを再生することができます。使用した機器やシステムが決してハイスペックではないにせよ、データの複雑さとサイズを含めて、実現できたらすごいことだと、投稿者は話しています。
[音声サンプル]
『ぴゅあぴゅあ』18禁恋愛アドベンチャーゲームに登場するひなた役の金松由花さん
[記録方式]
11025Hzの8ビットオーディオを使用。
理由は、音声ファイルはテキストファイルと比べて早く大きく、10分の取り込みですでに6.29MBに達していたため
[使用ファイル]
“torch-rnn” (https://github.com/jcjohnson/torch-rnn/), これは実際に学び、プレーンテキストを生成するように設計されている。今回投稿者は、私すべてのデータをUTF-8テキストに変換するプログラムを書き、torch-rnnがそのテキストを快活に処理してくれたようです。
今回ニューラルネットワークプログラムのコーディングをどうやって行うか試行錯誤をした結果、これを行ったが、 torch-rnnは約300KBを超えるデータを出力したくないため、生成されるすべてのサウンドは約27秒しかないのが制約条件です。
[エポック数]
コンピュータが35エポック(74,000回)という回数の学習をするのに、およそ29時間かかり、サンプル(出力オーディオ)を生成するのに12時間以上かかっています。これらの時間は、同じサーバーがトレーニングとサンプリングの両方(過去のネットワーク「チェックポイント」から)で同時に行なったため、遅くなったということです。サーバーに対してもかなりの負荷がかかりそうですね。
[開発環境]
バイナリからUTF-8までのプログラムについて、このプログラムは、基本的にUTF-8のエンコーディングで、音声出力後は最大256の一意のUTF-8文字が存在しています。環境はWindows上で行われ、重要なコードをC++のようなコードで書き直してます。
開発者のブログもかなり興味深いので、興味のある方はぜひ一読してみてください!
参照:robbi