皆さんは、AIの生成音声と聞くとどのような印象を受けるでしょうか?多くの人にとって1番身近な生成音声といえば、iphoneに搭載されている会話型のアシスタントであるsiriや家に設置することができるスピーカー型のアシスタントGoogle Homeなどなのではないでしょうか?
それらのアシスタントAIの音声は内容を聞き取る分には不自由な点はほとんどありませんが、自然な人間の声と比べるとどうしても不自然な話し方であるなというふうに感じてしまいますね!今回紹介する「Parler-TTS」は今まで生成音声が乗り越えられなかった不自然さの壁を一気に乗り越えてしまうような自然な音声を作ることができます。
このクオリティが先ほど例示したsiriやGoogle Homeに導入されればよりAIとの会話がスムーズになる社会も近づくことでしょう。
本記事では、そんなParler-TTSの導入方法や実際に使ってみた感想などを詳しく紹介してきます。ぜひ最後までご覧ください。
目次
1章 Parler-TTSの概要
Parler-TTSはテキストにプロンプトによって会話の内容だけでなく話し方、話者の性別、話すスピード、ノイズレベルなども指定することのできる音声生成モデルです。似たようなAIツールとして、テキストプロンプトによって歌詞を指定して曲を作れるUdioというツールもありますが、意外と話し言葉を自然なイントネーションで出力する方が難しいのではないでしょうか?
Parler-TTSは10000時間分ものデータを使って学習が行われており自然な会話ができるような最適な調整がなされています。
オープンソースで使用できる
この音声生成モデルParler-TTSの特徴として、完全オープンソースで公開されているということがあります。このコードはGitHub上で公開されており、誰でも使用することができます。
さらに、今回のParler-TTSの場合
- 商用利用
- 改変
- 配布
が許可されていることから様々な使い方が考えられます。もちろんこのまま音声合成機能を私的利用または、商用利用に使うこともできます。それに加えて、例えば自分で作ったアプリケーションの音声部分をParler-TTSのコードを使って行うこともできますし、このコードを応用してさらに高性能なParler-TTSの上位互換のような音声合成ツールを作ることもできるのです。
オープンソースで公開されているAIツールは様々存在しますが、そのどれもが商用利用可能であったり改変可能であるわけではないので使用する際には十分に確認が必要です!
https://twitter.com/yoachlacombe/status/1785388739692306587
例えばこちらのX(旧Twitter)の投稿では、特定の話し方や性別などの特徴を「Jenny」というキャラクターとして定義したプロンプトを定義することで一貫した音声を常に使うことができるという工夫をしています。
2章 Parler-TTSの使い方
本章では、早速Parler-TTSを使っていきたいと思います。
Parler-TTSの導入方法
github上でParler-TTSを利用する
先ほど述べたようにParler-TTSはオープンソースのAIツールとなっており、ソースコードがGitHub上に公開されています。
ここでは、簡単に手順を紹介していきます!
①インストール
pip install git+https://github.com/huggingface/parler-tts.git
こちらを実行してインストールしましょう!
②実行
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf
import torch
device = "cpu"
if torch.cuda.is_available():
device = "cuda:0"
if torch.backends.mps.is_available():
device = "mps"
if torch.xpu.is_available():
device = "xpu"
torch_dtype = torch.float16 if device != "cpu" else torch.float32
model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler_tts_mini_v0.1").to(device, dtype=torch_dtype)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler_tts_mini_v0.1")
prompt = "Hey, how are you doing today?"
description = "A female speaker with a slightly low-pitched voice delivers her words quite expressively, in a very confined sounding environment with clear audio quality. She speaks very fast."
input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids).to(torch.float32)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)
こちらのコードを実行するだけで、parler-TTSを使うことができます!
huggingfaceで使う
しかしながら、性能が未知なのにいちいちインストールして容量を食うのは嫌だという方もいるかもしれません。そのような方のためにhuggingface上でデモを使うことができます。
手順は非常に簡単で、こちらのリンクにアクセスするだけです。
画面はこのようになっています。
こちらの「Input Text」にAIに読み上げてほしい文章を入力してください!「Description」ではどのように読み上げてほしいか(口調やテンポ、話者の性別など)を入力することでより自分のイメージに近い音声を読み上げさせることができます。
「Generate Audio」をクリックして音声を生成できます!
例えば画像のように「楽しそうに話して」というプロンプトを入力するとこのような音声が得られました。
男性の声で自然な英語の音声を作ることができました。
楽しそうかどうかというのは相対的に判断しましょう。そのため比較用のプロンプトを新たに作ります。
このように「悲しそうな女性の声」をプロンプトにしてみましょう!
しっかりとプロンプト通り女性の声となり、声のトーンも低く感じます。
Parler-TTSは日本語で使える?
ここで、今まで英語でプロンプトを入力してきましたが、日本語でParler-TTSは使えるのかというのが気になっている方も多いのではないでしょうか?早速試してみましょう!
プロンプト内容は「こんにちは、本日もお疲れ様です」という文章を読み上げてもらい、「朗らかな女性の声で」という説明をつけてみました。
結果はこちら!
このように音声は流れたものの英語でも日本語でもない声のみが流れました。
このことから、現時点でParler-TTSは日本語では使えないということがわかりました!今後多言語に対応する可能性は十分に考えられますので気長に待ちましょう。
3章 まとめ
今回は、音声合成AIツールParler-TTSについてご紹介しました!音声のクオリティに関しては、実際に皆さんにもお聞きしてもらった通り非常に高く人間の音声とほとんど区別がつかないほどでした。
まだ、日本語で使うことができないことが少し残念ですが、今後日本語でも使えるようになれば我々にも使い道が大きく広がることでしょう。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント