در این آموزش در 25 دقیقه به ساخت یک سیستم تبدیل متن به گفتار در پایتون و با CherryPy میپردازیم. این آموزش برای کسانی که با فریمورک CherryPy آشنایی دارند، قابل استفاده است.
اگر با فریمورک CherryPy آشنایی ندارید این فیلم آموزش CherryPy (+) را ببینید.
سیستم TTS چیست؟
سیستم تبدیل متن به گفتار به انگلیسی Text-to-speech یا به اختصار TTS گفته میشود. کار این سیستمها دریافت متن نوشتار یک زبان و تبدیل آن به یک صوت حاوی تلفظ واژگان متن دریافتی است.
این آموزش در یک نگاه
در این آموزش TTS با پایتون، در واقع یک سیستم و API ساده تحت وب جهت تبدیل متن به گفتار با استفاده از espeak کد زده میشود. در این آموزش یاد میگیرید چطور در چری پای یک صفحه میتواند فایل برگرداند و چطور با استفاده از ماژول subprocess یک برنامهی خارجی اجرا و خروجی آن گرفته شود.
کلیدواژهها
آموزش TTS با پایتون – ساخت یک سیستم تبدیل متن به گفتار در پایتون – ساخت TTS با CherryPy – آموزش CherryPy
رضا خسروی –
درود به همه دانش پژوهان.
چالش تبدیل متن به صدا و برعکس آن بسیار کمتر میشود. این کار ارزشمند ، با جایگزینی دبیره (خط، فونت) های رایج (فارسی، لاتین و …) با دبیره ای نوین که آواهای (حروف صدادار) کاملتری دارد و نیز هجاهای بیشتری را در بر گرفته است ،امکان دارد.
samisoft –
سلام وقت بخیر
من یک مشکلی با eSpeak داشتم که در جستجوی گوگل به این وب سایت شما برخوردم که ظاهرا همین مشکل من رو اقای “علیرضا خداپرسیت شیرازی” که در نظرات هم مطرح کردن ایشون همین مشکل رو داشتند.
درواقع وقتی در خط فرمان خود برنامه eSpeak وقتی میخوام کلمه فارسی را تلفظ کنه متاسفانه بدرستی تلفظ نمیکنه و نامفهوم تلفظ میکنه :
espeak.exe -v fa ‘سلام’
اما وقتی همین کلمه را داخل فایل تکست مینویسیم با دستور زیر بدرستی تلفظ میکنه :
espeak.exe -v fa -f 1.txt
بنظرتون این مشکل از کجاست ؟ میتونم بپرسم دوستی که این مشکل رو داشته چطوری رفع کردند؟
با تشکر
علیرضا خداپرسیت شیرازی (خریدار محصول) –
سلام.
یه سوال دیگه مهندس این اختلاف در گفتار می تونه ربطی به سیستم عامل داشته باشه؟ یا ربطی به تنظیمات espeak ؟ من با ویندوز دارم تست می کنم ( و وقتی بهش فایل میدم درسته اما وقتی با تکست باکس کار می کنم در بروزر مشکل داره در گفتار.)
چون یادم میاد شما سیستم عامل تون لینوکس بود، ربطی داره به این ماجرا؟
یا تنظیم خاصی روی مرورگر firefox نباید انجام داد؟
من 2 تا فایل رو به پوشه نصب برنامه espeak هم اضافه کردم:
1- فایل fa_list رو در پوشه dictsource قرار دادم.
2- فایل fa_dict رو هم در پوشه espeak-data قرار دادم.
علیرضا خداپرسیت شیرازی (خریدار محصول) –
سلام مجدد.
ممنون مهندس از پیگیری شما.
شما توی تکست باکس کلمات فارسی نوشتید و تست کردید؟ مشکل من با فارسی نوشتن توی تکست باکس هست من فارسی می نویسم و در گفتار یه چیز نامفهومی بیان می کنه مثلا می نویسم “سلام خوبی” و در جواب یه چیز نا مفهوم تلفظ می کنه اما با انگلیسی مشکلی ندارم.
فاروق کریمی زاده –
من سلام نوشتم و مشکلی نداشت
علیرضا خداپرسیت شیرازی (خریدار محصول) –
سلام مهندس عزیز
لینک خدمت شما:
https://apaste.info/alCq
فاروق کریمی زاده –
سلامی دوباره
کد شما رو اجرا و آزمایش کردم و به خوبی کار میکنه(دستکم با مرورگر روزمره من که فایرفاکس باشه)
علیرضا خداپرسیت شیرازی (خریدار محصول) –
مهندس کریمی زاده عزیز. من با راهنمایی شما موفق شدم زبان فارسی رو هم به این پروژه اضافه کنم با این خط کد:
command = ([‘espeak’, ‘-v’,’fa’, q, ‘–stdout’])
فقط هر کاری می کنم از طریق تکست باکس q که تعریف کردید فارسی رو درست تلفظ نمی کنه اما وقتی این خط کد رو بهش میدم و بهش میگم از یک فایل تکست بخون مشکل حل میشه و البته فایل تکست من با UTF-8 ذخیره شده.
command =([‘espeak’,’-v’,’fa’,’-f’, q, ‘–stdout’])
در واقع قابل توجه دوستان آپشن v- نوع زبان رو مشخص می کنه و آپشن f- میگه از فایل بخون.
حالا موندم برای اون تکست باکس و کلمات فارسی و تلفظ درست چیکار باید بکنم؟
هر چی هم سرچ کردم چیزی دستم نیومد.
لطفا راهنمایی بفرمایید.
فاروق کریمی زاده –
سلام بر شما و خوشحالم که تونستم کمکی بکنم.اگر بتونید کدتون رو توی سایت apaste.info ذخیره کنید و لینکش رو اینجا بفرستید خیلی بهتر میتونم کمک کنم.توجه کنید که نیازی نیست کد کل پروژه ارسال بشه فقط یک مثال کوتاه که مشکل رو نشون بده.بدون دیدن کد اولین چیزی که به ذهنم میرسه اینه که در متد مورد نظر یک تابع پرینت بذارید برای q که مشخص بشه اصلا چی رو دارید دریافت میکنید.
علیرضا خداپرسیت شیرازی (خریدار محصول) –
آقای مهندس کریم زاده . ممنون از آموزش خوب شما.
اگر بخواهیم بار معنایی جمله ای که نوشتیم از طریق گفتار بیان بشه باید چه اقداماتی انجام بدیم به خصوص در متن فارسی
یعنی ممکنه جمله ای که ما نوشتیم بیانگر حس ناراحتی یا عصبانیت باشه.
چطور می تونیم به این تشخیص برسیم و فایل صوتی بر اساس اون حس تولید یا بیان بشه؟
فاروق کریمی زاده –
سلام!
در مورد سوالی که پرسیدید، باید از هوش مصنوعی برای اینکار کمک بگیرید که تشخیص بدید بار متن چطوره.
فاروق کریمی زاده –
espeak از زبان های مختلفی از جمله فارسی پشتیبانی میکند. برای دیدن فهرستی از زبانهایی که پشتیبانی میکند، این دستور را در خطفرمان وارد کنید:
espeak –voices
برای استفاده از هر کدام از این زبانها نیز، صفحه راهنمای برنامه را ببینید:
https://linux.die.net/man/1/espeak
میلاد –
سلام
عذر میخوام این پروژه از زبان فارسی هم پشتیبانی میکنه؟