Voice/Speech ModelsopenaiSpeech-to-Text
معرفی و مستندات مدل هوش مصنوعی whisper-medium
مستندات مربوط به مدل whisper-medium از OpenAI برای استفاده در ای آی کار (AI-KAR)
معرفی و بررسی فنی
⚡ وضعیت پشتیبانی از زبان فارسی
این مدل از زبان فارسی به صورت متوسط پشتیبانی میکند و ممکن است در تشخیص لهجهها و اصطلاحات خاص دقت کمتری داشته باشد.
مدل Whisper-medium یک مدل تشخیص گفتار است که توسط OpenAI توسعه داده شده است. این مدل بر پایه یک شبکه عصبی عمیق آموزش داده شده است و قادر است گفتار را به متن با دقت بالا تبدیل کند. مدل Whisper-medium با استفاده از 680,000 ساعت داده صوتی و متن آموزش داده شده است که شامل 65% دادههای انگلیسی، 18% دادههای غیرانگلیسی با متن انگلیسی و 17% دادههای غیرانگلیسی با متن غیرانگلیسی است. این مدل از 98 زبان مختلف پشتیبانی میکند.
مدل Whisper-medium برای تحقیقات هوش مصنوعی طراحی شده است و بر روی استحکام، تعمیمپذیری و کاهش سوگیری تمرکز دارد. این مدل به ویژه در تشخیص گفتار انگلیسی عملکرد خوبی دارد. با این حال، به دلیل احتمال وجود خطاها و ملاحظات اخلاقی، استفاده از مدلهای Whisper برای رونویسی ضبطهای غیرمجاز یا در تصمیمگیریهای پرخطر توصیه نمیشود.
این مدل میتواند برای طیف گستردهای از کاربردها مورد استفاده قرار گیرد، از جمله:
مدل Whisper-medium از طریق API قابل دسترسی است و هزینه استفاده از آن بر اساس تعداد ثانیههای فایل صوتی ورودی محاسبه میشود، نه زمان پردازش. برای استفاده از این مدل، ابتدا باید یک کلید API از AI-KAR دریافت کنید. سپس میتوانید با استفاده از API، فایل صوتی خود را ارسال کرده و متن رونویسی شده را دریافت کنید.
برای جلوگیری از مشکلات مربوط به timeout، فرآیند تبدیل گفتار به متن به دو مرحله تقسیم شده است: ابتدا یک درخواست POST به آدرس `/stt/create` ارسال میشود که یک شناسه تولید (generation_id) برمیگرداند. سپس با استفاده از این شناسه، یک درخواست GET به آدرس `/stt/{generation_id}` ارسال میشود تا متن رونویسی شده دریافت شود. این روش به اطمینان از تکمیل فرآیند رونویسی کمک میکند.
مدل Whisper-medium یک ابزار قدرتمند برای تبدیل گفتار به متن است که میتواند در بسیاری از زمینهها مفید باشد. با این حال، مهم است که از محدودیتها و ملاحظات اخلاقی آن آگاه باشید و از آن به درستی استفاده کنید.
مدل Whisper-medium برای تحقیقات هوش مصنوعی طراحی شده است و بر روی استحکام، تعمیمپذیری و کاهش سوگیری تمرکز دارد. این مدل به ویژه در تشخیص گفتار انگلیسی عملکرد خوبی دارد. با این حال، به دلیل احتمال وجود خطاها و ملاحظات اخلاقی، استفاده از مدلهای Whisper برای رونویسی ضبطهای غیرمجاز یا در تصمیمگیریهای پرخطر توصیه نمیشود.
این مدل میتواند برای طیف گستردهای از کاربردها مورد استفاده قرار گیرد، از جمله:
- رونویسی خودکار پادکستها و ویدیوها
- ایجاد زیرنویس برای فیلمها و برنامههای تلویزیونی
- تبدیل گفتار به متن در برنامههای کاربردی موبایل و وب
- تحلیل احساسات و تشخیص موضوعات در مکالمات
- بهبود دسترسی برای افراد کمشنوا یا ناشنوا
مدل Whisper-medium از طریق API قابل دسترسی است و هزینه استفاده از آن بر اساس تعداد ثانیههای فایل صوتی ورودی محاسبه میشود، نه زمان پردازش. برای استفاده از این مدل، ابتدا باید یک کلید API از AI-KAR دریافت کنید. سپس میتوانید با استفاده از API، فایل صوتی خود را ارسال کرده و متن رونویسی شده را دریافت کنید.
برای جلوگیری از مشکلات مربوط به timeout، فرآیند تبدیل گفتار به متن به دو مرحله تقسیم شده است: ابتدا یک درخواست POST به آدرس `/stt/create` ارسال میشود که یک شناسه تولید (generation_id) برمیگرداند. سپس با استفاده از این شناسه، یک درخواست GET به آدرس `/stt/{generation_id}` ارسال میشود تا متن رونویسی شده دریافت شود. این روش به اطمینان از تکمیل فرآیند رونویسی کمک میکند.
مدل Whisper-medium یک ابزار قدرتمند برای تبدیل گفتار به متن است که میتواند در بسیاری از زمینهها مفید باشد. با این حال، مهم است که از محدودیتها و ملاحظات اخلاقی آن آگاه باشید و از آن به درستی استفاده کنید.
مشخصات فنی (API References)
| پارامتر | نوع | توضیحات و مقادیر |
|---|---|---|
model | stringRequired | مدل مورد استفاده برای تبدیل گفتار به متن. مقدار پیشفرض و پیشنهادی: #g1_whisper-medium مقادیر مجاز (کلیک برای کپی): |
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 endpoint انتخابی، فقط زبانهای خاصی در دسترس هستند. |
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-medium",
"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":
("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"
}