FA-TOOLS — Header Component

راهنمای جامع تبدیل متن به گفتار (Text to Speech) در پایتون + کد آماده و کاربردی

در این راهنمای جامع، یاد می‌گیرید که چگونه در کمتر از ۵ دقیقه، هر متنی (فارسی یا انگلیسی) را با استفاده از کتابخانه‌های قدرتمند پایتون به صدای طبیعی و باکیفیت تبدیل کنید. تمام کدهای ارائه شده در این مقاله تست‌شده، کاملاً رایگان و آماده استفاده در پروژه‌های واقعی شما هستند.

خلاصه کاربردی مقاله:

  • برای پروژه‌های بدون اینترنت (آفلاین) از کتابخانه pyttsx3 استفاده کنید.
  • برای صدای طبیعی‌تر انگلیسی و فارسی باکیفیت متوسط از gTTS بهره ببرید.
  • برای طبیعی‌ترین صدای فارسی بدون نیاز به API Key پولی، موتور هوشمند edge-tts بهترین انتخاب است.

۱. تبدیل متن به گفتار (TTS) در پایتون چیست؟

تبدیل متن به گفتار (Text to Speech) در پایتون + کد آماده — تصویر 1

تبدیل متن به گفتار (Text to Speech یا به اختصار TTS) فرآیندی است که در آن نوشته‌های متنی توسط برنامه‌های کامپیوتری پردازش شده و به صدای انسان تبدیل می‌شوند. در زبان برنامه‌نویسی پایتون، این کار با استفاده از کتابخانه‌های متعددی انجام می‌شود که کدهای متنی را دریافت کرده و خروجی صوتی با فرمت‌هایی مانند MP3 یا WAV تولید می‌کنند.

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

۲. معرفی و مقایسه بهترین کتابخانه‌های TTS

تبدیل متن به گفتار (Text to Speech) در پایتون + کد آماده — تصویر 2

برای انتخاب ابزار مناسب، ابتدا باید بدانید که هر کتابخانه چه ویژگی‌هایی دارد. جدول زیر مقایسه‌ای جامع بین سه کتابخانه برتر پایتون برای تولید صدا را نشان می‌دهد:

ویژگی / کتابخانه توضیحات و کاربرد اصلی
pyttsx3 آفلاین، سریع، صدای رباتیک، بدون پشتیبانی نیتیو از زبان فارسی روان.
gTTS (Google) آنلاین، نیازمند اینترنت، صدای طبیعی گوگل، پشتیبانی متوسط از فارسی.
Edge-TTS آنلاین (بدون تحریم)، صدای فوق‌العاده طبیعی هوش مصنوعی مایکروسافت، عالی برای فارسی.

۳. آموزش کار با کتابخانه آفلاین pyttsx3

تبدیل متن به گفتار (Text to Speech) در پایتون + کد آماده — تصویر 3

کتابخانه pyttsx3 یک ابزار کاملاً آفلاین برای تبدیل متن به گفتار در پایتون است که با موتورهای صوتی سیستم‌عامل شما (ویندوز، مک یا لینوکس) کار می‌کند. بزرگترین مزیت این کتابخانه عدم نیاز به اتصال اینترنت و سرعت بسیار بالای آن در پردازش متون طولانی است.

ابتدا باید این کتابخانه را از طریق ترمینال یا خط فرمان نصب کنید:

pip install pyttsx3

حالا با استفاده از قطعه کد زیر، یک نمونه متن انگلیسی را به گفتار تبدیل کرده و آن را به عنوان یک فایل صوتی ذخیره می‌کنیم:

import pyttsx3

# مقداردهی اولیه به موتور صوتی
engine = pyttsx3.init()

# تنظیم سرعت خواندن متن (مقدار پیش‌فرض معمولاً 200 است)
engine.setProperty('rate', 150)

# تنظیم میزان بلندی صدا (بین 0 تا 1)
engine.setProperty('volume', 0.9)

