Voice/Speech ModelsopenaiSpeech-to-Text

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

مستندات مدل whisper-large از OpenAI، ارائه شده توسط ای آی کار (AI-KAR)

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

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

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

مدل whisper-large از OpenAI یک مدل تشخیص گفتار است که برای تحقیقات هوش مصنوعی، با تمرکز بر پایداری مدل، تعمیم‌پذیری و سوگیری‌ها توسعه یافته است. این مدل به طور خاص برای تشخیص گفتار انگلیسی بسیار موثر است، اما قابلیت‌هایی در تشخیص گفتار به زبان‌های دیگر نیز دارد. با این حال، استفاده از مدل‌های Whisper برای رونویسی ضبط‌های غیرمجاز یا در زمینه‌های تصمیم‌گیری پرخطر به دلیل احتمال نادرستی‌ها و نگرانی‌های اخلاقی به شدت منع می‌شود. این مدل با استفاده از 680,000 ساعت داده صوتی و متن متناظر از اینترنت آموزش داده شده است. 65% این داده‌ها شامل صوت و متن انگلیسی، 18% صوت غیرانگلیسی با متن انگلیسی و 17% صوت غیرانگلیسی با متن غیرانگلیسی است که در مجموع 98 زبان را پوشش می‌دهد. مدل‌های Whisper بر اساس ثانیه محاسبه می‌شوند. هزینه رونویسی صوتی بر اساس تعداد ثانیه‌های فایل صوتی ورودی محاسبه می‌شود، نه زمان پردازش. این مدل از طریق یک فرآیند دو مرحله‌ای کار می‌کند: ابتدا، یک درخواست POST به آدرس `https://api.ai-kar.com/v1/stt/create` ارسال می‌شود تا یک وظیفه پردازش گفتار به متن ایجاد و به سرور ارسال شود. این متد پارامترهای مشابه نسخه قدیمی را می‌پذیرد، اما به جای متن نهایی، یک `generation_id` برمی‌گرداند. سپس، یک درخواست GET به آدرس `https://api.ai-kar.com/v1/stt/{generation_id}` ارسال می‌شود تا متن تولید شده از سرور با استفاده از `generation_id` دریافت شود. این رویکرد به جلوگیری از خرابی‌های تولید به دلیل اتمام زمان کمک می‌کند. این مدل برای تشخیص گفتار در محیط‌های مختلف و با شرایط صوتی متفاوت طراحی شده است. با این حال، دقت آن ممکن است در شرایط نویزی یا با لهجه‌های قوی کاهش یابد. همچنین، این مدل قادر است تا حدودی زبان‌های دیگر را نیز تشخیص دهد، اما عملکرد آن در زبان انگلیسی به مراتب بهتر است. برای استفاده از این مدل، ابتدا باید یک کلید API از ای آی کار (AI-KAR) دریافت کنید. سپس، می‌توانید با استفاده از کد نمونه‌های ارائه شده، فایل‌های صوتی خود را به متن تبدیل کنید. در نظر داشته باشید که استفاده از این مدل برای اهداف غیرقانونی یا غیراخلاقی مجاز نیست. ای آی کار (AI-KAR) هیچ مسئولیتی در قبال استفاده نادرست از این مدل نخواهد داشت. این مدل به طور مداوم در حال بهبود است و نسخه‌های جدیدتر با دقت و قابلیت‌های بیشتری ارائه خواهند شد. برای اطلاع از آخرین تغییرات و به‌روزرسانی‌ها، به مستندات ای آی کار (AI-KAR) مراجعه کنید.

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

پارامترنوعتوضیحات و مقادیر
model
stringRequired
مدلی که برای تبدیل گفتار به متن استفاده می‌شود. مقدار پیش‌فرض: #g1_whisper-large
مقادیر مجاز (کلیک برای کپی):
custom_intent
string | string[]
یک قصد سفارشی که می‌خواهید مدل در صوت ورودی شما تشخیص دهد، در صورت وجود. حداکثر 100 مورد را ارسال کنید.
custom_topic
string | string[]
یک موضوع سفارشی که می‌خواهید مدل در صوت ورودی شما تشخیص دهد، در صورت وجود. حداکثر 100 مورد را ارسال کنید.
custom_intent_mode
string
نحوه تفسیر رشته‌های ارسالی به پارامتر `custom_intent` را تعیین می‌کند. وقتی `strict` باشد، مدل فقط مقاصدی را برمی‌گرداند که با استفاده از پارامتر `custom_intent` ارسال شده‌اند. وقتی `extended` باشد، مدل مقاصد شناسایی شده خود را علاوه بر مقاصد ارسالی با استفاده از پارامتر `custom_intent` برمی‌گرداند.
مقادیر مجاز (کلیک برای کپی):
custom_topic_mode
string
نحوه تفسیر رشته‌های ارسالی به پارامتر `custom_topic` را تعیین می‌کند. وقتی `strict` باشد، مدل فقط موضوعاتی را برمی‌گرداند که با استفاده از پارامتر `custom_topic` ارسال شده‌اند. وقتی `extended` باشد، مدل موضوعات شناسایی شده خود را علاوه بر موضوعات ارسالی با استفاده از پارامتر `custom_topic` برمی‌گرداند.
مقادیر مجاز (کلیک برای کپی):
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-large",
 "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": "e3d46bba-7562-44a9-b440-504d940342a3"
}