api تایپ صوتی فارسی
با استفاده از API تایپ صوتی همزمان (ASR)، میتوانید گفتار را بهصورت لحظهای به متن تبدیل کنید. در این سرویس، جریان صوتی از طریق پروتکل WSS (WebSocket Secure) و بهصورت بستههای متوالی (Streaming) به سرورهای iotype ارسال میشود. همزمان با دریافت دادههای صوتی، عملیات تشخیص گفتار انجام شده و نتیجه نیز از طریق همان اتصال WSS بهصورت آنی برای کلاینت ارسال میشود. این سرویس برای کاربردهای بلادرنگ مانند دستیارهای صوتی، زیرنویس زنده، مراکز تماس، سیستمهای دیکته، و هر سناریویی که نیاز به تبدیل همزمان گفتار به متن دارد، طراحی شده است. با حفظ یک اتصال پایدار WebSocket، میتوانید بدون انتظار برای پایان مکالمه، متن تشخیصدادهشده را بهصورت پیوسته دریافت و در برنامه خود نمایش یا پردازش کنید.
سرویس ASR (Automatic Speech Recognition) امکان تبدیل گفتار به متن را بهصورت بلادرنگ (Real-Time) فراهم میکند. در این سرویس، کلاینت از طریق یک اتصال WebSocket Secure (WSS) به سرورهای iotype متصل شده و همزمان با ارسال جریان صوتی، نتایج تشخیص گفتار را نیز دریافت میکند. این معماری باعث میشود نیازی به انتظار برای پایان مکالمه نباشد و متن بهصورت لحظهای در اختیار برنامه قرار گیرد.
آدرس اتصال
برای استفاده از سرویس ASR، اتصال WebSocket را به آدرس زیر برقرار نمایید:
wss://iotype.com/socket/realtime
پس از برقراری موفق اتصال، اولین پیام ارسالی باید شامل اطلاعات احراز هویت و مدل تشخیص گفتار باشد. تا قبل از ارسال این پیام، هیچ داده صوتی نباید برای سرور ارسال شود.
پیام اولیه (Initialize Session)
اولین پیام پس از برقراری اتصال، یک پیام JSON با ساختار زیر است:
{
"config": {
"model": "io-fa",
"type": "flash_token",
"token": "YOUR_TOKEN"
}
}
پارامترها
| نام | نوع | الزامی | توضیح |
|---|---|---|---|
| model | String | بله | مدل تشخیص گفتار مورد استفاده. مقادیر مجاز: io-fa برای زبان فارسی، io-en برای زبان انگلیسی و io-ar برای زبان عربی |
| type | String | بله | نوع توکن احراز هویت. مقادیر مجاز: access_token یا flash_token |
| token | String | بله | مقدار Access Token یا Flash Token جهت احراز هویت اتصال |
نکته: تمامی پارامترهای
model،typeوtokenباید در شیءconfigارسال شوند. تا قبل از ارسال موفق این پیام، هیچ داده صوتی نباید برای سرور ارسال شود.
model
پارامتر model مشخص میکند که سرویس از کدام مدل تشخیص گفتار برای پردازش صوت استفاده کند.
مقادیر قابل قبول:
io-fa: مدل تشخیص گفتار زبان فارسیio-en: مدل تشخیص گفتار زبان انگلیسیio-ar: مدل تشخیص گفتار زبان عربی
انتخاب مدل صحیح بر اساس زبان گفتار باعث افزایش دقت تشخیص و بهبود کیفیت خروجی خواهد شد.
type
پارامتر type مشخص میکند که توکن ارسالشده برای احراز هویت از چه نوعی است.
مقادیر قابل قبول:
access_tokenflash_token
استفاده از Flash Token برای تمامی برنامههای سمت کاربر (Browser، Android، iOS، Desktop و ...) توصیه میشود.
در برنامههایی که امکان نگهداری امن کلید دسترسی وجود دارد، مانند ارتباطات سمت سرور (Server-to-Server)، میتوان از Access Token استفاده نمود.
فرمت صوت ارسالی
سرویس ASR دادههای صوتی را بهصورت Binary Frame از طریق WebSocket دریافت میکند.
ویژگیهای صوت ورودی
| ویژگی | مقدار |
|---|---|
| Encoding | PCM Linear 16-bit |
| Channels | Mono |
| Endian | Little Endian |
برای بیشترین دقت تشخیص گفتار، استفاده از صوت با نرخ نمونهبرداری 16000Hz توصیه میشود.
نرخ نمونهبرداری صوت ورودی باید با داده واقعی ارسالشده کاملاً یکسان باشد، در غیر این صورت کیفیت تشخیص کاهش خواهد یافت. همچنین استفاده از صوت تککاناله (Mono) باعث بهبود عملکرد سیستم تشخیص گفتار خواهد شد.
ارسال داده صوتی
پس از ارسال موفق پیام اولیه و تأیید اعتبار اتصال توسط سرور، کلاینت میتواند جریان صوتی را ارسال نماید.
دادههای صوتی باید بهصورت Binary Message ارسال شوند.
نکات مهم
- دادهها نباید به Base64 تبدیل شوند.
- هر پیام WebSocket باید شامل داده خام صوتی باشد.
- ارسال دادهها باید مطابق جریان واقعی ضبط صدا انجام شود.
- از ارسال حجم بسیار زیاد داده در یک پیام خودداری نمایید.
- ارسال پیوسته و با حجمهای کوچک باعث کاهش تأخیر و افزایش کیفیت تشخیص خواهد شد.
پاسخهای دریافتی از سرور
در طول فرآیند تشخیص گفتار، سرور پیامهای JSON را از طریق همان اتصال WebSocket ارسال میکند.
پاسخها در دو دسته اصلی قرار میگیرند:
- Partial Result
- Final Result
Partial Result
نتایج Partial متن موقتی هستند که در هنگام صحبت کاربر تولید میشوند و ممکن است در پیامهای بعدی تغییر کنند.
نمونه پاسخ:
{
"type": "partial",
"text": "سلام حال"
}
خصوصیات
- ممکن است چندین بار برای یک بخش از گفتار ارسال شود.
- متن آن نهایی نیست.
- در پیامهای بعدی ممکن است اصلاح یا کاملتر شود.
- برای نمایش لحظهای متن در رابط کاربری استفاده میشود.
Final Result
پس از پایان یک عبارت یا تشخیص مکث در گفتار، نتیجه نهایی ارسال میشود.
نمونه:
{
"type": "final",
"text": "سلام حال شما چطور است؟"
}
خصوصیات
- متن نهایی تشخیص دادهشده است.
- پس از دریافت، مقدار آن تغییر نخواهد کرد.
- میتواند در خروجی برنامه ذخیره یا پردازش شود.
- پس از دریافت Final، سیستم آماده پردازش ادامه گفتار خواهد بود.
چرخه کامل ارتباط
فرآیند ارتباط بین کلاینت و سرور به ترتیب زیر انجام میشود:
- برقراری اتصال به
wss://iotype.com/socket/realtime - ارسال پیام اولیه شامل
config.model،config.typeوconfig.token - اعتبارسنجی اطلاعات احراز هویت توسط سرور
- انتخاب مدل تشخیص گفتار بر اساس مقدار
config.model - شروع ارسال دادههای صوتی بهصورت Binary
- دریافت نتایج Partial در حین صحبت
- دریافت نتیجه Final پس از پایان هر عبارت
- ادامه ارسال صوت تا پایان جلسه
- بستن اتصال WebSocket توسط کلاینت یا سرور
این ساختار امکان تشخیص گفتار با کمترین تأخیر را فراهم میکند و برای کاربردهایی مانند دستیارهای صوتی، زیرنویس زنده، دیکته، مراکز تماس و سامانههای مکالمه هوشمند مناسب است.