Voice/Speech Modelsassembly-aiSpeech-to-Text

معرفی و مستندات مدل هوش مصنوعی universal

مستندات مدل universal از assembly-ai برای استفاده در ای آی کار (AI-KAR)

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

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

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

مدل universal از assembly-ai یک مدل تبدیل گفتار به متن (Speech-to-Text) است که با بهره‌گیری از درک عمیق از متن و معناشناسی، دقت فوق‌العاده‌ای را ارائه می‌دهد. این مدل از طیف گسترده‌ای از زبان‌ها پشتیبانی می‌کند و برای پردازش فایل‌های صوتی با زبان‌های مختلف مناسب است. یکی از ویژگی‌های برجسته این مدل، استفاده از سیستم پرداخت به ازای هر ثانیه است. به این معنی که هزینه تبدیل گفتار به متن بر اساس تعداد ثانیه‌های موجود در فایل صوتی ورودی محاسبه می‌شود، نه بر اساس زمان پردازش. این امر به کاربران کمک می‌کند تا هزینه‌های خود را به طور دقیق‌تر مدیریت کنند.

مدل universal قادر است انواع مختلفی از وظایف پردازش صدا را انجام دهد. از جمله این وظایف می‌توان به موارد زیر اشاره کرد:

1. **تبدیل گفتار به متن با دقت بالا:** این مدل با استفاده از الگوریتم‌های پیشرفته، قادر است گفتار را با دقت بسیار بالایی به متن تبدیل کند. این ویژگی برای مواردی که دقت متن بسیار مهم است، مانند تهیه رونوشت از جلسات یا مصاحبه‌ها، بسیار حائز اهمیت است.
2. **پشتیبانی از زبان‌های مختلف:** مدل universal از طیف گسترده‌ای از زبان‌ها پشتیبانی می‌کند. این ویژگی به کاربران امکان می‌دهد تا فایل‌های صوتی با زبان‌های مختلف را به متن تبدیل کنند.
3. **تشخیص خودکار زبان:** این مدل قادر است به طور خودکار زبان فایل صوتی ورودی را تشخیص دهد. این ویژگی به کاربران کمک می‌کند تا بدون نیاز به تعیین زبان، فایل‌های صوتی خود را پردازش کنند.
4. **اضافه کردن نشانه‌گذاری و حروف بزرگ:** این مدل می‌تواند به طور خودکار نشانه‌گذاری و حروف بزرگ را به متن اضافه کند. این ویژگی باعث می‌شود که متن خواناتر و قابل فهم‌تر شود.
5. **قالب‌بندی متن:** این مدل می‌تواند متن را به طور خودکار قالب‌بندی کند. این ویژگی باعث می‌شود که متن زیباتر و منظم‌تر به نظر برسد.
6. **حذف کلمات اضافی:** این مدل می‌تواند کلمات اضافی مانند "اوم" را از متن حذف کند. این ویژگی باعث می‌شود که متن روان‌تر و حرفه‌ای‌تر به نظر برسد.
7. **پشتیبانی از چند کانال صوتی:** این مدل می‌تواند فایل‌های صوتی با چند کانال صوتی را پردازش کند. این ویژگی برای مواردی که فایل صوتی شامل چندین گوینده است، بسیار مفید است.
8. **تشخیص هویت گوینده:** این مدل می‌تواند هویت گوینده‌های مختلف را در فایل صوتی تشخیص دهد. این ویژگی برای مواردی که نیاز به شناسایی گوینده‌های مختلف است، مانند جلسات یا مصاحبه‌ها، بسیار حائز اهمیت است.
9. **تشخیص محتوای نامناسب:** این مدل می‌تواند محتوای نامناسب را در فایل صوتی تشخیص دهد. این ویژگی برای مواردی که نیاز به فیلتر کردن محتوای نامناسب است، مانند پادکست‌ها یا ویدیوها، بسیار مفید است.
10. **تشخیص موضوع:** این مدل می‌تواند موضوع فایل صوتی را تشخیص دهد. این ویژگی برای مواردی که نیاز به دسته‌بندی فایل‌های صوتی بر اساس موضوع است، بسیار حائز اهمیت است.
11. **تصحیح املایی:** این مدل می‌تواند املای کلمات را تصحیح کند. این ویژگی به کاربران کمک می‌کند تا متن‌های بدون غلط املایی تولید کنند.
12. **خلاصه سازی:** این مدل می‌تواند یک خلاصه از متن تولید کند.
13. **فصل بندی خودکار:** این مدل می تواند به طور خودکار فصل ها را تشخیص دهد.

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

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

