Voice/Speech ModelsopenaiSpeech-to-Text

معرفی و مستندات مدل هوش مصنوعی whisper-tiny

مستندات مربوط به مدل whisper-tiny از OpenAI برای استفاده در ای آی کار (AI-KAR)

معرفی و بررسی فنی

⚡ وضعیت پشتیبانی از زبان فارسی

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

مدل Whisper Tiny، یکی از مدل‌های خانواده Whisper توسعه‌یافته توسط OpenAI است که به طور خاص برای تبدیل گفتار به متن (STT) طراحی شده است. این مدل با استفاده از حجم عظیمی از داده‌های صوتی و متنی آموزش داده شده است و قادر است گفتار را از زبان‌های مختلف به متن تبدیل کند. تمرکز اصلی در توسعه این مدل‌ها، ایجاد راهکارهایی مقاوم، با قابلیت تعمیم بالا و با کمترین میزان خطا بوده است. شایان ذکر است که استفاده از مدل‌های Whisper برای رونویسی مکالمات غیرمجاز یا در تصمیم‌گیری‌های پرخطر به دلیل احتمال وجود خطا و ملاحظات اخلاقی اکیداً توصیه نمی‌شود.

مدل‌های Whisper با استفاده از 680,000 ساعت داده‌های صوتی و متنی از اینترنت آموزش داده شده‌اند. این داده‌ها شامل 65% صوت و متن انگلیسی، 18% صوت غیرانگلیسی با متن انگلیسی و 17% صوت غیرانگلیسی با متن غیرانگلیسی است که در مجموع 98 زبان را پوشش می‌دهد. این تنوع زبانی و حجم بالای داده‌ها، مدل‌های Whisper را به ابزاری قدرتمند برای تشخیص گفتار در شرایط مختلف تبدیل کرده است.

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

1. **رونویسی سریع پادکست‌ها و ویدیوها:** با استفاده از Whisper Tiny می‌توان به سرعت فایل‌های صوتی و تصویری را به متن تبدیل کرد و از این متن برای ایجاد زیرنویس، خلاصه سازی و یا جستجو در محتوا استفاده کرد.
2. **پیاده‌سازی دستیارهای صوتی:** این مدل می‌تواند به عنوان بخشی از یک سیستم دستیار صوتی برای تشخیص دستورات صوتی کاربر و پاسخگویی به آنها استفاده شود.
3. **تبدیل گفتار به متن در برنامه‌های موبایل:** حجم کم Whisper Tiny آن را برای استفاده در برنامه‌های موبایل که با محدودیت منابع مواجه هستند، مناسب می‌سازد.
4. **ایجاد زیرنویس برای ویدیوها:** با استفاده از این مدل می‌توان به سرعت زیرنویس برای ویدیوها ایجاد کرد و آنها را برای مخاطبان گسترده‌تری در دسترس قرار داد.
5. **تحلیل احساسات در گفتار:** با ترکیب Whisper Tiny با سایر ابزارهای تحلیل احساسات، می‌توان احساسات موجود در گفتار را تشخیص داد و از این اطلاعات برای بهبود خدمات مشتریان و یا تحلیل بازخورد کاربران استفاده کرد.

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

مشخصات فنی (API References)

