Closed5

ElevenLabsの新しいTTSモデル「Flash v2.5」を試す

kun432kun432

https://elevenlabs.io/blog/meet-flash

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-flash

Flashがもたらす低遅延かつ人間らしい会話型インタラクションを、皆さまがどのように活用されるかを楽しみにしています。

実際の音声は上の記事内でも聞ける。

kun432kun432

TTSの使い方は以前試したのでそれに従って。

https://zenn.dev/kun432/scraps/56061597330096

パッケージインストール

!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)

実際に生成されたものはこちら

https://audio.com/kun432/audio/elevenlabs-flash-v2-5-jp-sample

既存モデルとの比較

eleven_turbo_v2_5

https://audio.com/kun432/audio/eleven-turbo-v2-5

eleven_multilingual_v2

https://audio.com/kun432/audio/eleven-multilingual-v2

なお、前回試したときには気づかなかったけど、実行するたびに生成された音声は微妙に変わるようなので、ElevenLabsのTTSに再現性はないみたい。

seedパラメータで指定できる。

https://github.com/elevenlabs/elevenlabs-python/blob/b50fec7b2ff487df523ac640a6560c41d500ba51/src/elevenlabs/text_to_speech/client.py#L54

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)
kun432kun432

処理時間の計測

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

まあたまたま期待通りの結果が出力されてるけど、何度かやってみると結構ばらつく。多分、これぐらいの文章量だと誤差レベルだと思うし、やり方があんまり良くないかなと思う。

kun432kun432

以前からElevenLabsの日本語の精度はあまりよくない、特に読み間違えが多いという印象はあるので、新しいモデルで改善しているのかについては、もう少しいろいろ試してみないとわからない。

ただ低レイテンシーはとても良いと思う。

このスクラップは2025/01/23にクローズされました