آموزشترنسفورمرها

درس ۵۳ از ۶۲، هوش مصنوعی، حدود ۳۸ دقیقه خواندن

ترنسفورمر برای صدا و گفتار

جواب کوتاه

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

یعنی چی

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

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

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

صدا توی کامپیوتر

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

برای گفتار، معمولا ۱۶ هزار بار در ثانیه نمونه برمی‌دارن، یعنی ۱۶ کیلوهرتز. چرا ۱۶ هزار؟ چون برای نگه داشتن یه بسامد، دست‌کم دو برابرش رو باید نمونه گرفت، و بیشتر چیزهای مهم گفتار زیر ۸ هزار هرتزن. برای موسیقی، که بسامدهای بالاتر هم مهمن، معمولا ۴۴ یا ۴۸ هزار. پس یک ثانیه گفتار، یه ردیف ۱۶ هزار تایی عدده.

چرا عددهای خام نه

می‌شه هر نمونه رو یه تکه گرفت؟ یه صدای ۳۰ ثانیه‌ای می‌شه ۳۰ ضرب در ۱۶ هزار، یعنی ۴۸۰ هزار عدد. با هزینه‌ی مربعی توجه، این یعنی حدود ۲۳۰ میلیارد جفت توی هر لایه؛ خیلی زیاد. تازه یه نمونه‌ی تنها، که فقط ارتفاع موج توی یه لحظه‌ی خیلی کوتاهه، تقریبا هیچ معنی‌ای نداره.

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

طیف‌نگار

هر صدایی که می‌شنویم، ترکیبی از چند بسامده؛ صدای بم بسامد پایین داره، صدای زیر بسامد بالا. طیف‌نگار یا Spectrogram یه جدوله که برای هر تیکه‌ی کوتاه از زمان، نشون می‌ده هر بسامد چقدر بلنده:

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

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

مقیاس مل

گوش آدم بسامدها رو برابر نمی‌شنوه. فرق ۱۰۰ و ۲۰۰ هرتز رو خیلی خوب حس می‌کنیم، ولی فرق ۸۱۰۰ و ۸۲۰۰ هرتز رو تقریبا نه. مقیاس مل یا Mel، یه مقیاسه که بسامدها رو همون‌طوری می‌چینه که گوش حس می‌کنه؛ توی بسامدهای پایین نوارهای باریک، و توی بالا نوارهای پهن.

برای همین معمولا به‌جای صدها بسامد، طیف‌نگار به حدود ۸۰ نوار مل جمع می‌شه، و چون گوش بلندی رو هم لگاریتمی حس می‌کنه، از عددها لگاریتم گرفته می‌شه. نتیجه، طیف‌نگار لگاریتمی مل‌ه؛ جدولی با ۸۰ ردیف و ۱۰۰ ستون در ثانیه. یه مدل گفتار به متن معروف سال ۲۰۲۲ دقیقا همین ورودی رو داشت؛ ۳۰ ثانیه صدا، ۸۰ نوار، یعنی جدولی ۸۰ در ۳۰۰۰.

فشردن

۳۰۰۰ قاب برای ۳۰ ثانیه هنوز زیاده، و قاب‌های پشت هم خیلی شبیه همن، چون صدا توی ۱۰ میلی‌ثانیه زیاد عوض نمی‌شه. برای همین معمولا قبل از ترنسفورمر، یکی دو لایه‌ی پیچشی می‌ذارن که هم ویژگی‌های محلی رو بگیرن و هم صف رو کوتاه کنن. همون مدل ۲۰۲۲، دو لایه‌ی پیچشی داشت که دومیش گام ۲ داشت؛ پس ۳۰۰۰ قاب شد ۱۵۰۰، یعنی هر بردار ۲۰ میلی‌ثانیه.

بعد مثل همیشه، بردار جا به هر قاب اضافه می‌شه، چون ترتیب زمانی توی صدا خیلی مهمه، و صف از لایه‌های ترنسفورمر رد می‌شه. با ۱۵۰۰ تکه، توجه کامل حدود ۲٫۲۵ میلیون جفت داره، که کاملا شدنیه. مدل‌های دیگه گاهی بیشتر فشار می‌دن، مثلا تا هر ۴۰ یا ۸۰ میلی‌ثانیه یه بردار.

گفتار به متن

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

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

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

نشونه‌های ویژه

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

این‌طوری یه مدل واحد، چند کار رو بلده. اگه زبان رو ندیم، خود مدل اول نشونه‌ی زبان رو پیش‌بینی می‌کنه، یعنی تشخیص زبان هم مجانی به دست میاد. اگه زمان‌ها رو بخوایم، بین کلمه‌ها نشونه‌هایی مثل «ثانیه‌ی ۳٫۴۲» می‌سازه، که برای ساختن زیرنویس به درد می‌خوره. همون فکری که توی مدل‌های زبانی هم هست؛ دستور رو توی خود ورودی بده.

داده‌ی زیاد با برچسب ضعیف

مدل‌های قدیمی‌تر گفتار، روی چند هزار ساعت صدای تمیز و با دقت نوشته‌شده آموزش می‌دیدن. روی همون نوع صدا خوب بودن، ولی با لهجه‌ی دیگه، نویز پشت صدا یا میکروفون بد، خیلی خراب می‌شدن. مدل ۲۰۲۲ راه دیگه‌ای رفت؛ ۶۸۰ هزار ساعت صدای جمع‌شده از اینترنت، با متن‌هایی که همراهشون بود، به چندین زبان.

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

هم‌ترازی و CTC

قبل از رمزگذار و رمزگشا، یه راه دیگه برای گفتار به متن رایج بود، که هنوز هم خیلی به کار می‌ره. اسمش CTC، کوتاه‌شده‌ی Connectionist Temporal Classification، یعنی «دسته‌بندی زمانی»، و سال ۲۰۰۶ معرفی شد. این‌جا رمزگشا نداریم؛ رمزگذار برای هر قاب صدا مستقیم یه حرف پیش‌بینی می‌کنه، یا یه نشونه‌ی خالی:

مشکل اینه که یه حرف معمولا چند قاب طول می‌کشه. CTC با یه قانون ساده حلش می‌کنه؛ اول تکرارهای پشت هم یکی می‌شن، بعد نشونه‌های خالی حذف می‌شن. پس «س س ـ ل ل ا ا ـ م» می‌شه «سلام». نشونه‌ی خالی برای وقتیه که یه حرف واقعا دو بار پشت هم میاد؛ «ل ـ ل» می‌شه «لل».

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

پیچش کنار توجه

گفتار هم الگوهای محلی داره، مثل این‌که یه حرف چطور به حرف بعدی می‌رسه، و هم رابطه‌های دور، مثل این‌که موضوع جمله چیه. توجه برای رابطه‌های دور عالیه، و پیچش برای الگوهای محلی. یه پژوهش ۲۰۲۰ هر دو رو توی یه بلوک گذاشت؛ کنار توجه، یه لایه‌ی پیچشی هم که فقط همسایه‌ها رو می‌بینه.

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

یادگیری بی برچسب

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

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

یه پژوهش ۲۰۲۱ همین رو ساده‌تر کرد؛ صدا رو خوشه‌بندی کرد و از مدل خواست شماره‌ی خوشه‌ی بخش‌های پوشونده رو پیش‌بینی کنه، و بعد با مدل بهتر، خوشه‌ها رو دوباره ساخت. این روش‌ها برای زبان‌هایی که داده‌ی کم دارن، خیلی مهمن.

سنجش

خوبی یه مدل گفتار به متن رو معمولا با نرخ خطای کلمه، یا WER، کوتاه‌شده‌ی Word Error Rate، می‌سنجن. متن مدل رو با متن درست مقایسه می‌کنن و سه جور خطا می‌شمرن؛ کلمه‌ای که عوض شده، کلمه‌ای که جا افتاده، و کلمه‌ای که اضافه شده. جمعشون تقسیم بر تعداد کلمه‌های متن درست، می‌شه نرخ خطا.

