Python で学ぶ音声合成 機械学習実践シリーズ(パイソンデマナブオンセイゴウセイ キカイガクシュウジッセンシリーズ)
プログラミング- 著者:
- 山本龍一/高道慎之介(ヤマモトリュウイチ/タカミチシンノスケ)
- 出版社:
- インプレス
- 出版日:
- 2021年08月12日頃
- ISBN:
- 9784295012276
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
技書の森解説
テキストから人の声を作り出す音声合成 (Text-to-Speech) を、理論の章と日本語システムの実装の章を交互に進めながら Python で身につける本が『 Python で学ぶ音声合成』 (山本龍一・高道慎之介 著、インプレス、 2021 年 8 月刊) です。インプレスの「機械学習実践シリーズ」の一冊で、版元紹介によれば『 Python で学ぶ音源分離』『同音声認識』に続く中級者以上向けの巻にあたります。従来の統計的音声合成システムの基礎を解説したうえで、深層学習技術による音声合成の発展を詳説し、公開されているデータセットを使って深層学習ベースの音声合成システムを実際に組み上げるところまで扱います。付属ライブラリ ttslearn は著者が本書のために作成した音声合成のコアライブラリで、 pip でインストールでき、 MIT ライセンスで書籍の外でも利用できます。
統計的パラメトリック合成から WaveNet 、 Tacotron 2 へ進む章構成
ソースコードが付く章は第 4 章から第 10 章までで、第 4 章「 Python による音声信号処理」で波形とスペクトルの扱いを固めたあと、理論と実装が対になって進みます。第 5 章で深層学習に基づく統計的パラメトリック音声合成を学び、第 6 章で日本語 DNN 音声合成システムを実装する。第 7 章で音声波形の生成モデル WaveNet を学び、第 8 章で日本語 WaveNet 音声合成システムを実装する。第 9 章で一貫学習を狙った Tacotron 2 を学び、第 10 章で日本語 Tacotron に基づく音声合成システムを実装する。この三往復が本書の背骨で、実装の 3 章は著者のリポジトリでレシピとして公開されています。付録には日本語音声合成のフルコンテキストラベルの仕様がまとめられており、日本語特有の前処理を自分で組む際の参照資料になります。
テキストから波形までの三段パイプラインと、一貫学習が変えたもの
音声合成が難しいのは、入力のテキストと出力の波形の間に何段もの変換が挟まるからです。古典的な構成では、まずテキスト解析で読みとアクセント、音素の並びといった言語特徴量を作り、次に音響モデルが音素ごとの継続長やスペクトル包絡、基本周波数などの音響特徴量を推定し、最後にボコーダがそれらから波形を復元します。統計的パラメトリック音声合成はこの音響モデルを統計モデルで置き換えた枠組みで、深層学習 の登場で音響モデルの表現力が上がり、 WaveNet はボコーダの段を自己回帰型のニューラルネットワークで置き換えて波形の品質を引き上げました。 Tacotron 2 はさらに、テキスト解析と音響モデルを一つのネットワークで学習する一貫学習 (end-to-end) の代表例で、注意機構によって文字列とスペクトログラムの対応を学習の中で獲得します。本書がこの歴史的な順番で章を並べているのは、各段が何を担っていたかを知らないと、一貫学習モデルが何を省略し、どこで失敗しやすいかが読めないからです。日本語は高低アクセントと読みの曖昧さが大きく、テキスト解析の品質が結果を左右するため、日本語システムを実装対象に据えたことがこの本の希少性でもあります。
ttslearn と JSUT コーパスで日本語音声合成を再現する環境
実装は PyTorch 上で行い、第 6 ・ 8 ・ 10 章のレシピは JSUT コーパスを使った日本語音声合成システムとして公開されています。第 4 章から第 10 章の notebook は著者が実行した結果つきでドキュメントサイトに掲載され、すべて Google Colab でも実行できるよう配慮されています。動作環境は Linux と Mac OS X で、 Windows は動作未確認と明記されており、学習を回すなら CUDA と cuDNN を整えた Linux 環境が推奨です。 Python 環境は PyTorch や NumPy の導入しやすさから Anaconda が推奨され、 Docker イメージも公開されています。学習済みモデルも配布されているため、まず合成音声を聞いてから中身を追う学び方も選べますが、学習済みモデルは非商用のみの利用規約である点は押さえておく必要があります。
中級者向けの前提知識と、向かない読み方
シリーズが中級者以上向けと掲げるとおり、 Python と PyTorch の基本操作、確率と線形代数の初歩、フーリエ変換やスペクトログラムといった信号処理の語彙、そして GPU を使える環境が前提です。機械学習の入門書を 1 冊終えて、次に具体的な応用分野で手を動かしたい人にはちょうど合います。逆に、クラウドの音声合成 API を呼んで読み上げ機能を付けたいだけの人、数式抜きで結果だけ欲しい人、 Windows だけで完結させたい人には向きません。深層学習そのものの土台をまだ作っていない段階なら、ディープラーニング本の選び方 で整理している原理系の本を先に読むほうが、本書の理論章が素直に入ってきます。
日本語で、日本語音声を対象に、統計的パラメトリック合成から Tacotron 2 までを一つのコードベースで追える本は多くありません。音声インタフェースの研究開発に携わる人、合成音声の品質を自分の手で改善したい人、論文のモデル図をコードに落とす訓練を積みたい人にとって、この本と ttslearn は 2021 年刊でも土台として十分に機能し、投じた時間はその後の論文読解の速さで回収できます。
言及 Qiita 記事 (2 件)
この本に興味がある方におすすめ
この本に関連
関連記事
ゼロから作る Deep Learning シリーズの読む順番 - 全 6 巻の内容と選び方を整理
ゼロから作る Deep Learning シリーズ全 6 巻 (基礎 / 自然言語処理 / フレームワーク / 強化学習 / 生成モデル / LLM) の読む順番を解説。各巻の内容 / 発売年 / 前提知識を一覧表で整理し、目的別にどの巻から読むべきかを案内します。
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。
技術書のタイトルに隠された法則 - 「入門」「実践」「詳解」の意味を読み解く
技術書のタイトルに使われる「入門」「実践」「詳解」などのキーワードには暗黙のルールがあります。タイトルだけで本のレベルと内容を見抜くコツを紹介します。