هوش مصنوعی

هوش مصنوعی چطور صدا را به متن تبدیل می‌کند؟

بین لحظه‌ای که دکمه‌ی ضبط را می‌زنی و لحظه‌ای که متن را می‌بینی، پنج مرحله‌ی جدا اتفاق می‌افتد. این‌ها همان پنج مرحله‌اند.

قدم اول: صدا به عدد تبدیل می‌شود

میکروفن فشار هوا را اندازه می‌گیرد و آن را چند هزار بار در ثانیه ثبت می‌کند — این «نرخ نمونه‌برداری» است و برای گفتار معمولاً ۱۶ هزار بار در ثانیه کافی است. حاصل، یک رشته‌ی طولانی از عدد است.

اما مدل‌ها مستقیم با این رشته کار نمی‌کنند. صدا به قطعه‌های ۲۰ تا ۲۵ میلی‌ثانیه‌ای بریده می‌شود و برای هر قطعه محاسبه می‌شود که چقدر انرژی در هر محدوده‌ی فرکانسی وجود دارد. نتیجه یک تصویر است: طیف‌نگاره. محور افقی زمان، محور عمودی فرکانس، و روشنایی یعنی شدت. تشخیص گفتار، در عمل، خواندن این تصویر است.

دوره‌ی قدیم: سه مدل که باید با هم جور می‌شدند

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

این معماری کار می‌کرد، اما شکننده بود: هر زبان به واژه‌نامه‌ی تلفظ دست‌ساز خودش نیاز داشت و هر کلمه‌ی تازه یعنی یک ورودی جدید در آن واژه‌نامه. برای زبان‌هایی مثل فارسی که منابع آماده‌شان کمتر است، این یعنی همیشه یک قدم عقب بودن.

دوره‌ی جدید: یک شبکه از اول تا آخر

مدل‌های امروزی سرتاسری‌اند: طیف‌نگاره را می‌گیرند و مستقیم متن می‌دهند، بدون واژه‌نامه‌ی تلفظ. دو ایده این را ممکن کرد.

اول، مکانیزم توجه در معماری ترنسفورمر: مدل هنگام نوشتن هر کلمه می‌تواند به هر بخشی از صدا نگاه کند، نه فقط به لحظه‌ی متناظرش. برای فارسی که معنای یک کلمه اغلب چند کلمه بعدتر روشن می‌شود، همین یک ویژگی تفاوت بزرگی می‌سازد.

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

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

چرا فارسی سخت‌تر است؟

  • نیم‌فاصله. «می‌روم» و «می روم» و «میروم» یک کلمه‌اند با سه املا. مدل باید یکی را انتخاب کند و در آن یک‌دست بماند.
  • کسره‌ی اضافه که نوشته نمی‌شود. «کتابِ من» و «کتاب من» در نوشتار یکی‌اند؛ مرز ترکیب‌ها را باید از معنا فهمید.
  • حرف‌های هم‌شکل عربی و فارسی. ی و ي، ک و ك. برای چشم تقریباً یکی‌اند و برای جست‌وجو دو چیز کاملاً متفاوت.
  • جابه‌جایی زبان وسط جمله. «این feature رو deploy کردیم» جمله‌ی کاملاً رایجی است در محیط کار.
  • لهجه‌ها و گفتار محاوره‌ای. «می‌خواهم بروم» در گفتار «می‌خوام برم» است و متن باید تصمیم بگیرد کدام را بنویسد.
  • عددها و تاریخ‌ها. «بیست و سوم مهر» یا «۲۳ مهر»؟ هر دو درست‌اند و انتخاب بین‌شان یک تصمیم سبکی است.

نقطه‌گذاری، یک مرحله‌ی جداست

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

برای همین یک مرحله‌ی جدا روی متن خام کار می‌کند: مرزهای جمله را پیدا می‌کند، نقطه و ویرگول و علامت سؤال می‌گذارد و متن را به پاراگراف تقسیم می‌کند. این مرحله متن را کوتاه یا بازنویسی نمی‌کند؛ فقط خواندنی‌اش می‌کند.

تشخیص گوینده

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

سخت‌ترین بخشش، لحظه‌هایی است که دو نفر هم‌زمان حرف می‌زنند؛ و بهترین کاری که برای بهبودش می‌شود کرد، در خود جلسه اتفاق می‌افتد — یکی‌یکی حرف زدن و معرفی‌کردن خود در ابتدای جلسه. در راهنمای صورتجلسه‌ی خودکار این نکته‌ها را جمع کرده‌ایم.

خلاصه‌سازی: کار مدل زبانی

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

مهم است بدانی این مرحله روی متن کار می‌کند نه روی صدا؛ یعنی هر خطایی که در مرحله‌ی تشخیص گفتار رخ داده باشد، به خلاصه هم می‌رسد. کیفیت ضبط، در انتهای زنجیره هم خودش را نشان می‌دهد.

«دقت ۹۹ درصد» یعنی چه؟

معیار استاندارد در این حوزه نرخ خطای کلمه (WER) است: تعداد کلمه‌های جایگزین‌شده، جاافتاده و اضافه‌شده، تقسیم بر تعداد کل کلمه‌های مرجع. «دقت ۹۵ درصد» یعنی WER پنج درصد؛ یعنی در هر صد کلمه، پنج کلمه اشتباه است.

اما این عدد بدون شرایطش بی‌معناست، چون WER به‌شدت به داده‌ی آزمون وابسته است: یک گوینده در اتاق ساکت با میکروفن خوب، عددی می‌دهد که هیچ ربطی به یک جلسه‌ی شش‌نفره در اتاق پر بازتاب ندارد. وقتی جایی عدد دقت دیدی، اولین سؤال این است: روی چه داده‌ای؟

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

سوال‌های پرتکرار

تشخیص گفتار با چه چیزی کار می‌کند؟

صدا به طیف‌نگاره تبدیل می‌شود و یک شبکه‌ی عصبی از روی آن دنباله‌ی کلمات را تولید می‌کند؛ مدل‌های امروزی سرتاسری‌اند و به واژه‌نامه‌ی تلفظ دست‌ساز نیاز ندارند.

چرا متن خروجی گاهی نقطه‌گذاری ندارد؟

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

چرا فارسی برای تشخیص گفتار سخت‌تر است؟

نیم‌فاصله، کسره‌ی اضافه‌ای که نوشته نمی‌شود، حرف‌های هم‌شکل عربی و فارسی، گفتار محاوره‌ای و جابه‌جایی زبان وسط جمله — همه انتخاب‌هایی‌اند که مدل باید در نوشتار انجام دهد.

WER یا نرخ خطای کلمه یعنی چه؟

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

خلاصه‌سازی هم بخشی از تشخیص گفتار است؟

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