مثلا متن درست ۲۰ کلمه‌ست، مدل یه کلمه رو عوض نوشته، یکی رو جا انداخته و یکی اضافه کرده. نرخ خطا می‌شه ۳ تقسیم بر ۲۰، یعنی ۱۵ درصد. چون اضافه‌ها هم شمرده می‌شن، نرخ خطا می‌تونه از ۱۰۰ درصد هم بیشتر بشه. برای زبان‌هایی مثل فارسی، یه نکته‌ی ریز هم هست؛ نیم‌فاصله و املاهای مختلف یه کلمه، مثل «می‌ره» و «میره»، باید پیش از مقایسه یکی بشن، وگرنه خطای الکی شمرده می‌شه.

توهم

مدل‌های رمزگذار و رمزگشا، چون مثل یه مدل زبانی کلمه به کلمه می‌سازن، گاهی متنی می‌نویسن که توی صدا نیست. خود پژوهش ۲۰۲۲ گفت مدلش گاهی یه جمله رو چند بار تکرار می‌کنه، یا توی سکوت و نویز، جمله‌هایی کاملا ساختگی می‌نویسه؛ مثلا «ممنون که دیدید» آخر یه صدای خالی، چون توی داده‌ی آموزش، زیر خیلی از ویدیوها همچین جمله‌ای بوده.

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

زنده

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

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

صدا به نشونه

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

یه کدک عصبی سال ۲۰۲۲، صدای ۲۴ کیلوهرتز رو به ۷۵ قاب در ثانیه تبدیل می‌کرد. هر قاب، با یه ترفند به اسم کوانتیزه‌سازی برداری باقیمانده، به ۸ نشونه تبدیل می‌شد؛ نشونه‌ی اول از یه دفترچه‌ی ۱۰۲۴ تایی، تقریب کلی قاب رو می‌گه، نشونه‌ی دوم خطای اولی رو درست می‌کنه، سومی خطای دومی رو، و همین‌طور. پس هر ثانیه صدا، ۷۵ ضرب در ۸، یعنی ۶۰۰ نشونه می‌شه.

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

مدل زبانی صدا

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

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

متن به گفتار

خوندن یه متن با صدای یه آدم، یعنی متن به گفتار یا TTS، کوتاه‌شده‌ی Text to Speech، هم با همین فکر عوض شد. یه پژوهش ۲۰۲۳، متن و یه نمونه‌ی ۳ ثانیه‌ای از صدای یه نفر رو به‌عنوان شروع به یه مدل زبانی نشونه‌های کدک می‌داد، و مدل ادامه‌ش رو، یعنی همون متن با همون صدا، نشونه به نشونه می‌ساخت:

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

موسیقی

موسیقی سخت‌تر از گفتاره؛ بسامدهای بیشتر، چند ساز هم‌زمان، و ساختارهای خیلی بلند، مثل برگشتن یه ملودی بعد از یه دقیقه. یه پژوهش ۲۰۲۳، با همون فکر نشونه‌های معنایی و صوتی، موسیقی رو از روی یه توضیح متنی ساخت؛ مثلا «یه آهنگ آروم با پیانو و ویولن». برای پیوند متن و موسیقی، از یه مدل استفاده کرد که مثل پیوند متن و عکس، توضیح و موسیقی رو کنار هم می‌ذاره.

مشکل‌های این‌جا شبیه گفتاره؛ دنباله‌ها خیلی بلندن، چون یه دقیقه موسیقی با ۶۰۰ نشونه در ثانیه می‌شه ۳۶ هزار نشونه، پس همون ترفندهای متن خیلی بلند و توجه پراکنده لازم می‌شه. یه نگرانی هم هست؛ این مدل‌ها ممکنه تیکه‌هایی از آهنگ‌های آموزش رو تقریبا عینا تکرار کنن، که برای حق نشر مشکل‌سازه، و همون پژوهش هم بررسیش کرد.

