Voice/Speech ModelsdeepgramSpeech-to-Text

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

مستندات مدل nova-2 از Deepgram برای استفاده در ای آی کار (AI-KAR)

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

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

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

معرفی مدل nova-2

مدل Nova-2 بر اساس پیشرفت‌های Nova-1 ساخته شده است و از بهینه‌سازی‌های خاص گفتار در معماری Transformer، تکنیک‌های پالایش داده و یک رویکرد آموزش چند مرحله‌ای بهره می‌برد. این بهبودها منجر به کاهش نرخ خطای کلمه (WER) و تشخیص بهتر موجودیت‌ها (از جمله اسامی خاص و دنباله‌های الفبایی-عددی)، و همچنین بهبود نقطه‌گذاری و حروف بزرگ می‌شود.

Nova-2 گزینه‌های مدل زیر را ارائه می‌دهد:

  • automotive: بهینه شده برای صدا با واژگان مرتبط با خودرو.
  • conversationalai: بهینه شده برای مواردی که یک انسان با یک ربات خودکار صحبت می‌کند، مانند IVR، یک دستیار صوتی یا یک کیوسک خودکار.
  • drivethru: بهینه شده برای منابع صوتی از درایو تروها.
  • finance: بهینه شده برای چند بلندگو با کیفیت صوتی متفاوت، مانند آنچه در یک تماس تلفنی معمولی یافت می‌شود. واژگان به شدت مالی محور است.
  • general: بهینه شده برای پردازش صوتی روزمره.
  • medical: بهینه شده برای صدا با واژگان پزشکی.
  • meeting: بهینه شده برای تنظیمات اتاق کنفرانس، که شامل چند بلندگو با یک میکروفون است.
  • phonecall: بهینه شده برای تماس‌های تلفنی صوتی با پهنای باند کم.
  • video: بهینه شده برای صداهای گرفته شده از فیلم ها.
  • voicemail: بهینه شده برای کلیپ های صوتی با پهنای باند کم با یک بلندگو. برگرفته از مدل تماس تلفنی.

مدل‌های Nova-2 از صورت‌حساب بر اساس ثانیه استفاده می‌کنند. هزینه رونویسی صدا بر اساس تعداد ثانیه‌ها در فایل صوتی ورودی است، نه زمان پردازش.

این مدل با استفاده از معماری پیشرفته و داده‌های آموزشی گسترده، قادر است گفتار را با دقت بالا به متن تبدیل کند. از جمله قابلیت‌های کلیدی آن می‌توان به موارد زیر اشاره کرد:

  • تشخیص دقیق کلمات: با بهره‌گیری از الگوریتم‌های پیشرفته، مدل Nova-2 قادر است کلمات را با دقت بالایی تشخیص دهد، حتی در محیط‌های پر سر و صدا یا با لهجه‌های مختلف.
  • پشتیبانی از زبان‌های مختلف: این مدل از زبان‌های مختلفی پشتیبانی می‌کند و می‌تواند گفتار را به زبان‌های مختلف به متن تبدیل کند.
  • تشخیص موجودیت‌ها: مدل Nova-2 قادر است موجودیت‌های مختلف مانند نام افراد، سازمان‌ها، مکان‌ها و تاریخ‌ها را در متن تشخیص دهد.
  • تشخیص لحن: این مدل می‌تواند لحن گوینده را تشخیص دهد و احساسات موجود در گفتار را شناسایی کند.
  • خلاصه‌سازی متن: مدل Nova-2 می‌تواند متن‌های طولانی را خلاصه کند و نکات کلیدی را استخراج کند.
  • تشخیص موضوعات: این مدل می‌تواند موضوعات اصلی متن را تشخیص دهد و دسته‌بندی کند.

با استفاده از مدل Nova-2، می‌توانید به راحتی گفتار را به متن تبدیل کنید، اطلاعات کلیدی را از متن استخراج کنید و تحلیل‌های مختلفی را بر روی متن انجام دهید. این مدل برای کاربردهای مختلفی مانند رونویسی جلسات، تحلیل نظرات مشتریان، تولید محتوا و غیره مناسب است.

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

پارامترنوعتوضیحات و مقادیر
model
stringRequired
مدلی که برای تبدیل گفتار به متن استفاده می‌شود. یکی از مقادیر enum را انتخاب کنید.
مقادیر مجاز (کلیک برای کپی):
custom_intent
string | string[]
یک قصد سفارشی که می‌خواهید مدل در صدای ورودی شما در صورت وجود شناسایی کند. حداکثر 100 مورد را ارسال کنید.
custom_topic
string | string[]
یک موضوع سفارشی که می‌خواهید مدل در صدای ورودی شما در صورت وجود شناسایی کند. حداکثر 100 مورد را ارسال کنید.
custom_intent_mode
string
نحوه تفسیر رشته‌های ارسال شده به پارامتر custom_intent را تعیین می‌کند. وقتی strict باشد، مدل فقط اهدافی را که با استفاده از پارامتر custom_intent ارسال شده‌اند، برمی‌گرداند. وقتی extended باشد، مدل اهداف شناسایی شده خود را علاوه بر اهداف ارسال شده با استفاده از پارامتر custom_intents برمی‌گرداند.
مقادیر مجاز (کلیک برای کپی):
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، از گزینه رشته ای پشتیبانی می کند. برای Read API، فقط boolean را می پذیرد.
tag
string[]
درخواست های خود را به منظور شناسایی در طول گزارش استفاده برچسب گذاری کنید.
topics
boolean
موضوعات را در سراسر رونویسی یا متن تشخیص می دهد.
utterances
boolean
Opti

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

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

برای احراز هویت، حتما کلید 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_nova-2-meeting",
        "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": "h66460ba-0562-1dd9-b440-a56d947e72a3"
}