پارامترنوعتوضیحات و مقادیر
model
stringRequired
مدلی که برای تبدیل گفتار به متن استفاده می‌شود. مقدار پیش‌فرض #g1_whisper-tiny است.
مقادیر مجاز (کلیک برای کپی):
custom_intent
string | string[]
یک یا چند عبارت سفارشی که می‌خواهید مدل در صوت ورودی شناسایی کند. حداکثر 100 عبارت.
custom_topic
string | string[]
یک یا چند موضوع سفارشی که می‌خواهید مدل در صوت ورودی شناسایی کند. حداکثر 100 موضوع.
custom_intent_mode
string
نحوه تفسیر عبارات ارسالی به پارامتر custom_intent. strict: فقط عبارات ارسالی در custom_intent برگردانده می‌شوند. extended: علاوه بر عبارات ارسالی، عبارات شناسایی شده توسط مدل نیز برگردانده می‌شوند.
مقادیر مجاز (کلیک برای کپی):
custom_topic_mode
string
نحوه تفسیر عبارات ارسالی به پارامتر custom_topic. strict: فقط موضوعات ارسالی در custom_topic برگردانده می‌شوند. extended: علاوه بر موضوعات ارسالی، موضوعات شناسایی شده توسط مدل نیز برگردانده می‌شوند.
مقادیر مجاز (کلیک برای کپی):
detect_language
boolean
فعال کردن تشخیص زبان غالب در صوت ارسالی.
detect_entities
boolean
فعال کردن تشخیص موجودیت‌ها در صوت ارسالی. با فعال شدن این گزینه، قابلیت نقطه‌گذاری نیز به طور پیش‌فرض فعال می‌شود.
detect_topics
boolean
تشخیص مهم‌ترین و مرتبط‌ترین موضوعات موجود در گفتار.
diarize
boolean
تشخیص تغییرات گوینده. به هر کلمه در متن رونویسی شده یک شماره گوینده اختصاص داده می‌شود که از 0 شروع می‌شود.
dictation
boolean
شناسایی و استخراج موجودیت‌های کلیدی از محتوای صوت ارسالی.
diarize_version
string
نسخه diarize.
extra
string
جفت‌های کلید-مقدار دلخواه که به پاسخ API برای استفاده در پردازش‌های بعدی پیوست می‌شوند.
filler_words
boolean
تشخیص کلمات پرکننده مانند "uh" و "um" در صوت.
intents
boolean
تشخیص قصد گوینده در طول متن رونویسی شده.
keywords
string
کلمات کلیدی می‌توانند اصطلاحات تخصصی و برندها را تقویت یا سرکوب کنند.
language
string
تگ زبان BCP-47 که به زبان اصلی گفتاری اشاره دارد. بسته به مدل و نقطه پایانی API انتخابی، فقط زبان‌های خاصی در دسترس هستند.
measurements
boolean
تبدیل مقادیر اندازه‌گیری گفتاری به اختصارات مربوطه.
multi_channel
boolean
رونویسی مستقل هر کانال صوتی.
numerals
boolean
تبدیل اعداد از فرمت نوشتاری به فرمت عددی.
paragraphs
boolean
تقسیم صدا به پاراگراف‌ها برای بهبود خوانایی متن رونویسی شده.
profanity_filter
boolean
فیلتر کلمات رکیک به دنبال کلمات رکیک شناخته شده می‌گردد و آنها را به نزدیکترین کلمه غیر رکیک شناخته شده تبدیل می‌کند یا به طور کامل از متن رونویسی شده حذف می‌کند.
punctuate
boolean
افزودن نقطه‌گذاری و حروف بزرگ به متن رونویسی شده.
search
string
جستجو برای اصطلاحات یا عبارات در صوت ارسالی.
sentiment
boolean
تشخیص احساسات در طول متن رونویسی شده.
smart_format
boolean
اعمال قالب‌بندی به خروجی متن رونویسی شده. وقتی روی true تنظیم شود، قالب‌بندی اضافی برای بهبود خوانایی به متون رونویسی شده اعمال می‌شود.
summarize
string
خلاصه کردن محتوا. برای Listen API، از گزینه string version پشتیبانی می‌کند. برای Read API، فقط boolean را می‌پذیرد.
tag
string[]
برچسب‌گذاری درخواست‌ها برای شناسایی در گزارش‌گیری استفاده.
topics
boolean
تشخیص موضوعات در طول متن رونویسی شده.
utterances
boolean
تقسیم گفتار به واحدهای معنایی معنادار.
utt_split
number
مدت زمان (به ثانیه) برای تشخیص مکث بین کلمات در صوت ارسالی.

نمونه کدهای درخواست

نکته مهم برای توسعه‌دهندگان:

برای احراز هویت، حتما کلید API خود را جایگزین YOUR_API_KEY کنید. هدر Authorization الزامی است.

import time
import requests
base_url = "https://api.ai-kar.com/v1"
# Insert your AI-KAR API Key instead of <YOUR_AI-KARAPI_KEY>:
api_key = "<YOUR_AI-KARAPI_KEY>"
# Creating and sending a speech-to-text conversion task to the server
def create_stt():
 url = f"{base_url}/stt/create"
 headers = {
 "Authorization": f"Bearer {api_key}",
 }
 data = {
 "model": "#g1_whisper-tiny",
 "url": "https://audio-samples.github.io/samples/mp3/blizzard_primed/sample-0.mp3"
 }
 response = requests.post(url, json=data, headers=headers)
 if response.status_code >= 400:
 print(f"Error: {response.status_code} - {response.text}")
 else:
 response_data = response.json()
 print(response_data)
 return response_data
# Requesting the result of the task from the server using the generation_id
def get_stt(gen_id):
 url = f"{base_url}/stt/{gen_id}"
 headers = {
 "Authorization": f"Bearer {api_key}",
 }
 response = requests.get(url, headers=headers)
 return response.json()
# First, start the generation, then repeatedly request the result from the server every 10 seconds.
def main():
 stt_response = create_stt()
 gen_id = stt_response.get("generation_id")
 if gen_id:
 start_time = time.time()
 timeout = 600
 while time.time() - start_time < timeout:
 response_data = get_stt(gen_id)
 if response_data is None:
 print("Error: No response from API")
 break
 status = response_data.get("status")
 if status == "waiting" or status == "active":
 print("Still waiting... Checking again in 10 seconds.")
 time.sleep(10)
 else:
 print("Processing complete:/n", response_data["result"]['results']["channels"][0]["alternatives"][0]["transcript"])
 return response_data
 print("Timeout reached. Stopping.")
 return None
if __name__ == "__main__":
 main()

نمونه پاسخ موفق (JSON)

RESPONSE (200 OK)
{
  "generation_id": "f3e8729e-9a36-4650-81f1-c08fc1b16f39"
}