دسته‌بندی صدا

همه‌ی کارها گفتار نیستن. تشخیص این‌که یه صدا صدای پارس سگه، شیشه شکستن، یا آژیر، هم کار مهمیه. یه پژوهش ۲۰۲۱ دقیقا همون کار ترنسفورمر بینایی رو روی طیف‌نگار کرد؛ طیف‌نگار رو مثل یه عکس به تکه‌های ۱۶ در ۱۶ برید، یه تکه‌ی دسته گذاشت، و دسته‌بندی کرد.

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

امنیت و تقلید صدا

وقتی با چند ثانیه نمونه، صدای هر کسی رو می‌شه ساخت، سوءاستفاده هم ممکنه؛ مثلا تماس تلفنی با صدای ساختگی یکی از اعضای خانواده که پول می‌خواد. خود پژوهش ۲۰۲۳ متن به گفتار هم به همین خطر اشاره کرد و گفت باید مدل‌هایی برای تشخیص صدای ساختگی ساخته بشه.

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

از کجا اومد

تشخیص گفتار سال‌ها با روش‌های آماری کار می‌کرد که صدا رو به واحدهای کوچیک صدا و بعد کلمه‌ها می‌رسوندن. ۲۰۰۶ CTC اومد، و دهه‌ی ۲۰۱۰ شبکه‌های بازگشتی و پیچشی جای روش‌های قدیمی رو گرفتن. ۲۰۱۸ و ۲۰۱۹ ترنسفورمر به گفتار رسید، و ۲۰۲۰ هم کانفورمر و هم یادگیری بی برچسب از صدای خام اومدن.

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

اشتباه‌های رایج

خیلی‌ها فکر می‌کنن مدل صدا، نمونه‌های خام رو یکی‌یکی می‌خونه؛ معمولا نه، اول طیف‌نگار یا یه لایه‌ی پیچشی صدا رو به ۵۰ تا ۱۰۰ بردار در ثانیه فشرده می‌کنه. یکی دیگه اینه که فکر کنن متنی که مدل گفتار به متن داده، حتما توی صدا بوده؛ دیدیم که مدل‌های کلمه به کلمه گاهی توهم می‌زنن، به‌خصوص توی سکوت.

سومی اینه که فکر کنن نرخ خطای ۵ درصد یعنی ۹۵ درصد جمله‌ها درسته؛ نه، یعنی از هر صد کلمه حدود پنج تا غلطه، و با جمله‌های ۲۰ کلمه‌ای، خیلی از جمله‌ها دست‌کم یه غلط دارن. و آخری اینه که فکر کنن صدای ساختگی رو همیشه می‌شه با گوش تشخیص داد؛ دیگه نه، برای همین نشانه‌گذاری و احتیاط لازمه.

تمرین

این چهار تا رو اول خودتون حساب کنید. یک، ۱۰ ثانیه گفتار با ۱۶ کیلوهرتز چند نمونه‌ست؟ دو، همون ۱۰ ثانیه با گام ۱۰ میلی‌ثانیه چند قاب طیف‌نگار داره، و بعد از یه لایه با گام ۲ چند تا؟ سه، کدکی با ۷۵ قاب در ثانیه و ۴ دفترچه، یه دقیقه صدا رو چند نشونه می‌کنه؟ چهار، متن درست ۵۰ کلمه، مدل ۲ تا عوض کرده، ۱ جا انداخته و ۲ اضافه کرده؛ نرخ خطای کلمه؟

جواب‌ها. اولی، ۱۰ ضرب در ۱۶ هزار، یعنی ۱۶۰ هزار. دومی، ۱۰۰۰ قاب، و بعد ۵۰۰. سومی، ۷۵ ضرب در ۴ ضرب در ۶۰، یعنی ۱۸ هزار نشونه. چهارمی، ۵ تقسیم بر ۵۰، یعنی ۱۰ درصد.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

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

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس

درس بعد