ساخت اسکریپت تبدیل متن به گفتار با پایتون

ساخت اسکریپت تبدیل متن به گفتار با پایتون

در دنیای امروز، اتوماسیون وظایف مختلف به کمک اسکریپت‌نویسی، بخش جدایی‌ناپذیری از کارها و پروژه‌های گوناگون است. یکی از این وظایف، تبدیل متن به گفتار (Text-to-Speech یا TTS) است که کاربردهای فراوانی دارد. از خواندن اخبار و مقالات گرفته تا کمک به افراد کم‌بینا و نابینا، TTS می‌تواند تجربه کاربری را به طور چشمگیری بهبود بخشد. در این مقاله، به آموزش ساخت یک اسکریپت ساده اما کاربردی برای تبدیل متن به گفتار با استفاده از زبان برنامه‌نویسی پایتون خواهیم پرداخت. این آموزش در دسته ‘اتوماسیون و اسکریپت‌نویسی’ قرار می‌گیرد و برای افراد مبتدی و متوسط در پایتون مناسب است.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را در سیستم خود نصب دارید:

  • پایتون: نسخه 3.6 یا بالاتر
  • پکیج pyttsx3: این پکیج رابطی برای موتورهای TTS مختلف فراهم می‌کند.

برای نصب pyttsx3، می‌توانید از دستور زیر در ترمینال یا خط فرمان استفاده کنید:

pip install pyttsx3

مقدمه‌ای بر pyttsx3

pyttsx3 یک کتابخانه پایتون است که امکان دسترسی به موتورهای TTS مختلف را فراهم می‌کند. این کتابخانه به شما اجازه می‌دهد تا متن را به گفتار تبدیل کنید، سرعت و حجم صدا را تنظیم کنید، و حتی صداهای مختلف را انتخاب کنید. pyttsx3 از موتورهای TTS مختلفی پشتیبانی می‌کند، از جمله SAPI5 (در ویندوز)، NSSpeechSynthesizer (در macOS) و espeak (در لینوکس).

ساخت اسکریپت پایه

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

import pyttsx3

engine = pyttsx3.init()
text = "سلام، این یک مثال ساده از تبدیل متن به گفتار با پایتون است."
engine.say(text)
engine.runAndWait()

در این کد:

  • import pyttsx3: کتابخانه pyttsx3 را وارد می‌کنیم.
  • engine = pyttsx3.init(): یک شیء engine ایجاد می‌کنیم که برای کنترل موتور TTS استفاده می‌شود.
  • text = "...": متنی که می‌خواهیم به گفتار تبدیل کنیم را تعریف می‌کنیم.
  • engine.say(text): متن را به موتور TTS ارسال می‌کنیم تا آن را به گفتار تبدیل کند.
  • engine.runAndWait(): منتظر می‌مانیم تا موتور TTS فرایند تبدیل متن به گفتار را به پایان برساند و صدا را پخش کند.

تنظیمات صدا

pyttsx3 به شما امکان می‌دهد تا تنظیمات مختلف صدا را تغییر دهید. در زیر، چند نمونه از این تنظیمات آورده شده است:

تغییر سرعت صدا

برای تغییر سرعت صدا، می‌توانید از ویژگی rate استفاده کنید. مقدار این ویژگی، سرعت صدا را بر حسب کلمه در دقیقه (WPM) تعیین می‌کند.

engine.setProperty('rate', 150) # تنظیم سرعت صدا به 150 کلمه در دقیقه

تغییر حجم صدا

برای تغییر حجم صدا، می‌توانید از ویژگی volume استفاده کنید. مقدار این ویژگی، حجم صدا را بین 0 (بی‌صدا) و 1 (حداکثر صدا) تعیین می‌کند.

engine.setProperty('volume', 0.8) # تنظیم حجم صدا به 80 درصد

انتخاب صدا

برای انتخاب صدا، می‌توانید از ویژگی voice استفاده کنید. ابتدا باید لیست صداهای موجود را دریافت کنید و سپس یک صدا را انتخاب کنید.

voices = engine.getProperty('voices')
for voice in voices:
    print("Voice:")
    print(" - ID: %s" % voice.id)
    print(" - Name: %s" % voice.name)
    print(" - Languages: %s" % voice.languages)
    print(" - Gender: %s" % voice.gender)
    print(" - Age: %s" % voice.age)

engine.setProperty('voice', voices[0].id) # انتخاب اولین صدا در لیست

در این کد، ابتدا لیست صداهای موجود را دریافت می‌کنیم و اطلاعات مربوط به هر صدا را چاپ می‌کنیم. سپس، اولین صدا در لیست را انتخاب می‌کنیم. توجه داشته باشید که ID صداها ممکن است در سیستم‌های مختلف متفاوت باشد.

خواندن از فایل متنی

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

import pyttsx3

engine = pyttsx3.init()

try:
    with open('text.txt', 'r', encoding='utf-8') as f:
        text = f.read()
    engine.say(text)
    engine.runAndWait()
except FileNotFoundError:
    print("فایل text.txt یافت نشد.")
except Exception as e:
    print(f"خطا در خواندن فایل: {e}")

در این کد:

  • with open('text.txt', 'r', encoding='utf-8') as f:: فایل ‘text.txt’ را در حالت خواندن باز می‌کنیم. از encoding='utf-8' برای پشتیبانی از کاراکترهای فارسی استفاده می‌کنیم.
  • text = f.read(): محتوای فایل را می‌خوانیم و در متغیر text ذخیره می‌کنیم.
  • engine.say(text): متن را به موتور TTS ارسال می‌کنیم.
  • engine.runAndWait(): منتظر می‌مانیم تا فرایند تبدیل متن به گفتار به پایان برسد.
  • try...except: برای مدیریت خطاها، مانند عدم وجود فایل یا خطاهای خواندن فایل، از بلوک try...except استفاده می‌کنیم.

ذخیره صدا در فایل

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

import pyttsx3

engine = pyttsx3.init()

text = "این متن در یک فایل صوتی ذخیره می‌شود."
engine.save_to_file(text, 'output.wav')
engine.runAndWait()

در این کد:

  • engine.save_to_file(text, 'output.wav'): متن را به گفتار تبدیل می‌کند و آن را در فایل ‘output.wav’ ذخیره می‌کند.
  • engine.runAndWait(): منتظر می‌مانیم تا فرایند تبدیل متن به گفتار و ذخیره فایل به پایان برسد.

نتیجه‌گیری

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

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *