ElevenLabsの新しいTTSモデル「Flash v2.5」を試す
Flashのご紹介
これまでにない高速な人間らしい音声合成を体験してください
Flashをご紹介します。アプリケーションやネットワークの遅延を除き、わずか75msで音声を生成する最新モデルです。
Flashは、低遅延の会話型音声エージェントに最適な推奨モデルです。本日より、当社のConversational AIプラットフォームでFlashを利用できます。
また、APIを直接利用してモデルID「eleven_flash_v2」および「eleven_flash_v2_5」で構築することも可能です:https://elevenlabs.io/docs/api-reference/text-to-speech
Flash v2は英語専用、Flash v2.5は32言語に対応で、両モデルとも、2文字あたり1クレジットのコストです。
Turboモデルに比べると音質や感情表現の深みは若干劣りますが、圧倒的に低い遅延を実現しています。当社のラベラーによるブラインドテストでは、Eleven Flashは一貫して同等の超低遅延モデルを上回り、同カテゴリ内で最速かつ高品質のモデルと評価されました。
用途に最適なモデルを見つけるためのガイドはこちらをご覧ください:https://elevenlabs.io/docs/developer-guides/models
referred from https://elevenlabs.io/blog/meet-flashFlashがもたらす低遅延かつ人間らしい会話型インタラクションを、皆さまがどのように活用されるかを楽しみにしています。
実際の音声は上の記事内でも聞ける。
TTSの使い方は以前試したのでそれに従って。
パッケージインストール
!pip install elevenlabs
!pip freeze | grep -i elevenlabs
elevenlabs==1.50.3
日本語の場合はマルチリンガルに対応しているeleven_flash_v2_5を使う。
from elevenlabs import play
from elevenlabs.client import ElevenLabs
from google.colab import userdata
client = ElevenLabs(
api_key=userdata.get('ELEVENLABS_API_KEY')
)
audio = client.generate(
text="こんにちは!今日はとてもいいお天気ですね!明日はどうでしょうか?",
voice="Aria",
model="eleven_flash_v2_5"
)
# ファイルに保存
with open("sample.mp3", "wb") as f:
for chunk in audio:
if chunk:
f.write(chunk)
# 再生
play("sample.mp3", notebook=True)
実際に生成されたものはこちら
既存モデルとの比較
eleven_turbo_v2_5
eleven_multilingual_v2
なお、前回試したときには気づかなかったけど、実行するたびに生成された音声は微妙に変わるようなので、ElevenLabsのTTSに再現性はないみたい。
seedパラメータで指定できる。
GitHubのREADMEにあるのだが、client.generate()は、client.text_to_speech.convertをラップしたヘルパー関数になっている。
Note that generate is a helper function. If you'd like to access the raw method, simply use client.text_to_speech.convert_realtime.
client.generate()ではどうもseedを渡せないようなので、client.text_to_speech.convertで直接指定する必要がある様子。
from elevenlabs import play
from elevenlabs.client import ElevenLabs, RequestOptions
from google.colab import userdata
client = ElevenLabs(
api_key=userdata.get('ELEVENLABS_API_KEY')
)
audio = client.text_to_speech.convert(
text="こんにちは!今日はとてもいいお天気ですね!明日はどうでしょうか?",
voice_id="9BWtsMINqrJLrRacOk9x", # Aria
model_id="eleven_flash_v2_5",
seed=1 # 指定
)
# ファイルに保存
with open("sample.mp3", "wb") as f:
for chunk in audio:
if chunk:
f.write(chunk)
# 再生
play("sample.mp3", notebook=True)
処理時間の計測
import time
models = [
"eleven_flash_v2_5",
"eleven_turbo_v2_5",
"eleven_multilingual_v2",
]
for model in models:
print(f"### {model} ###")
start = time.perf_counter()
audio = client.generate(
text="こんにちは!今日はとてもいいお天気ですね!明日はどうでしょうか?",
voice="Aria",
model=model,
)
end = time.perf_counter()
print(end-start)
### eleven_flash_v2_5 ###
0.4620215989998542
### eleven_turbo_v2_5 ###
0.5470195769999009
### eleven_multilingual_v2 ###
0.9731960340000114
まあたまたま期待通りの結果が出力されてるけど、何度かやってみると結構ばらつく。多分、これぐらいの文章量だと誤差レベルだと思うし、やり方があんまり良くないかなと思う。
以前からElevenLabsの日本語の精度はあまりよくない、特に読み間違えが多いという印象はあるので、新しいモデルで改善しているのかについては、もう少しいろいろ試してみないとわからない。
ただ低レイテンシーはとても良いと思う。
こっちで試してみたけど、残念な感じだった・・・
