NNSVS とは、オープンソースの機械学習ライブラリである Pytorch
をベースとした研究用歌声合成ライブラリである。簡単に言えば、NEUTRINO のようなソフトウェアを作るためのライブラリである。
概要
以前から統計的音声合成フレームワークであるnnmnkwii
やWaveNet のフリーな実装
を発表していた山本りゅういち氏
により 2020 年 4 月より開発が開始された。合成方法は Vocaloid や UTAU のような波形接続型ではなく Sinsy や NEUTRINO のような統計的音声合成である。結果の再現性が重視されており、レシピという形でデータの準備から音声合成まで行うスクリプトが提供されている。
公式が提供しているのは東北きりたん、謡子、JSUT (Japanese speech corpus of Saruwatari-lab)
、PJS (Phoneme-balanced Japanese Singing-voice corpus)
、おふとん P 歌声データベース
、夏目悠李/男声歌声データベース
、御丹宮くるみ歌声データベース
用の 7 つのレシピだが、他に有志により 黒っぽいど/黒昴宿 -AI- の学習済みモデル、Haruqa(AI) 用の学習済みモデルが公開されている。
統計的音声合成とは
統計的音声合成は波形接続型の音声合成のように録音された音声の小片を組み合わせて使用するのではなく、録音されたデータから音の高さや口やのどの形など、実際の音声の生成に関係していると思われる要素を数値で抽出し (音響特徴量)、その数値と楽譜の関係を機械学習の手法で学習・予測することで音声を合成する。学習方法として Sinsy で使用されている隠れマルコフモデル (HMM) が長く使用されてきたが、最近では NEUTRINO のようにニューラルネットワーク (DNN) を使用する方法が広まっている。
品質
NNSVS は楽譜と音声データからタイムラグ (楽譜と実際の発声のタイミングの差) 、継続長 (各音素の持続時間)、音響特徴量の 3 つをニューラルネットワークによって学習するが、デフォルトで使用されている音響特徴量用のニューラルネットワーク (音響モデル) はかなりの確率で音の高さを外す。これはおふとん P 歌声データベースや御丹宮くるみ歌声データベース用のように童謡をを主体とした学習データよりも、夏目悠李/男声歌声データベースのようなオールジャンルの学習データで特に顕著である。あまりの音程の外しっぷりに NEUTRINO のような流暢で自然な歌声を期待していた場合は深く落胆するかもしれない。
しかし音の高さに関しては 2020年11月に NNSVS の公式リポジトリにマージされた 混合密度ネットワーク
と呼ばれる手法を使うとかなり安定する。また現在 国立情報学研究所
の Wang Xin 博士 (NEUTRINO で使用されている Neural Source-Filter waveform models
の第一著者でもある) の論文に基づいて Shallow Autoregressive モデル
の実装が進められており歌声合成への応用の検証が行われている。
使用法
NNSVS 本体は python プログラムでレシピはシェルスクリプトのため、 python と bash などの UNIX 由来のツールが必要になる。使用法は Google Colaboratory を使うか自分の PC を使うかの 2 通りに大別され、また自分の PC を使う場合は PC に直接 Linux をインストールする、Windows subsystem for Linux (WSL) を使う、Windows 用の python と MSYS2
を使うパターンの 3 つが考えられる。
MacOS での利用は NVIDIA が CUDA 10.2 で MacOS のサポートを終了した
ため長期的にはあまりお勧めではないが、おそらく WSL 程度の労力で利用可能であると推測される。
Google Colaboratory から使用する
- 長所
- 短所
自分の PC に Linux をインストールして使う
- 長所
- 短所
自分の PC に Windows subsystem for Linux をインストールして使う
- 長所
- 短所
自分の PC に Windows 用の python と MSYS2 をインストールして使う
- 長所
-
- Google Colaboratory のような時間制限や容量制限がなく好きなときに好きなだけ歌声合成できる
- 環境構築のためのmini-HOWTO
が存在する - 環境構築を半自動化してくれるスクリプト (pnew - portable NNSVS environment for Windows
) が存在する
- 短所
NNSVS で自作の歌声データベースを使う
- 音声データ
- 楽譜 (MusicXml フォーマット, または MusicXML ファイルから変換された HTS フルコンテキストラベルファイル)
- 単音素ラベルファイル(音声データに含まれる各音素の開始時間、終了時間が設定されたもの)
1 の音声データは Python が扱うことのできるフォーマットであればなんでも良い。個人作成の歌声データベースでは東北きりたんと同様に50曲程度収録していることが多いが、謡子のように30曲30分程度の小規模なデータベースでも歌声合成は可能である。音声データは多ければ多いほど良いが、その分楽譜や単音素ラベルファイル作成に必要な労力も増える。最低何曲必要かは学習データの質にも依ると思われるが、合計6分程度の不十分な学習データでは深夜の外国のラジオのような音質になる。
2、3の楽譜および単音素ラベルファイルに関して、NNSVS では楽譜の情報(言語/音楽特徴量)を抽出するのに Sinsy の楽譜変換機能を使って MusicXML ファイルを HTS フルコンテキストラベルファイルに変換して利用している。そして両者に含まれる音素の種類と数は厳密に一致している必要がある。既存の歌声データベースを使って NNSVS 用のレシピを作成するための作業と必要な労力はほぼこのすりあわせに集中しており、例えば作者のkiritan_singing
を見るとその苦労のあとが垣間見える。
一部の個人制作の歌声データベースでは UTAU の setParam や oto.ini を使用してこれらのファイルが作成されており、有志により作業手順をまとめた技術文書の準備が進行中である。
自作の歌声データベースの NNSVS 用レシピの作り方
参考: How to build a new voicedb? · Issue #22 · r9y9/nnsvs
- PJS 用のレシピを自作の歌声データベースの名前でコピーする。
cp -r egs/pjs egs/<自作の歌声データベースの名前> - egs/<自作の歌声データベースの名前>/svs-world-conv/config.yaml を好きなエディタで編集する。最低限編集が必要なのは以下の通り:
- egs/<自作の歌声データベースの名前>/svs-world-conv/run.sh を好きなエディタで編集する。最低限編集が必要なのは以下の通り:
- 以下のコマンドでレシピを実行する。
もし自作の歌声データベースの単音素ラベルファイルと MusicXML から変換された HTS フルコンテキストラベルファイルの内容に齟齬がある場合は、レシピはステージ 0 (データの準備)の段階で停止する。よくある原因として音素の表記のゆれや撥音の前の母音の数 (Sinsy の撥音の扱いはクセがある)が挙げられる。両者の差異がなくなるまで単音素ラベルファイルか MusicXML ファイルを手作業で修正する。もしレシピが最後まで実行されると、学習の検証用および最終的な評価用に選んだ曲が egs/&amp;amp;amp;amp;amp;amp;lt;自作の歌声データベースの名前&amp;amp;amp;amp;amp;amp;gt;/svs-world-conv/exp/&amp;amp;amp;amp;amp;amp;lt;自作の歌声データベースの歌い手の名前&amp;amp;amp;amp;amp;amp;gt;/synthesis/ 以下のディレクトリに出力される。bash run.sh --stage 0 --stop_stage 6
フリーの音声合成ソフトウェア/ライブラリの比較
| UTAU | Sinsy | NEUTRINO | NNSVS | |
|---|---|---|---|---|
| 作者(敬称略) | 飴屋/菖蒲 | 名古屋工業大学 | SHACHI | 山本りゅういち |
| 合成方式 | 波形接続型 | 統計的音声合成 | 統計的音声合成 | 統計的音声合成 |
| 学習方式 | HMM/DNN | DNN | DNN | |
| ソースコード | クローズドソース | 修正 BSD ライセンス (DNN 部分は未公開) | クローズドソース | MIT ライセンス |
| 入力方式 | ust | MusicXML | MusicXML | MusicXML, HTSフルコンテキストラベルファイル |
| ユーザインターフェイス | 公式で GUI を配布 | Web サービスあり | 調声支援ツールなど外部ツールあり | コマンドライン |
関連動画
オリジナル曲
kadotanimitsuru氏のオリジナル曲のセルフカバー
ロモット氏のオリジナル曲
カバー曲
台湾の Maplestyle 氏のカバー
上記以外にも soundcloud で #NNSVS タグで検索すると多くの作品を聴くことができる。
関連コミュニティ・チャンネル
ニコニコ上に関連コミュニティやチャンネルはないが、 Discord 上に情報交換用のサーバ
があり質疑応答や制作物の供覧が行われている。また海外の UTAU 音源製作者やユーザも参加している。
関連リンク
公式/開発者関連
- GitHub - r9y9/nnsvs: Neural network-based singing voice synthesis library for research
(Github リポジトリ) - NNSVS: Pytorch ベースの研究用歌声合成ライブラリ
(作者の山本りゅういち氏のブログ記事)
利用しているデータベースなど
- 研究者向け東北きりたん歌唱データベース
- JSUT (Japanese speech corpus of Saruwatari-lab)
- PJS (Phoneme-balanced Japanese Singing-voice corpus)
- おふとん P 歌声データベース
- 夏目悠李/男声歌声データベース
- 御丹宮くるみ歌声データベース
有志によるレシピ、学習済みモデルなど
おふとん P 歌声データベース、夏目悠李/男声歌声データベース、御丹宮くるみ歌声データベース用のレシピは2020年11月4日に NNSVS の公式リポジトリにマージされたため、前2者に関しては公式のレシピを使用することが推奨される。御丹宮くるみ歌声データベース用のレシピに関しては上述のくれいじー氏のリポジトリで収録音源やレシピの改善が行われており、その成果を享受したい場合はくれいじー氏のレシピを使用すると良い。
- oatsu-gh/nnsvs_oniku_kurumi_utagoe_db
(くれいじー氏による御丹宮くるみ歌声データベース用のレシピ) - utau-namineritsu-singing
(くれいじー氏による UTAU 音源「波音リツ」の音声で作った試験用歌唱データベースとレシピ) - Haruqa (AI) の学習済みモデル
(学習元データは未公開) - 黒っぽいど/黒昴宿 -AI- の歌声データベースおよび学習済みモデル
- おふとん P 歌声データベース用の Jupyter Notebook ファイル
("Open in Colab" ボタンを押すと Google Colaboratory で歌声合成ができる) - 夏目悠李/男声歌声データベース用の Jupyter Notebook ファイル
- 御丹宮くるみ歌声データベース用の Jupyter Notebook ファイル
チュートリアル、解説記事など
- Google Colaboratory で NNSVS で遊ぶ mini-HOWTO
- Windows で可搬性のある NNSVS 環境を作る mini-HOWTO
- Windows で可搬性のある NNSVS 環境で遊ぶ mini-HOWTO
- VSinger 御丹宮くるみに歌ってもらおう
(上述のくれいじー氏による解説記事) - AI シンガー「夏目悠李」の使い方 (with Gdrive)
(上述のアマノケイ氏による解説記事) - Very professional NNSVS tutorial
台湾の haru0l 氏による英語のチュートリアル
関連項目
- 4
- 0pt


