سیستم تبدیل متن به صوت ستون چگونه کار می‌کند؟

سیستم تبدیل متن به گفتار «ستون» یک واسط برنامه‌نویسی تحت وب (Web API) است که هر متن ورودی به زبان فارسی را به یک گفتار طبیعی تبدیل می‌کند که به صورت یک فایل صوتی قابل پخش است. با استفاده از این سرویس می‌توانید اپلیکیشن‌ها، سرویس‌ها و ابزارهایی بسازید که به طور صوتی با کاربر تعامل می‌کنند. در این مقاله شما را با جزئیات کارکرد این سیستم آشنا می‌کنیم.

سیستم تبدیل متن به گفتار «ستون» دو بخش اصلی دارد(شکل زیر):

  • تبدیل نویسه به واج
  • تبدیل واج به گفتار
tts.PNG

«واج»‌ کوچک‌ترین آوایی است که تغییر در آن، باعث تفاوت در معنا می‌شود. مثلا در کلمه‌ی «ما»، دو واج /م/ (m) و /ا/ (A) وجود دارد. نویسه یا حرف، صورت نوشتاری واج است. یک نویسه می‌تواند متناظر با چندین واج مختلف باشد، مثلا /ا/ در «امروز» متناظر با واج (e) و در «شما» متناظر با واج (A) است.

به همین دلیل برای تولید گفتار درست، نیاز داریم تا صورت‌ گفتاری یا همان واج‌ها را بدانیم؛ پس در مرحله‌ی اول صورت‌های نوشتاری در ماژول «تبدیل نویسه به واج» به صورت گفتاری تبدیل می‌شود.

فرض کنید در حال توسعه‌ی یک دستیار شخصی به زبان فارسی هستید و این دستیار شخصی می‌خواهد زمان حرکت اتوبوس‌ها از ترمینال را به کاربر اعلام کند. در اینجا ماژول تبدیل نویسه به واج، صورت نوشتاری «اتوبوس سیر و سفر به مقصد کرمانشاه، ساعت بیست و دو حرکت می‌کند» را به صورت گفتاری «'otobuse seyro safar be maqsade kermAnSAh, sA'ate bisto do harekat mikonad» تبدیل می‌کند.

سه چالش در تولید صورت گفتاری از روی صورت نوشتاری فارسی وجود دارد:

  1. تلفظ کردن کسره‌ی اضافه‌ی بین کلمات: «اتوبوسِ سیر و سفر»،
  2. عدم وجود تلفظ کلمه در دایره‌ی واژگان سیستم،
  3. انتخاب تلفظ درست در موارد هم‌نویسی: «سیر» که می‌تواند sir یا seyr تلفظ شود.

ماژول تبدیل نوشتار به گفتار سعی می‌کند تا با نگاه کردن به صورت نوشتاری، در جای مناسب کسره‌ی اضافه بگذارد و تلفظ درست را انتخاب کند، اما مثل هر مسئله‌ی دیگری در دنیای یادگیری ماشینی، رسیدن به دقت ۱۰۰ درصد غیر ممکن است؛ در نتیجه ممکن است سیستم برای تلفظ درست نیازمند کمک کاربر باشد. این کمک از طریق اعراب گذاری، یا ارسال صورت گفتاری(واج‌ها) به جای صورت نوشتاری ممکن است. برای توضیحات بیشتر، مقاله‌ی «نحوه استفاده از فونتیک» مطالعه کنید.

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

  • مدل‌های پیوندی(Concatenative): در این مدل‌ها گوینده آوای واج‌ها(شامل تکواژ، دو واجی، سه‌واجی و واحد‌های بزرگ‌تر زبان) را از پیش ضبط کرده و در هنگام تولید صوت، مدل در یک پایگاه داده‌ی آوایی بزرگ جستجو می‌کند و کلیپ‌های صدای مرتبط با واج‌های متن ورودی را به هم می‌چسباند تا خروجی تولید شود. حسن این روش کیفیت خوب از نظر قابل فهم بودن صدای خروجی است، اما صدای خروجی این مدل‌ها ربات‌گونه است و طبیعی نیست.
  • مدل‌های مبتنی بر شبکه‌های عصبی عمیق(Deep Neural Networks): این مدل‌ها می‌توانند صدایی نزدیک به صدای انسان از نظر طبیعی بودن تولید کنند و معمولا دو بخش دارند:
    • یک شبکه‌ی عصبی به نام synthesizer که دنباله‌ی واج‌های ورودی را به دنباله‌ای از اسپکتروگرام‌ها تبدیل می‌کند. اسپکتروگرام یک واج، نمایانگر میزان انرژی در باندهای مختلف فرکانسی است. این شبکه‌ی عصبی سعی می‌کند تا حد ممکن، اسپکتروگرامی تولید کند که مشابه اسپکتروگرام صدای گوینده در هنگام بیان آن واج باشد.
    • یک شبکه عصبی به نام vocoder که دنباله‌ی اسپکتروگرام‌ها را به یک سیگنال صوتی تبدیل می‌کند.

سرویس TTS ستون در بخش واج به گفتار از مدل‌های مبتنی بر شبکه‌های عصبی عمیق استفاده می‌کند و از این رو صدایی طبیعی و نزدیک به صدای انسان دارد. برای نمونه صوت مثال قبل را بشنوید:

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

آیا این مقاله به شما کمک کرد؟

با نظر دادن به بهبود کیفیت مستندات کمک کنید