خلاصه کردن جلسات در 5 دقیقه با پایتون

جلسات مجازی به یک رکن اساسی در کار مدرن تبدیل شده اند، اما بررسی ضبط های طولانی می تواند زمان بر باشد. در این آموزش یاد خواهید گرفت که چگونه به طور خودکار خلاصه ای از ضبط های جلسه را در کمتر از 10 خط کد با استفاده از API شرکت AssemblyAI ایجاد کنید.

خلاصه جلسات مبتنی بر LLM

این آموزش نشان می دهد که چگونه از مدل خلاصه سازی اختصاصی هوش مصنوعی ما استفاده کنید. اگر می خواهید نحوه تولید خلاصه جلسات با LLM ها را ببینید، به وبلاگ مربوطه ما مراجعه کنید.

رفتن به وبلاگ

شروع شدن

ابتدا یک کلید API رایگان AssemblyAI را از اینجا دریافت کنید. این پیشنهاد رایگان دارای صدها ساعت تبدیل گفتار به متن و خلاصه سازی رایگان است.

برای دنبال کردن، باید پایتون را روی سیستم خود نصب کرده باشید، بنابراین اگر قبلاً این کار را نکرده اید، آن را نصب کنید. سپس SDK پایتون AssemblyAI را نصب کنید، که به شما امکان می دهد API را از کد پایتون خود فراخوانی کنید:

pip install -U assemblyai

پیاده سازی اولیه

وقت آن است که گردش کار خلاصه سازی خود را در پایتون تنظیم کنید. ابتدا، SDK AssemblyAI را وارد کرده و کلید API خود را پیکربندی کنید. در حالی که ما کلید API را به صورت درون خطی در اینجا برای سادگی تنظیم می کنیم، شما باید آن را به طور ایمن در یک فایل پیکربندی یا متغیر محیطی در کد تولید ذخیره کنید، و هرگز آن را در کنترل منبع بررسی نکنید.

import assemblyai as aai
aai.settings.api_key = "YOUR_API_KEY"

در مرحله بعد، یک شی پیکربندی رونویسی مانند شکل زیر ایجاد کنید. این پیکربندی TranscriptionConfig به AssemblyAI می گوید که می خواهید هنگام ارسال یک فایل برای تبدیل گفتار به متن، خلاصه سازی را فعال کنید، و همچنین مشخص می کند که کدام مدل را می خواهید برای خلاصه سازی استفاده کنید و همچنین نوع (یا فرمت) خلاصه ای که می خواهید ایجاد کنید:

config = aai.TranscriptionConfig(
 summarization=True,
 summary_model=aai.SummarizationModel.informative,
 summary_type=aai.SummarizationType.bullets
)

در مرحله بعد، یک شی transcriber ایجاد کنید، که رونویسی فایل های صوتی را انجام می دهد. ارسال TranscriptionConfig تعریف شده در بالا این تنظیمات را برای هر رونویسی ایجاد شده توسط این رونویسگر اعمال می کند.

transcriber = aai.Transcriber(config=config)

اکنون می توانید فایل ها را برای رونویسی با استفاده از روش transcribe از transcriber ارسال کنید. می توانید یک مسیر فایل محلی یا یک URL از راه دور را به یک فایل صوتی یا تصویری که به طور عمومی قابل دسترسی است و می خواهید رونویسی کنید، وارد کنید:

# example remote file
transcript = transcriber.transcribe("https://storage.googleapis.com/aai-web-samples/ravenel_bridge.opus")
# or you can use a local file
# transcript = transcriber.transcribe("path/to/your/audio.mp3")

سپس می توانید از طریق ویژگی summary از transcript حاصل به اطلاعات خلاصه دسترسی پیدا کنید:

print(transcript.summary)

در اینجا خروجی برای فایل نمونه بالا آمده است:

- The Arthur Ravenel Jr Bridge opened in 2005 and is the longest cable stayed bridge in the Western Hemisphere. The design features two diamond shaped towers that span the Cooper river and connect downtown Charleston with Mount Pleasant. The bicycle pedestrian paths provide unparalleled views of the harbor.

استفاده از کتابخانه requests پایتون

اگر ترجیح می دهید به جای SDK AssemblyAI از کتابخانه requests استفاده کنید، می توانید مستقیماً یک درخواست POST به نقطه پایانی API ارسال کنید. درخواست POST به API ما برای رونویسی با خلاصه سازی به این شکل است، با استفاده از cURL:

curl https://api.assemblyai.com/v2/transcript \
--header "Authorization: <YOUR_API_KEY>" \
--header "Content-Type: application/json" \
--data '{
 "audio_url": "YOUR_AUDIO_URL",
 "summarization": true,
 "summary_model": "informative",
 "summary_type": "bullets"
}'

در اینجا نحوه ایجاد چنین درخواستی در پایتون با استفاده از کتابخانه requests آمده است:

import requests

