OpenVoiceとは
OpenVoiceは、リファレンススピーカーの短い音声だけで、その声を複製し、多言語の音声を生成することができる、音声クローニングツールです。
OpenVoiceは、リファレンススピーカーの声色を再現するだけでなく、感情、アクセント、リズム、ポーズ、イントネーションなどの音声スタイルをきめ細かく制御することができます。
また、OpenVoiceは、トレーニングセットに含まれていない言語に対しても、ゼロショットのクロスリンガル音声クローニングを実現します。
(引用元:https://research.myshell.ai/open-voice)
中国語と英語であれば、こちらから気軽に試すことができます。
また、ソースコードはこちらにあります。
Hugging FaceのUI上では、日本語の音声合成が出来ないため、この記事では上のGithubリポジトリ内にあるノートブックを使って、クロスリンガル音声クローニングを行います。
OpenVoiceの仕組みとしては、以下の図解のようになっているようです。
- アクセントや感情、イントーネーションをコントロールしたベーススピーカーの音声を合成
- ベーススピーカーのトーンカラー(声色)を抽出
- リファレンススピーカーのトーンカラー(声色)を抽出
- ベーススピーカーの音声からベーススピーカーの声色のみを消去し、リファレンススピーカーの声色を当てはめる
このようなことを行っていると筆者は解釈しました。
なお、クロスリンガルの音声クローニング(demo_part2.ipynb)では、少し異なります。
1.の部分で、感情等をコントロールすることができません。ベーススピーカーの合成にOpenAIのTTS(Text-to-Speech)を用いているためです。場合によっては自ら録音した音声を用いても良いかもしれません。
moe-speechとは
- 日本人プロ声優による高音質でノイズ・BGM等無しのキャラクター音声データセット(男性・女性キャラクター両方含む)
- 1音声は2-15秒のモノラル44.1kHz 16bit wavファイル
- キャラクターごとにフォルダ分けされている(各キャラクターは匿名化され、ランダムな8文字の英数字による識別子を持つ)
- 現在は合計473キャラクター、約39万の音声ファイル、合計約623時間、184GBの音声が含まれる
- TTS等のタスクに使える質になるよう、機械的に音声の質によりフィルタリング済み
(引用元:https://huggingface.co/datasets/litagin/moe-speech?not-for-all-audiences=true)
今回やること
ざっくり言うと、OpenVoiceのリファレンススピーカーとして、moe-speechの好きな音声を使おうということです。
Amazon PollyやOpenAI TTSは、なかなか流暢な日本語を生成してくれますが、キャラクター(声質)が限られているため、ボイスコミックやオーディオブックを作るには不十分という感じでした。
moe-speechの豊富なデータセットがあれば、狙い通りのキャラクター音声を生成できる可能性が高まります。
こちらの、Obtain Tone Color Embeddingのところを、以下のように書き換えましょう。
base_speaker = f"{output_dir}/openai_source_output.mp3"
source_se, audio_name = se_extractor.get_se(base_speaker, tone_color_converter, vad=True)
#reference_speaker = 'resources/example_reference.mp3' ←元のコード
reference_speaker="../moe-speech/data/1ba0d17b/wav/1ba0d17b_010.wav"
target_se, audio_name = se_extractor.get_se(reference_speaker, tone_color_converter, vad=True)
reference_speakerのパスを、ダウンロードしてきたmoe-speechデータセットの任意の音声ファイルのパスに書き換えます。
そして、その下のtext=[]
の中に、生成したい日本語を入れましょう。リストですが、一つだけ入れれば良いです。
以下の文章を入れてみました。桃太郎の冒頭です。
むかしむかし、あるところに、おじいさんとおばあさんが住んでいました。
おじいさんは山へ芝刈りに、おばあさんは川へ洗濯に行きました。
以下にいくつか、リファレンスとクローニングの結果を挙げます。
1)男性
2)女性
ちなみに、同じリファレンスでも試行ごとにクローニングの結果は少し異なります。声質というよりアクセントや速度が変わっています。
いかがでしょうか?多少変わってしまってはいますが、同じ系統であることは確かなようです。
リファレンススピーカーを変えればいくらでも違うキャラクターの音声を生成できるので、オーディオドラマやボイスコミックへの応用が期待出来ます。