Skip to content
Tutorials4 min read

توصيف تقسيم المتحدثين

ابنِ مهمة تحديد المتحدثين مع أشكال الموجة الصوتية وعلامات الطوابع الزمنية وتعيين تسميات المتحدثين.

Potato Team·

توصيف تقسيم المتحدثين

يجيب تقسيم المتحدثين عن سؤال "من تحدث ومتى؟" يغطي هذا الدرس بناء واجهات لتوصيف أدوار المتحدثين وتصحيح التقسيم التلقائي والتعامل مع المحادثات متعددة المتحدثين.

ما هو تقسيم المتحدثين؟

يقسّم تقسيم المتحدثين الصوت إلى مناطق متجانسة حسب المتحدث. تشمل التطبيقات:

  • نسخ الاجتماعات
  • تحليلات مراكز الاتصال
  • إنتاج البودكاست
  • معالجة المقابلات
  • التسجيلات القانونية/المحاكم

إعداد التقسيم الأساسي

yaml
annotation_task_name: "Speaker Diarization"
 
data_files:
  - "data/conversations.json"
 
annotation_schemes:
  - annotation_type: audio_annotation
    name: speakers
    description: "Mark when each speaker talks"
    labels:
      - name: Speaker 1
        color: "#FF6B6B"
        keyboard_shortcut: "1"
      - name: Speaker 2
        color: "#4ECDC4"
        keyboard_shortcut: "2"
      - name: Speaker 3
        color: "#45B7D1"
        keyboard_shortcut: "3"
      - name: Overlap
        color: "#FFEAA7"
        keyboard_shortcut: "o"
      - name: Silence
        color: "#9CA3AF"
        keyboard_shortcut: "s"

إنشاء مقاطع المتحدثين

سير العمل

  1. شغّل الصوت أو انقر على شكل الموجة للتنقل
  2. انقر واسحب على شكل الموجة لتحديد نطاق زمني
  3. اضغط مفتاح رقم أو انقر على تسمية متحدث
  4. يتم تلوين المقطع ووسمه
  5. اضبط الحدود بسحب الأطراف
  6. استمر حتى يُقسّم الصوت بالكامل

عناصر تحكم لوحة المفاتيح

يوفر Potato اختصارات لوحة مفاتيح مدمجة للتحكم في تشغيل الصوت بما في ذلك التشغيل/الإيقاف والتنقل.

تصحيح التقسيم المُوصّف مسبقاً

غالباً ستصحح تقسيماً تلقائياً:

yaml
data_files:
  - "data/auto_diarized.json"

تنسيق البيانات:

json
{
  "id": "meeting_001",
  "audio_path": "/audio/meeting_001.wav",
  "auto_segments": [
    {"start": 0.0, "end": 3.5, "speaker": "Speaker 1"},
    {"start": 3.5, "end": 8.2, "speaker": "Speaker 2"},
    {"start": 8.2, "end": 12.0, "speaker": "Speaker 1"}
  ]
}

معلومات المتحدث المفصلة

التقط بيانات وصفية إضافية للمتحدث:

yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: speakers
    labels:
      - name: Speaker A
        color: "#FF6B6B"
      - name: Speaker B
        color: "#4ECDC4"
      - name: Speaker C
        color: "#45B7D1"
      - name: Unknown
        color: "#9CA3AF"
 
  # Speaker characteristics
  - annotation_type: radio
    name: speaker_a_gender
    description: "Speaker A Gender"
    labels:
      - Male
      - Female
      - Unknown
 
  - annotation_type: text
    name: speaker_a_role
    description: "Speaker A Role (if identifiable)"
 
  - annotation_type: radio
    name: speaker_b_gender
    description: "Speaker B Gender"
    labels:
      - Male
      - Female
      - Unknown

التعامل مع الكلام المتداخل

yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: speakers
    labels:
      - name: Speaker 1
        color: "#FF6B6B"
      - name: Speaker 2
        color: "#4ECDC4"
      - name: Overlap
        color: "#FFEAA7"

تقسيم الاجتماعات/المقابلات

yaml
annotation_task_name: "Meeting Diarization"
 
data_files:
  - "data/meetings.json"
 
annotation_schemes:
  # Speaker turns
  - annotation_type: audio_annotation
    name: turns
    description: "Mark each speaker turn"
    labels:
      - name: Moderator
        color: "#EF4444"
        keyboard_shortcut: "m"
      - name: Participant 1
        color: "#3B82F6"
        keyboard_shortcut: "1"
      - name: Participant 2
        color: "#10B981"
        keyboard_shortcut: "2"
      - name: Participant 3
        color: "#F59E0B"
        keyboard_shortcut: "3"
      - name: Participant 4
        color: "#8B5CF6"
        keyboard_shortcut: "4"
      - name: Unknown
        color: "#6B7280"
        keyboard_shortcut: "u"
      - name: Overlap
        color: "#FCD34D"
        keyboard_shortcut: "o"
      - name: Silence/Noise
        color: "#D1D5DB"
        keyboard_shortcut: "s"
 
  # Speech type annotation
  - annotation_type: radio
    name: speech_type
    description: "Type of speech"
    labels:
      - Statement
      - Question
      - Response
      - Interruption
      - Backchannel
 
  # Overall quality
  - annotation_type: radio
    name: recording_quality
    description: "Overall recording quality"
    labels:
      - Excellent - All speakers clear
      - Good - Most speech understandable
      - Fair - Some difficulty
      - Poor - Significant issues

تنسيق المخرجات

json
{
  "id": "meeting_001",
  "audio_path": "/audio/meeting_001.wav",
  "annotations": {
    "turns": [
      {
        "start": 0.0,
        "end": 5.2,
        "label": "Moderator",
        "attributes": {
          "speech_type": "Statement"
        }
      },
      {
        "start": 5.2,
        "end": 12.8,
        "label": "Participant 1",
        "attributes": {
          "speech_type": "Response"
        }
      },
      {
        "start": 11.5,
        "end": 12.8,
        "label": "Overlap"
      }
    ],
    "recording_quality": "Good - Most speech understandable"
  }
}

نصائح للتقسيم

  1. استمع أولاً: تعرّف على المتحدثين قبل التوصيف
  2. لاحظ خصائص المتحدث: طبقة الصوت، اللهجة، أسلوب التحدث
  3. تعامل مع التداخلات بشكل متسق: قرر استراتيجية مسبقاً
  4. استخدم التحكم بالسرعة: أبطئ للأقسام الصعبة
  5. حدد عدم اليقين: لا بأس باستخدام "غير معروف" عند الحاجة

الخطوات التالية


انظر /docs/features/audio-annotation للتوثيق الكامل للصوت.