url = "https://api.assemblyai.com/v2/transcript"
headers = {
 "Authorization": "<YOUR_API_KEY>",
 "Content-Type": "application/json"
}
data = {
 "audio_url": "YOUR_AUDIO_URL",
 "summarization": True,
 "summary_model": "informative", 
 "summary_type": "bullets"
}

response = requests.post(url, json=data, headers=headers)

پاسخ شامل یک id رونویسی است که می تواند برای دسترسی به رونویسی پس از اتمام پردازش استفاده شود. می توانید از webhooks استفاده کنید تا هنگام آماده شدن رونویسی مطلع شوید، یا می توانید API را نظرسنجی کنید تا وضعیت را بررسی کنید - در اینجا یک مثال کامل از ارسال یک فایل و سپس نظرسنجی تا زمانی که رونویسی آماده شود، آمده است:

import requests
import os
import time

URL = "https://api.assemblyai.com/v2/transcript"
HEADERS = {
 "Authorization": f"{os.getenv('ASSEMBLYAI_API_KEY')}",
 "Content-Type": "application/json"
}
DATA = {
 "audio_url": "https://storage.googleapis.com/aai-web-samples/ravenel_bridge.opus",
 "summarization": True,
 "summary_model": "informative", 
 "summary_type": "bullets"
}

# Submit the transcription request
response = requests.post(URL, json=DATA, headers=HEADERS)

if response.status_code == 200:
 transcript_id = response.json()['id']
 
 # Poll until completion
 while True:
 polling_endpoint = f"https://api.assemblyai.com/v2/transcript/{transcript_id}"
 polling_response = requests.get(polling_endpoint, headers=HEADERS)
 transcript = polling_response.json()
 status = transcript['status']
 
 if status == 'completed':
 print("Transcription completed!")
 print("Summary:", transcript.get('summary', ''))
 break
 elif status == 'error':
 print("Error:", transcript['error'])
 break
 
 print("Transcript processing ...")
 time.sleep(3)
 
else:
 print(f"Error: {response.status_code}")
 print(response.text)

سفارشی سازی خلاصه ها

AssemblyAI مدل ها و انواع خلاصه مختلفی را برای مطابقت با موارد استفاده مختلف ارائه می دهد:

مدل های خلاصه

  • informative (پیش فرض): برای محتوای تک بلندگو مانند ارائه ها بهینه شده است
  • conversational: بهترین برای گفتگوهای دو نفره مانند مصاحبه ها
  • catchy: برای ایجاد عناوین رسانه ای جذاب طراحی شده است

انواع خلاصه

  • bullets (پیش فرض): نکات کلیدی در قالب گلوله
  • bullets_verbose: خلاصه جامع گلوله ای
  • gist: خلاصه مختصر در چند کلمه
  • headline: خلاصه تک جمله ای
  • paragraph: خلاصه به شکل پاراگراف

بهترین شیوه ها و عیب یابی

انتخاب مدل و نوع خلاصه مناسب برای نتایج مطلوب مهم است. برای ضبط های واضح با دو بلندگو، از مدل مکالمه استفاده کنید. اگر با محتوای کوتاه تر کار می کنید، انواع gist یا headline به شما کمک بیشتری می کنند، در حالی که ضبط های طولانی تر بهتر است با فرمت های bullets_verbose یا paragraph مدیریت شوند.

اگر در گرفتن نتایج خوب مشکل دارید، ابتدا بررسی کنید که کیفیت صدای شما این معیارها را داشته باشد:

  • صدای بلندگوها متمایز و به راحتی قابل تشخیص است
  • نویز پس زمینه به حداقل رسیده است
  • ورودی صدا واضح و به خوبی ضبط شده است

و در نهایت، برخی از ملاحظات فنی را در نظر داشته باشید:

  • مدل خلاصه سازی نمی تواند همزمان با فصل های خودکار اجرا شود
  • خلاصه سازی باید به صراحت در پیکربندی شما فعال شود
  • زمان پردازش ممکن است بر اساس طول و پیچیدگی صدای شما متفاوت باشد

مراحل بعدی

برای کسب اطلاعات بیشتر در مورد نحوه استفاده از API ما و ویژگی هایی که ارائه می دهد، مستندات ما را بررسی کنید، یا مخزن کتاب های آشپزی ما را بررسی کنید تا راه حل هایی برای موارد استفاده رایج مرور کنید. از طرف دیگر، وبلاگ ما را برای آموزش ها و بررسی های عمیق در مورد نظریه هوش مصنوعی، مانند این مقدمه ای بر LLM ها، یا کانال YouTube ما را برای آموزش های پروژه و موارد دیگر، مانند این آموزش در مورد ساخت یک عامل صوتی هوش مصنوعی در پایتون با DeepSeek R1، بررسی کنید:

ویدئوی YouTube در مورد عامل صوتی هوش مصنوعی در پایتون
ساخت یک عامل صوتی هوش مصنوعی در پایتون با DeepSeek R1 (تصویر Placeholder)