https://adventar.org/calendars/3353 の14日目エントリーです。
歌唱合成エンジン
日本語をサポートする歌唱合成エンジンとしては初音ミクを始めとするVocaloidが圧倒的に有名ですが、Vocaloid以外にも歌唱合成エンジンは存在します。歌唱入力のフロントエンドとしてはVocaloid EditorやPiapro Studioの次あたりにUTAUが有名です。
UTAUはVocaloidのフロントエンドではなく、独自の歌唱合成エンジンを搭載しています(Wikipediaでは「音声伸縮エンジン部」と書かれている部分です)。標準で付いてくるのはresamplerと呼ばれているものですが、これはカスタマイズ可能になっており、実際にさまざまなエンジンが利用可能です。
さまざまな歌唱合成エンジンが存在しているのは、合成アルゴリズムの選択などで特徴が出せるからでもありますし、どのようなパラメーターを考慮するかで特徴が出るからでもあります。
UTAUで楽曲を作り込むと、制作者次第ではかなり人間の歌唱に近いものを作り出せますが、それを可能にしているのがこのような柔軟性です。
音声ライブラリの構築
音声ライブラリの作成作業は、サウンドフォントの作成作業に似ている部分があります。サウンドフォントでは、音色が変わりうる「ゾーン」について、サンプリングデータを割り当てていました。歌唱合成の場合は、発音記号に対応するサンプリングデータを用意する必要があります。
発音記号は、日本語の場合は基本的には50音図の構成に基づいて用意しますが、Vocaloidなどで打ち込んだ経験がある人であれば、実際には同じひらがなでも発音記号が少し違うものが何種類かあることを知っているかもしれません。仕様を決めるのは歌唱合成エンジンやエディタ次第ということになるでしょうが、簡単なものとしては、IPAの国際音声記号に準拠することになるのではないかと思います。
実際には、これに加えて、音声を子音と母音に分解して組み合わせたCVVC音源のようなものがあるわけですが、難しい話になって筆者も説明できる気がしないので、日本語のWikipediaページなど、既に十分詳細にまとめられている情報を参考にしてもらえればと思います。筆者は闇鳴ニュイサイトでいろいろ知ることができました(表現力がすごいので是非チェックしてみてください)。
歌詞の中で使用されている発音記号に合致する音声が音声ライブラリの中にあれば、それを使用して再生することが可能なので、これを応用すると日本語以外でも歌唱合成が可能になります。筆者の台湾の知人にこれを利用して歌唱合成を中国語で実践しているグループがあり、彼らは日本語の資料を読みながら独自の音声ライブラリを構築しているようです(今は活発ではないので過去形のほうが適切かも)。
英語圏でもDiPhoneなどが使われているようで、筆者が先日参加してきたAudio Developers Conference (ADC) 2018でも歌唱合成のセッションで言及されていました。発音記号が複雑になったり連続音をサポートするようになったりすると、録音コストが膨大になるので、この辺りはその辺りでバランスを取りながら行うようです。
world
歌唱合成エンジンのひとつとしてよく選ばれているらしい(?)、worldを取り上げます。
Worldを取り上げたのは、ひとつにはライセンスがOSS準拠(修正BSD)でUTAU本体を含めてこの方面では珍しかったのと、先の台湾のグループではWorld系の派生実装tn_fndsが利用されていたことがあります。筆者はUTAUコミュニティを観察しているわけではないので、「よく使われている」かどうかは正直わかりません。
WorldはAPIの命名がほとんど「ジョジョの奇妙な冒険」の世界から来ていて、名前からは意図がサッパリわからないのですが(Worldそのものもですが関数名もCheapTrickだのHarvestだのStoneMaskだの…)、リポジトリ中のドキュメントである程度説明されています。
あとは、Worldの使い方をpyWorldVocoderで説明されている記事があって、これが参考になるでしょう(機械学習でパラメーターを与える可能性も紹介されています)。
UTAU alternatives
クローズドソースで開発されているUTAUエディタのオープンソース代替を開発して、音声データベースや合成エンジンを再利用しようという動きはたまに見られました。
一番よく知られていたのはC#で書かれていたCadenciiだと思いますが、Vocaloid2のサポートを最後に更新されなくなりました。コードベースがWindows.Formsでその後.NETのUIフレームワークが混迷期にあったことや、Vocaloid2の頃までは仕様がそれなりにオープンだったということがあるかと思います。コードはWin32依存でした。Cadenciiのコードを再利用したforkがgithubにはいくつか存在しますが、おそらくWindows以外のプラットフォームで動作するのはJava移植版ではないかと思います。
エディタ以外も含む全ての構成要素を用意するプロジェクトもいくつかありました。Qtで開発しているQtauというのがひとつあります。ただもう活動はしていないようです。もうひとつRocaloidというプロジェクトもあるのですが、これは新バージョンと新サイトを構築中だというので、やはり活動していない状態です(これはそのうち再開するような雰囲気はなくもないです)。
最初に火をつけたCadenciiを除くと、このあたりのプロジェクトは非日本語圏で開発されているようで、海外からの関心がそれなりに高い分野であるようです。