# متنی که می‌خواهید خوانده شود
text = "Hello! Welcome to Python text to speech tutorial."

# پخش مستقیم صدا
engine.say(text)
engine.runAndWait()

# ذخیره صدا به عنوان فایل صوتی
engine.save_to_file(text, 'output_offline.mp3')
engine.runAndWait()

۴. آموزش کار با کتابخانه gTTS (گوگل)

تبدیل متن به گفتار (Text to Speech) در پایتون + کد آماده — تصویر 4

کتابخانه gTTS (Google Text-to-Speech) یک ابزار پایتونی است که متن شما را به سرورهای گوگل ارسال کرده و فایل صوتی با کیفیت و لحن طبیعی تحویل می‌دهد. این کتابخانه برای کارکرد صحیح نیاز به اینترنت دارد اما کیفیت صدای خروجی آن به مراتب از روش‌های آفلاین بهتر است.

برای استفاده از این روش، ابتدا با دستور زیر کتابخانه را نصب کنید:

pip install gTTS

سپس با کد زیر، متن فارسی را به فایل صوتی MP3 تبدیل کنید:

from gtts import gTTS

# متن مورد نظر به زبان فارسی
text_fa = "برنامه‌نویسی با پایتون بسیار لذت‌بخش و ساده است."

# ایجاد شیء صوتی با زبان فارسی (fa)
tts = gTTS(text=text_fa, lang='fa', slow=False)

# ذخیره خروجی به صورت فایل صوتی
tts.save("persian_google.mp3")
print("فایل صوتی با موفقیت ذخیره شد.")

۵. بهترین روش برای زبان فارسی: کتابخانه Edge-TTS

تبدیل متن به گفتار (Text to Speech) در پایتون + کد آماده — تصویر 5

کتابخانه edge-tts با استفاده از سرورهای مرورگر مایکروسافت اِج، باکیفیت‌ترین و طبیعی‌ترین صدای فارسی ممکن را بدون نیاز به ساخت حساب کاربری یا پرداخت هزینه تولید می‌کند. صداهای تولید شده با این روش دارای لحن، آوا و تکیه کلام‌های کاملاً انسانی و مبتنی بر شبکه‌های عصبی هستند.

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

pip install edge-tts

از آنجا که این کتابخانه به صورت غیرهمزمان (Asynchronous) کار می‌کند، باید از ماژول asyncio در پایتون برای اجرای آن استفاده کنیم. به کدهای زیر دقت کنید:

import asyncio
import edge_tts

# متن فارسی برای تبدیل به صدا
TEXT = "سلام! به وب‌سایت اف‌ام تولز خوش آمدید. امروز با هم یک کد عالی می‌نویسیم."

# انتخاب صدای زن فارسی (Dilara) یا صدای مرد (Farid)
VOICE = "fa-IR-DilaraNeural" 
OUTPUT_FILE = "natural_persian.mp3"

async def generate_speech() -> None:
    communicate = edge_tts.Communicate(TEXT, VOICE)
    await communicate.save(OUTPUT_FILE)
    print("فایل صوتی فوق‌العاده طبیعی با موفقیت ایجاد شد!")

# اجرای تابع غیرهمزمان
if __name__ == "__main__":
    asyncio.run(generate_speech())

۶. پروژه عملی: ساخت مبدل فایل متنی به فایل صوتی MP3

در پروژه‌های واقعی، معمولاً نیاز است که متن را از یک فایل متنی مثل .txt بخوانید و آن را به یک پادکست یا فایل صوتی تبدیل کنید. در این بخش یک برنامه پایتونی کامل ارائه شده است که یک فایل متنی را باز کرده، محتوای آن را پردازش کرده و مستقیماً به یک فایل صوتی باکیفیت تبدیل می‌کند.

شما می‌توانید از این پروژه در کنار سایر بخش‌ها و تکه‌کدهای پایتون برای توسعه وب‌سایت‌ها یا برنامه‌های دسکتاپ خود استفاده کنید.

