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"
}