1. مروری بر مدل‌های گفتار

1.1. معرفی مدل‌های متن به گفتار و گفتار به متن اوپن‌آی

مدل متن به گفتار (TTS)

مدل TTS اوپن‌آی قادر است اطلاعات متنی را به خروجی گفتار تبدیل کند. این فرآیند شامل تجزیه و تحلیل متن، استفاده از الگوریتم‌های سنتز گفتار و تنظیمات کیفیت صدا می‌شود. این مدل امکان می‌دهد تا رایانه بتواند هر نوع متنی را بخواند و محتوا را قابل فهم و دسترس‌پذیرتر کند. تکنولوژی TTS برای افراد با نابینایی بصری، رانندگان یا هر کسی که ترجیح می‌دهد اطلاعات را از طریق گوش دادن دریافت کند، بسیار مهم است.

مدل گفتار به متن (STT)

متناظر با TTS، مدل STT قادر است اطلاعات گفتار را به متن تبدیل کند. زمانی که ورودی صوتی اصلی پردازش می‌شود، سیستم STT ابتدا تشخیص گفتار را انجام می‌دهد، سپس استخراج ویژگی‌ها را انجام می‌دهد. سپس سیگنال صوتی را با استفاده از مدل‌های صوتی و زبانی به واژگان نگاشت می‌دهد و در نهایت خروجی متنی تولید می‌کند. تکنولوژی STT به طور گسترده در شناسایی گفتار، ترجمه جلسات و تولید زیرنویس در زمان واقعی استفاده می‌شود.

1.2. سناریوهای کاربرد

  • خواندن وبلاگ به صورت شفاهی
  • تولید گفتار چندزبانه

3. API متن به گفتار

3.1. شروع سریع

در این بخش، نحوه تبدیل سریع متن به گفتار با استفاده از دستور curl و یک کلاینت پایتون نشان داده خواهد شد. برای تولید فایل‌های گفتاری، شما به عنوان یک توسعه‌دهنده یا کاربر غیر فنی، می‌توانید به سادگی با ارسال یک درخواست API فایل‌های گفتاری تولید کنید.

ارسال درخواست با استفاده از Curl

برای تولید گفتار با استفاده از ابزار خط فرمان curl، مراحل زیر را دنبال کنید:

  1. اطمینان حاصل کنید که curl در سیستم شما نصب شده باشد و شما یک کلید API معتبر اوپن‌آی داشته باشید.
  2. از دستور curl زیر برای تبدیل متن به گفتار استفاده کنید:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "امروز یک روز عالی برای ساخت محصولاتی است که مردم دوست دارند!",
    "voice": "alloy"
  }' \
  --output speech.mp3

در دستور فوق، $OPENAI_API_KEY نمایانگر کلید API شماست، فیلد input متنی است که می‌خواهید تبدیل کنید، فیلد model مدل صدایی است که می‌خواهید استفاده کنید و پارامتر voice صدا را انتخاب می‌کند. در اینجا، ما برای صدای مصنوعی فلزی alloy را انتخاب کرده‌ایم. گزینه --output نام و فرمت فایل خروجی را مشخص می‌کند.

استفاده از کلاینت پایتون

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

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="امروز یک روز عالی برای ساخت محصولاتی است که مردم دوست دارند!"
)

response.stream_to_file("output.mp3")

در این برش کد، ابتدا کتابخانه openai را وارد می‌کنیم و یک نمونه از کلاینت OpenAI ایجاد می‌کنیم. سپس از متد audio.speech.create برای ارسال یک درخواست استفاده می‌کنیم و مدل، صدا و متن مورد تبدیل را مشخص می‌کنیم. در آخر از متد stream_to_file برای ذخیره جریان گفتار تولیدی به یک فایل استفاده می‌کنیم.

3.2. انتخاب کیفیت صدا و صدای مناسب

انتخاب صحیح کیفیت صوتی و صدا برای پروژه شما یک گام حیاتی در تضمین بهترین تجربه کاربر است. API ما دو گزینه برای مدل‌های کیفیت صوتی ارائه می‌دهد: tts-1 و tts-1-hd.

  • tts-1: دارای تاخیر کمتر، مناسب برای برنامه‌های زمان واقعی، اما با کیفیت صوتی نسبتاً پایین‌تر.
  • tts-1-hd: خروجی صوتی با کیفیت بالاتر را ارائه می‌دهد و برای نیازهای تولید گفتار با کیفیت بالا و غیر زمان واقعی مناسب است.

به علاوه، API متن به گفتار اوپن‌آی گزینه‌های صدای مختلفی را ارائه می‌دهد:

  • Alloy
  • Echo
  • Fable
  • Onyx
  • Nova
  • Shimmer

به منظور انتخاب صدا مناسب، شما می‌توانید نمونه‌های صدای مختلف را تست کرده و بر اساس نیازهای پروژه و مخاطبان هدف، صدای مناسب را انتخاب کنید. عواملی مانند سبک صحبت، نرخ گفتار و تلفظ را در نظر بگیرید تا صدایی را بیابید که احساسات و حرفه‌ایت خوبی را انتقال دهد.

3.3. فرمت‌های خروجی و زبان‌های پشتیبانی شده

