پرش به محتوا پرش به پاورقی

چترباکس، جذاب برای تبدیل متن به صوت

  • یکی از جذاب ترین مدل های هوش مصنوعی مدل های تبدیلی است برای مثال ورودی متنی، تبدیل به صدا یا تصویر شود. در این نوشتار به معرفی یکی از همین مدل ها می‌پردازیم. موسسه resemble ai مدل متن باز خود با نام Chatterbox که یک مدل متن به صدا می‌باشد را معرفی نمود. این مدل با ویژگی کنترل بر شدت احساسات در گفتار می‌تواند صدایی نزدیک تر به واقعیت تولید کند. شما ممکن است بر روی ویدئو، بازی و یا عامل های هوش مصنوعی کار کنید و این مدل می‌تواند به کار شما حیات بخشد.

نکات کلیدی

  • استفاده از مدرن ترین مدل zeroshot متن به صوت
  • استفاده از لایه استخراج ویژگی (backbone) Llama 0.5B
  • کنترل منحصر به فرد بر میزان شدت و اغراق گفتار
  • خروجی بسیار پایدار و هم تراز
  • آموزش دیده بر روی نیم میلیون ساعت داده تمیز شده
  • ثبت هویت در خروجی (watermark)
  • تبدیل آسان متن به صدا

تنظیمات

با استفاده از پارامترهای exaggeration و cfg می‌توان روی خروجی اثر گذاشت. برای اکثر متون مقادیر  exaggeration=0.5 و  cfg=0.5 خروجی مناسبی تولید می‌کند.

افزایش exaggeration باعث افزایش سرعت گفتار و کاهش  cfgموجب سنجیده تر بیان شدن کلمات می‌شود از این رو می‌توان با تنظیم exaggeration در حدود 7/0 و کاهش cfg به حدود 3/0 می‌توان صوتی دراماتیک تولید کرد.

نصب

برای نصب با استفاده از pip برای پایتون می‌توانید دستور زیر را اجرا کرده و در محیط پایتون خود نصب کنید

استفاده از مدل

با استفاده از کد پایتون زیر می‌توانید از مدل استفاده کنید

import torch

import torchaudio as ta

from chatterbox.tts import ChatterboxTTS

# Patch torch.load globally to force CPU

_torch_load = torch.load

def cpu_load(*args, **kwargs):

    if “map_location” not in kwargs:

        kwargs[“map_location”] = torch.device(“cpu”)

    return _torch_load(*args, **kwargs)

torch.load = cpu_load

model = ChatterboxTTS.from_pretrained(device=“cpu”)

text = “Hello from the other side”

wav = model.generate(text)

ta.save(“test.wav”, wav, model.sr)

در ابتدای کد در خطوط اول تا سوم کتابخانه های مورد نیازی فراخوانی شده است

با استفاده تابع cpu_load برنامه بر روی CPU اجرا می‌شود. اگر می‌خواهید برنامه بر روی ‌‌GPU اجرا شود می‌توانید خط بعد از تابع را کامنت کنید.

سپس متن مد نظر را برای متغیر text  تعریف نمایید و کد را اجرا نمایید.

پس از اجرای کد، مدل بارگذاری می‌شود و بر اساس متن انگلیسی تعریف شده صوت تولید می‌گردد.

در خط انتهایی بر اساس پارامتر اول که محل و نام ذخیره خروجی است صوت ذخیره می‌گردد.

import torch

import torchaudio as ta

from chatterbox.tts import ChatterboxTTS

# Patch torch.load globally to force CPU

_torch_load = torch.load

def cpu_load(*args, **kwargs):

    if “map_location” not in kwargs:

        kwargs[“map_location”] = torch.device(“cpu”)

    return _torch_load(*args, **kwargs)

torch.load = cpu_load

model = ChatterboxTTS.from_pretrained(device=“cpu”)

text = “Hello from the other side”

wav = model.generate(text)

ta.save(“test.wav”, wav, model.sr)

پیام بگذارید