import asyncio
import edge_tts
import os

def read_text_file(file_path):
    """خواندن متن از فایل متنی با یونیکد UTF-8"""
    if not os.path.exists(file_path):
        # ایجاد یک فایل نمونه در صورت عدم وجود
        with open(file_path, "w", encoding="utf-8") as f:
            f.write("این یک متن نمونه برای تست پروژه تبدیل متن به صدا است.")
    
    with open(file_path, "r", encoding="utf-8") as f:
        return f.read()

async def text_to_mp3_project(input_txt, output_mp3):
    text_content = read_text_file(input_txt)
    print(f"در حال پردازش متن با طول {len(text_content)} کاراکتر...")
    
    # استفاده از صدای باکیفیت فارسی مایکروسافت اِج
    voice = "fa-IR-FaridNeural" 
    
    communicate = edge_tts.Communicate(text_content, voice)
    await communicate.save(output_mp3)
    print(f"پروژه با موفقیت انجام شد! فایل صوتی ذخیره شد در: {output_mp3}")

# اجرای برنامه
if __name__ == "__main__":
    input_file = "book.txt"
    output_file = "audiobook.mp3"
    
    asyncio.run(text_to_mp3_project(input_file, output_file))

۷. عیب‌یابی سریع و رفع خطاهای رایج

هنگام کار با کدهای بالا ممکن است با چند چالش یا خطای متداول روبرو شوید. در این بخش راه‌حل‌های سریع آن‌ها را بررسی می‌کنیم:

  • خطای ModuleNotFoundError: این خطا یعنی کتابخانه مورد نظر نصب نشده است. مطمئن شوید دستور pip install را در ترمینال درست وارد کرده‌اید.
  • خطای ارتباط اینترنت (gTTS یا edge-tts): این کتابخانه‌ها برای ارتباط با سرورها نیاز به اینترنت پایدار دارند. اگر از پروکسی یا فیلترشکن استفاده می‌کنید، ممکن است ارتباط قطع شود. تغییر وضعیت اتصال شبکه معمولاً مشکل را حل می‌کند.
  • عدم خواندن درست حروف فارسی در ویندوز: هنگام خواندن یا نوشتن فایل‌های متنی در پایتون، حتماً آرگومان encoding="utf-8" را در متد open قرار دهید تا حروف فارسی به شکل علامت سوال یا کاراکترهای عجیب ظاهر نشوند.
  • صدای نامناسب رباتیک در pyttsx3: این ابزار به موتورهای صوتی سیستم‌عامل شما متصل است. در برخی نسخه‌های ویندوز، صدای پیش‌فرض فارسی نصب نیست؛ بنابراین کلمات فارسی هجی شده یا اصلاً خوانده نمی‌شوند. استفاده از روش Edge-TTS بهترین راهکار جایگزین است.

۸. پرسش‌های متداول

آیا ابزارهای معرفی شده محدودیت تعداد کلمات دارند؟

کتابخانه آفلاین pyttsx3 هیچ محدودیتی ندارد. کتابخانه‌های gTTS و edge-tts نیز تا ده‌ها هزار کلمه را بدون مشکل پردازش می‌کنند، اما برای متون بسیار طولانی مانند کل کتاب صوتی، بهتر است متن را به بخش‌های کوچکتری تقسیم کنید.

چگونه سرعت صدای تولید شده در edge-tts را تغییر دهیم؟

شما می‌توانید با اضافه کردن پارامتر rate به شکل rate="+20%" یا rate="-10%" در متد Communicate سرعت خواندن را به سادگی تنظیم کنید.

آیا امکان اجرای این کدها در محیط‌های تحت وب مانند جنگو یا فلسک وجود دارد؟

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

بهترین فرمت برای ذخیره خروجی صدا چیست؟

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

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

Table of Contents

آخرین نوشته‌ها