API متن به گفتار اوپن‌آی به طور پیش‌فرض از فرمت خروجی MP3 استفاده می‌کند اما از فرمت‌های صوتی مختلف دیگری نیز پشتیبانی می‌کند:

  • Opus: مناسب برای استریمینگ اینترنتی و ارتباطات با تاخیر کم.
  • AAC: برای فشرده‌سازی صوتی دیجیتال، ترجیحاً توسط پلتفرم‌هایی مانند یوتیوب، اندروید و iOS استفاده می‌شود.
  • FLAC: فرمت فشرده‌سازی صوتی بی‌تلفات که توسط اهالی علاقه‌مند به صدا برای بایگانی بکار می‌رود.

در حوزه پشتیبانی از زبان، API اوپن‌آی از مدل Whisper پیروی می‌کند و انواع گسترده‌ای از زبان‌ها را برای پشتیبانی از زبان‌های ملی فراهم می‌کند.

3.4. قابلیت استریم صوتی به صورت زمان واقعی

برای برآورده کردن نیازهای برنامه‌های زمان واقعی، API ما پشتیبانی از استریم صوتی به صورت زمان واقعی فراهم می‌کند. در زیر یک مثال Python برای پیاده‌سازی استریم صوتی به صورت زمان واقعی آمده است:

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="سلام دنیا! این یک آزمون استریمینگ است.",
)

response.stream_to_file("output.mp3")

4. API تبدیل گفتار به متن

4.1. شروع سریع

در این بخش، عمدتاً قابلیت‌های API OpenAI برای تبدیل گفتار به متن را معرفی می‌کنیم.

ابتدا، شما نیازمند داشتن یک کلید API معتبر OpenAI و آماده‌سازی یک فایل صوتی هستید.

می‌توانید از دستور curl برای ارسال یک درخواست POST حاوی فایل صوتی استفاده کنید. کلید API خود را جایگزین OPENAI_API_KEY کنید و مسیر صحیح فایل را تنظیم کنید.

curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header 'Authorization: Bearer OPENAI_API_KEY' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/path/to/your/audio/file.mp3 \
  --form model=whisper-1

بعد از اجرای دستور فوق، یک پاسخ به‌صورت JSON حاوی اطلاعات متن تبدیل شده ارائه می‌شود.

به عنوان مثال:

{
  "text": "تصور کنید بی‌تردیدترین ایده‌ای را که تا به حال داشته‌اید و به دنبال بزرگ‌شدن آن در مقیاسی 100 یا 1,000 برابری هستید،..."
}

4.2. فرمت‌های فایل پشتیبانی شده و اندازه‌ها

این API از انواع مختلف فرمت‌های رایج فایل صوتی برای برآورده کردن نیازهای مختلف در صحنه‌های مختلف پشتیبانی می‌کند. فرمت‌های پشتیبانی شده شامل اما به آن محدود نمی‌شود: mp3، mp4، mpeg، mpga، m4a، wav، webm و غیره. این امکان را فراهم می‌کند تا کاربران به راحتی فایل‌های صوتی از منابع مختلف را پردازش کنند.

در مورد اندازه فایل، API فعلی دارای یک محدودیت حجم حداکثر 25 مگابایت است. این بدان معنی است که اگر فایل صوتی شما بیشتر از 25 مگابایت باشد، نیاز خواهید داشت آن را به چند بخش کوچک‌تر از 25 مگابایت تقسیم کنید یا از یک فرمت فشرده‌سازی موثرتر استفاده کنید. به عنوان مثال، فرمت‌های mp3 و opus معمولاً فشرده‌سازی موثری فراهم می‌کنند که باعث کاهش اندازه فایل بدون فداکاری زیادی از کیفیت صوت می‌شود.

اگر با یک فایل بزرگتر از 25 مگابایت مواجه شدید، می‌توانید راهبردهای استفاده از کتابخانه PyDub در Python را در نظر بگیرید تا فایل صوتی خود را به بخش‌های کوچکتر تقسیم کنید:

from pydub import AudioSegment

audio_file = AudioSegment.from_file("your_large_audio_file.mp3")

interval = 10 * 60 * 1000  # 10 دقیقه

chunks = make_chunks(audio_file, interval)

for i, chunk in enumerate(chunks):
    chunk_name = f"audio_chunk{i}.mp3"
    chunk.export(chunk_name, format="mp3")

در کد فوق، تابع make_chunks یک فایل صوتی بزرگ را به چندین بخش با فواصل زمانی 10 دقیقه‌ای تقسیم می‌کند. این بخش‌ها همگی طبق محدودیت اندازه فایل مورد نیاز توسط API هستند و می‌توانند به‌صورت جداگانه به API OpenAI برای تبدیل ارسال شوند.

لطفاً توجه داشته باشید که با وجود اینکه PyDub به ما راهی آسان برای دسترسی به فایل‌های صوتی فراهم می‌کند، همچنان توصیه می‌شود تا هنگام استفاده از آن، به امنیت و پایداری نرم افزارهای شخص ثالث توجه ویژه شود. OpenAI هیچ گونه تضمینی برای نرم افزارهای شخص ثالث ارائه نمی‌دهد.