پارامترنوعتوضیحات و مقادیر
model
stringRequired
مدل مورد استفاده برای تبدیل گفتار به متن. مقدار معتبر: aai/universal
مقادیر مجاز (کلیک برای کپی):
audio
objectRequired
فایل صوتی برای تبدیل به متن.
audio_start_from
integer
نقطه شروع فایل صوتی برای رونویسی، بر حسب میلی‌ثانیه.
audio_end_at
integer
نقطه پایان فایل صوتی برای رونویسی، بر حسب میلی‌ثانیه.
language_code
string
کد زبان فایل صوتی. مقادیر ممکن در Supported Languages یافت می‌شوند. مقدار پیش‌فرض 'en_us' است.
language_confidence_threshold
number
آستانه اطمینان برای زبان شناسایی شده به صورت خودکار. اگر اطمینان زبان کمتر از این آستانه باشد، یک خطا برگردانده می‌شود. مقدار پیش‌فرض 0 است.
language_detection
boolean
فعال کردن تشخیص خودکار زبان، مقدار true یا false. فقط برای مدل universal در دسترس است.
punctuate
boolean
اضافه کردن نشانه‌گذاری و حروف بزرگ به متن.
format_text
boolean
فعال کردن قالب‌بندی متن، مقدار true یا false.
disfluencies
boolean
رونویسی کلمات پرکننده، مانند "اوم"، در فایل رسانه‌ای. مقدار true یا false.
multichannel
boolean
فعال کردن رونویسی چند کاناله، مقدار true یا false.
speaker_labels
boolean
فعال کردن تشخیص هویت گوینده، مقدار true یا false.
speakers_expected
integer
به مدل تشخیص هویت گوینده بگویید که چند گوینده را شناسایی کند. برای جزئیات بیشتر به Speaker diarization مراجعه کنید.
content_safety
boolean
فعال کردن تعدیل محتوا، مقدار true یا false.
iab_categories
boolean
فعال کردن تشخیص موضوع، مقدار true یا false.
custom_spelling
object[]
سفارشی کردن نحوه املای کلمات با استفاده از مقادیر to و from.
auto_highlights
boolean
فعال کردن عبارات کلیدی، مقدار true یا false.
word_boost
string[]
لیست واژگان سفارشی برای افزایش احتمال رونویسی.
boost_param
string
میزان تقویت کلمات مشخص شده. مقادیر مجاز: low, default, high.
مقادیر مجاز (کلیک برای کپی):
filter_profanity
boolean
فیلتر کردن کلمات رکیک از متن رونویسی شده، مقدار true یا false.
redact_pii
boolean
حذف اطلاعات شناسایی شخصی (PII) از متن رونویسی شده با استفاده از مدل Redact PII، مقدار true یا false.
redact_pii_audio
boolean
تولید یک کپی از فایل رسانه‌ای اصلی با حذف صدای PII، مقدار true یا false. برای جزئیات بیشتر به PII redaction مراجعه کنید.
redact_pii_audio_quality
string
کنترل نوع فایل صوتی ایجاد شده توسط redact_pii_audio. در حال حاضر از mp3 (پیش‌فرض) و wav پشتیبانی می‌کند. برای جزئیات بیشتر به PII redaction مراجعه کنید.
مقادیر مجاز (کلیک برای کپی):
redact_pii_policies
string[]
لیست سیاست‌های Redaction PII برای فعال کردن. برای جزئیات بیشتر به PII redaction مراجعه کنید.
redact_pii_sub
string
منطق جایگزینی برای PII شناسایی شده، می‌تواند entity_type یا hash باشد. برای جزئیات بیشتر به PII redaction مراجعه کنید.
مقادیر مجاز (کلیک برای کپی):
sentiment_analysis
boolean
فعال کردن تحلیل احساسات، مقدار true یا false.
entity_detection
boolean
فعال کردن تشخیص موجودیت، مقدار true یا false.
summarization
boolean
فعال کردن خلاصه سازی، مقدار true یا false.
summary_model
string
مدل برای خلاصه کردن متن. مقادیر مجاز: informative, conversational, catchy.
مقادیر مجاز (کلیک برای کپی):
summary_type
string
نوع خلاصه. مقادیر مجاز: bullets, bullets_verbose, gist, headline, paragraph.
مقادیر مجاز (کلیک برای کپی):
auto_chapters
boolean
فعال کردن فصل بندی خودکار، مقدار true یا false.
speech_threshold
number
رد کردن فایل‌های صوتی که کمتر از این مقدار حاوی گفتار هستند. مقادیر معتبر در محدوده [0, 1] هستند.

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

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

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

import time
import requests
import json   # for getting a structured output with indentation
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": "aai/universal",
        "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"]["text"])
                # Uncomment the line below to print the entire "result" object with all service data
                # print("Processing complete:/n", json.dumps(response_data["result"], indent=2, ensure_ascii=False))
                return response_data
        print("Timeout reached. Stopping.")
        return None
if __name__ == "__main__":
    main()

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

RESPONSE (200 OK)
{
  "generation_id": "123e4567-e89b-12d3-a456-426614174000"
}