رفتن به محتوای اصلی
بازگشت به وبلاگ

راهنماهای هوش مصنوعی

متن به گفتار فارسی در مرورگر؛ اول فهرست صدا را بررسی کنیم

getVoices و voiceschanged را بدون پخش صوت بررسی کنید؛ مشاهدهٔ محدود Edge و کد تشخیص برچسب fa نشان می‌دهند وجود API با وجود صدای فارسی یکی نیست.

وجود SpeechSynthesis در مرورگر به معنی وجود صدای فارسیِ آماده نیست. باید فهرست صداهای گزارش‌شده، برچسب زبان و زمان بارگذاریِ همان محیط را ببینید. این راهنما فقط فهرست را می‌خواند؛ متنی به موتور گفتار نمی‌فرستد، میکروفن نمی‌گیرد و فایل صوتی تولید نمی‌کند.

سه وضعیت را یک پاسخ نکنیم

مشاهدهبرداشت محدودقدم بعد
API وجود ندارداین مسیر در محیطِ فعلی در دسترس نیستمسیر جایگزین و دستگاه مقصد را بررسی کنید
فهرست اولیه خالی استفعلاً صدایی گزارش نشدهرویداد voiceschanged و بازهٔ بررسیِ محدود را کنترل کنید
برچسب fa یا fa-IR گزارش می‌شودیک گزینه با برچسب فارسی موجود استتلفظ، پخش واقعی و نیاز محصول را جدا آزمایش کنید

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

مشاهدهٔ واقعیِ همین محیط

در بررسی محدودِ Edge به‌شکل headless در۳نوامبر۲۰۲۶، API وجود داشت؛ ابتدا۰صدا و پس از۲ثانیه۳صدا گزارش شد. یک رویداد voiceschanged دیده شد و تعداد برچسب‌های فارسی۰بود. در تمام این آزمون speak فراخوانی نشد، صوت پخش نشد و درخواست‌های شبکهٔ صفحه مسدود بودند. این مشاهده، پیمایش کاربران یا آزمون قابلیت سیستم‌عاملِ همهٔ دستگاه‌ها نیست.

بنابراین عبارت درست این است: «در این بررسیِ محدود، گزینهٔ فارسی گزارش نشد.» از آن نتیجه نمی‌گیریم نصب فارسی در دستگاه شما غیرممکن است. همچنین فهرستِ اولیهٔ خالی، در همین مثال با فهرستِ نهایی فرق داشت؛ تصمیم فوری از خواندنِ اول می‌توانست گمراه‌کننده باشد.

کدِ محدود برای بررسی روی دستگاه خودتان

فایل TXT همراه، تابع inspectPersianVoices دارد. آن را در محیط توسعهٔ صفحهٔ آزمایشی خود یا Console مرورگر روی صفحه‌ای که مجاز به بررسی آن هستید اجرا کنید. تابع از getVoices استفاده و تا بازهٔ پیش‌فرض۲ثانیه به تغییر فهرست گوش می‌دهد؛ شنونده و timer در پایان پاک می‌شوند. نام فایل TXT است تا کد به‌عنوان ابزار نصب‌شده یا برنامهٔ اجرایی خودکار معرفی نشود.

inspectPersianVoices().then(result => {
  const persian = result.voices.filter(v => /^fa(?:-|$)/i.test(v.lang));
  console.table(persian);
});

شرط زبان، fa یا ادامهٔ دارای خط تیره را می‌پذیرد؛ رشتهٔ fak را صرفاً چون با دو حرف مشابه شروع می‌شود فارسی حساب نمی‌کند. اگر بازه تمام شد، reason برابر bounded_check_finished است؛ این نام به معنی «عدم وجود دائمی» نیست. فقط یک بررسیِ زمان‌دار پایان یافته است.

localService چه می‌گوید؟

طبق MDN، این ویژگی مشخص می‌کند صدا از سرویس محلی عرضه می‌شود یا سرویس دوردست. مقدار آن را همراه نام و زبان ثبت کنید؛ صرف وجود API را وعدهٔ آفلاین‌بودن همهٔ صداها نکنید. این نمونه فقط فهرست می‌گیرد؛ بررسیِ محل واقعی پردازشِ متن هنگام پخش یا سیاست شبکهٔ یک محصول را انجام نداده است.

چه چیزی برای تصمیم محصول باقی می‌ماند؟

اگر قرار است کاربران روی موبایل و دسکتاپ متن فارسی بشنوند، یک نمونهٔ مجاز و کوتاه را بعداً روی دستگاه‌های مقصد با اقدامِ آگاهانهٔ کاربر پخش و نتیجه را ثبت کنید. صدا، زبان، اعداد، نفی و خطای پخش را جدا بررسی کنید. این آموزش چنین آزمون شنیداری‌ای را انجام نداده است.

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

فایل تمرین و منبع

کد JavaScript فقط برای دیدن فهرست صدا؛ بدون پخش یا میکروفن · مشاهدهٔ واقعیِ یک مرورگر headless؛ پیمایش دستگاه‌های کاربران نیست

منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثال‌ها و فایل‌های این راهنما آموزشی و ساختهٔ تحریریه‌اند.

برای این نیاز، کدام خدمت مناسب‌تر است؟

تماس و منشی، چت سایت و تحلیل مکالمه سه مسیر متفاوت‌اند. ابتدا خدمت متناسب نیازتان را انتخاب کنید.

انتخاب میان سه خدمتراهنمای شروع با تیم اپرا

برآورد هزینه