PersianTTS
یک کتابخانه فارسی برای تبدیل متن به صدا با شخصیتهای مختلف.
این کتابخانه به شما امکان میدهد متن فارسی را با صدای شخصیتهای متفاوت به فایل صوتی تبدیل کنید و آن را ذخیره نمایید.
نصب
برای نصب کتابخانه، ابتدا اطمینان حاصل کنید که Python 3.8 یا بالاتر دارید و سپس از pip استفاده کنید:
لیست شخصیتها (Voices)
| کلید شخصیت | نام شخصیت |
|---|---|
| woman1 | 🌼 شیوا |
| woman2 | 🌷 مهتاب |
| woman3 | 🌺 نگار |
| woman4 | 🌹 ریما |
| man1 | 🌠 راد |
| man2 | 🌠 پیام |
| man3 | 🚀 بهمن |
| man4 | 🚀 برنا |
| man5 | 🚀 برنا-1 |
| man6 | 🦁 کیان |
| man7 | 💧 نیما |
| man8 | ⚡️ آریا |
| boy1 | 🌟 آرش |
from py_persian_tts import PersianTTS, list_voices
import asyncio
async def main():
tts = PersianTTS(default_voice="man1")
# نمایش شخصیتها
print("شخصیتها:", list_voices())
# تبدیل متن به صدا (نسخه async)
await tts.speak_async("سلام این یک تست است.", voice="man2", filename="tewst.wav")
print("عملیات با موفقیت انجام شد")
# اجرای تابع async
if __name__ == "__main__":
asyncio.run(main())
import asyncio
from py_persian_tts import PersianTTS
async def main():
tts = PersianTTS(default_voice="man1", rate_limit=0.5) # هر 2 ثانیه یک درخواست
texts = [
"سلام این یک تست است",
"این هم متن دوم برای تست صف TTS.",
]
tasks = []
for i, text in enumerate(texts):
filename = f"tts_queue_{i+1}.wav"
# اضافه کردن هر متن به صف و گرفتن Future
tasks.append(tts.speak_async(text, filename=filename))
# اجرای همه و گرفتن مسیر فایلها
results = await asyncio.gather(*tasks)
for path in results:
print("فایل صوتی ذخیره شد:", path)
# پایان کار و توقف پردازش صف
await tts.shutdown()
# اجرای مثال
asyncio.run(main())
⚠️ هشدار مهم درباره کلاس TextToSpeech
کلاس TextToSpeech در این کتابخانه با استفاده از Selenium پیادهسازی شده است و برای کارکرد صحیح نیاز دارد:
- Google Chrome نصب شده باشد.
- ChromeDriver مناسب با نسخه کروم روی سیستم شما موجود باشد.
🔹 ChromeDriver چیست؟
ChromeDriver یک برنامهی کمکی است که به Selenium اجازه میدهد با مرورگر Google Chrome تعامل کند.
به عبارت دیگر، Selenium خودش مرورگر را اجرا نمیکند؛ ChromeDriver رابط بین کد پایتون شما و مرورگر کروم است.
بدون ChromeDriver، کلاس TextToSpeech نمیتواند سایت fa.text-to-speech.online را کنترل کرده و فایل صوتی تولید کند.
🔹 نکات مهم:
- اگر ChromeDriver یا گوگل کروم نصب نباشد، هنگام فراخوانی کلاس
TextToSpeechبا خطا مواجه میشوید. - توصیه میشود از WebDriver Manager برای مدیریت خودکار ChromeDriver استفاده کنید تا نسخه مناسب به صورت خودکار دانلود شود.
- مسیر پیشفرض دانلود فایلهای صوتی، پوشهی
downloadsدر مسیر پروژه است. - این روش نیاز به اینترنت دارد، زیرا متن به وبسایت TTS ارسال میشود.
🔹 نصب ChromeDriver
- ابتدا مطمئن شوید Google Chrome روی سیستم شما نصب است.
- نسخه مرورگر خود را بررسی کنید (مثلاً Chrome → Help → About Google Chrome).
- ChromeDriver مناسب همان نسخه را از لینک زیر دانلود کنید:
https://chromedriver.chromium.org/downloads - فایل ChromeDriver دانلود شده را در مسیر PATH سیستم یا یک مسیر دلخواه قرار دهید.
- حالا کلاس
TextToSpeechبدون مشکل کار خواهد کرد.
🔹 مثال استفاده از کلاس
from py_persian_tts import TextToSpeech
tts = TextToSpeech()
file_path = tts.speak("سلام دنیا", gender="male")
tts.close()
ChatVoice - دستیار صوتی فارسی با هوش مصنوعی
یک کلاس برای تبدیل متن به ویس وپاسخ آن به صورت صورت است که میتونید به طور چت ویس باهاش حرف بزنید وفقط به صورت فارسی فقظ پاسخ میده
ویژگیها
- گرفتن پاسخ کوتاه و محاورهای از هوش مصنوعی (Liara AI)
- تبدیل خودکار پاسخ به ویس فارسی
- ذخیره خودکار فایل صوتی با نام امن و قابل شناسایی
- انتخاب صدای شخصیتها (woman1، man1، boy1، و غیره)
- پاسخها کوتاه و مناسب خواندن با صدا (حداکثر 2–3 جمله)
مثال کلاس ChatVoice
from py_persian_tts import ChatVoice
# ساخت کلاس با API key و صدای مورد نظر
chat = ChatVoice(
api_key="کلید_تو_اینجا",
voice="woman2"
)
# پرسش و دریافت فایل صوتی
audio_file = chat.ask("سلام خودتو معرفی کن؟")
print("فایل صوتی ساخته شد:", audio_file)
نمونه ها :
from py_persian_tts import ChatVoice
chat = ChatVoice(
api_key="",
base_url= "https://api.gapgpt.app/v1",
model= "gapgpt-qwen-3.5",
)
chat.ask("سلام خوبی چه خبر",voice="man4")
نصب
pip install --upgrade py-persian-tts
Metadata
Release files for py-persian-tts 3.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| py_persian_tts-3.0.2.tar.gz | 10.8 kB | Without provenance | Details for py_persian_tts-3.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| py_persian_tts-3.0.2-py3-none-any.whl | Python 3 | none | any | Details for py_persian_tts-3.0.2-py3-none-any.whl |
Total release size: 20.9 kB
Release files / py_persian_tts-3.0.2.tar.gz
| Download URL | py_persian_tts-3.0.2.tar.gz |
|---|---|
| Size | 10.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
44e7c8e11819a44dddf608480d51441c5606959e67c64cf13ab99c3827e0a972
|
|
BLAKE2b-256 checksum How to use checksums |
cdb410d1e63dea44878d3bd02781679f0c0cbbe0eae5103773272204badf958e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / py_persian_tts-3.0.2-py3-none-any.whl
| Download URL | py_persian_tts-3.0.2-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a0c85d4c0390814eff35a7eb34a3b303d2970782528b57952fe5240fc74ee49
|
|
BLAKE2b-256 checksum How to use checksums |
30b2877e6c9709eab793ecc0a2242ee01d359aae4e3fcb8f90ec1e49559eef72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Security for py-persian-tts 3.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.