Skip to content
دروس تعليميةمدة القراءة 7 دقيقة

تصنيف المشاعر في الكلام

أنشئ مهمة لتصنيف المشاعر في الصوت في Potato مع عرض تفاعلي للموجة الصوتية، وأدوات التحكم في سرعة التشغيل، ومقاييس ليكرت، ومجموعات قابلة للتهيئة من تسميات المشاعر.

Potato Team

يظهر التعرف على المشاعر في الكلام (SER) في المساعدين الافتراضيين وأدوات الصحة النفسية وتحليلات مراكز الاتصال، وكل ذلك يحتاج إلى صوت مُوسَّم للتدريب عليه. يستعرض هذا الدليل التعليمي واجهات توسيم للمشاعر الفئوية، والتقييمات البُعدية، والمقاطع التي تحضر فيها أكثر من عاطفة واحدة. للاطلاع على خيارات الصوت الأساسية، راجع وثائق توسيم الصوت.

مناهج توسيم المشاعر

هناك بضع طرق شائعة لتوسيم المشاعر في الكلام. يمكنك استخدام فئات منفصلة مثل سعيد أو حزين أو غاضب. ويمكنك تقييم أبعاد مستمرة مثل التكافؤ والاستثارة والسيطرة. ويمكنك أن تتيح للمُوسِّمين تحديد عدة مشاعر في آن واحد مع تقييمات للشدة. أو، في المقاطع الأطول، يمكنك وسم مشاعر مختلفة عند طوابع زمنية مختلفة.

تصنيف المشاعر الفئوي

الإعداد الأساسي

yaml
annotation_task_name: "Speech Emotion Recognition"
 
data_files:
  - data/utterances.json
 
item_properties:
  id_key: id
  text_key: transcript  # Optional transcript
 
instance_display:
  fields:
    - key: audio_path
      type: audio
      label: "Utterance"
      display_options:
        controls: true
        show_waveform: true
        preload: metadata
 
annotation_schemes:
  - annotation_type: radio
    name: emotion
    description: "What emotion is expressed in this speech?"
    labels:
      - name: Happy
        description: "Joy, excitement, amusement"
        key_value: "h"
      - name: Sad
        description: "Sorrow, disappointment, grief"
        key_value: "s"
      - name: Angry
        description: "Frustration, irritation, rage"
        key_value: "a"
      - name: Fearful
        description: "Anxiety, worry, terror"
        key_value: "f"
      - name: Surprised
        description: "Astonishment, shock"
        key_value: "u"
      - name: Disgusted
        description: "Revulsion, distaste"
        key_value: "d"
      - name: Neutral
        description: "No clear emotion"
        key_value: "n"
    label_requirement:
      required: true

يعرض Potato موجة صوتية تفاعلية مع أدوات التحكم في التشغيل بجانب تسميات التوسيم:

واجهة تصنيف المشاعر في الصوت مع عرض الموجة الصوتية وتسميات المشاعرواجهة توسيم الصوت تعرض موجة صوتية تفاعلية مع أدوات التحكم في التشغيل وتسميات فئوية للمشاعر

إضافة الشدة

yaml
annotation_schemes:
  - annotation_type: radio
    name: emotion
    description: "What emotion does the speaker express?"
    labels: [Happy, Sad, Angry, Fearful, Surprised, Disgusted, Neutral]
    label_requirement:
      required: true
 
  - annotation_type: likert
    name: intensity
    description: "How intense is this emotion?"
    size: 5
    min_label: "Very weak"
    max_label: "Very strong"

توسيم المشاعر البُعدي

يقيّم نموذج VAD (التكافؤ-الاستثارة-السيطرة) كل مقطع على ثلاثة مقاييس مستمرة بدلًا من حصره في فئة واحدة:

yaml
annotation_task_name: "Dimensional Emotion Rating"
 
annotation_schemes:
  # Valence: negative to positive
  - annotation_type: likert
    name: valence
    description: "Valence: How positive or negative?"
    size: 7
    min_label: "Very negative"
    max_label: "Very positive"
 
  # Arousal: calm to excited
  - annotation_type: likert
    name: arousal
    description: "Arousal: How calm or excited?"
    size: 7
    min_label: "Very calm"
    max_label: "Very excited"
 
  # Dominance: submissive to dominant
  - annotation_type: likert
    name: dominance
    description: "Dominance: How submissive or dominant?"
    size: 7
    min_label: "Very submissive"
    max_label: "Very dominant"

المقاييس المرئية (SAM)

على أسلوب Self-Assessment Manikin:

yaml
annotation_schemes:
  - annotation_type: likert
    min_label: "Very negative"
    max_label: "Very positive"
    name: valence
    description: "Select the figure that matches the emotional valence"
    size: 9

اكتشاف المشاعر المختلطة

للكلام الذي يحتوي على مشاعر متعددة:

yaml
annotation_schemes:
  - annotation_type: multiselect
    name: emotions_present
    description: "Select ALL emotions you detect (can be multiple)"
    labels:
      - Happy
      - Sad
      - Angry
      - Fearful
      - Surprised
      - Disgusted
      - Contempt
 
  - annotation_type: radio
    name: primary_emotion
    description: "Which emotion is MOST prominent?"
    labels:
      - Happy
      - Sad
      - Angry
      - Fearful
      - Surprised
      - Disgusted
      - Contempt
      - Mixed (no dominant)

توسيم المشاعر الكامل

yaml
annotation_task_name: "Comprehensive Speech Emotion Annotation"
 
data_files:
  - data/speech_samples.json
 
item_properties:
  id_key: id
  text_key: transcript
 
instance_display:
  fields:
    - key: audio_url
      type: audio
      label: "Speech sample"
      display_options:
        controls: true
        show_waveform: true
        preload: metadata
        autoplay: false
 
    # Show the transcript alongside the audio
    - key: transcript
      type: text
      label: "Transcript (for reference)"
 
annotation_schemes:
  # Primary categorical emotion
  - annotation_type: radio
    name: primary_emotion
    description: "Primary emotion expressed"
    labels:
      - name: Happiness
        color: "#FCD34D"
        key_value: "1"
      - name: Sadness
        color: "#60A5FA"
        key_value: "2"
      - name: Anger
        color: "#F87171"
        key_value: "3"
      - name: Fear
        color: "#A78BFA"
        key_value: "4"
      - name: Surprise
        color: "#34D399"
        key_value: "5"
      - name: Disgust
        color: "#FB923C"
        key_value: "6"
      - name: Neutral
        color: "#9CA3AF"
        key_value: "7"
    label_requirement:
      required: true
 
  # Emotional intensity
  - annotation_type: likert
    name: intensity
    description: "Emotional intensity"
    size: 5
    min_label: "Very mild"
    max_label: "Very intense"
    label_requirement:
      required: true
 
  # Dimensional ratings
  - annotation_type: likert
    name: valence
    description: "Valence (negative to positive)"
    size: 7
    min_label: "Negative"
    max_label: "Positive"
 
  - annotation_type: likert
    name: arousal
    description: "Arousal (calm to excited)"
    size: 7
    min_label: "Calm"
    max_label: "Excited"
 
  # Voice quality
  - annotation_type: multiselect
    name: voice_qualities
    description: "Voice characteristics (select all that apply)"
    labels:
      - Trembling voice
      - Raised pitch
      - Lowered pitch
      - Loud/shouting
      - Soft/whisper
      - Fast speech rate
      - Slow speech rate
      - Breathy
      - Tense/strained
      - Crying
      - Laughing
 
  # Genuineness
  - annotation_type: radio
    name: authenticity
    description: "Does the emotion seem genuine?"
    labels:
      - Clearly genuine
      - Likely genuine
      - Uncertain
      - Likely acted/fake
      - Clearly acted/fake
 
  # Confidence
  - annotation_type: likert
    name: confidence
    description: "How confident are you in your annotation?"
    size: 5
    min_label: "Guessing"
    max_label: "Certain"
 
annotation_instructions: |
  ## Emotion Annotation Guidelines
 
  ### Listening Instructions
  1. Listen to the entire clip before annotating
  2. You may replay as many times as needed
  3. Focus on the VOICE, not just the words
 
  ### Emotion Categories
  - **Happiness**: Joy, amusement, contentment
  - **Sadness**: Sorrow, disappointment, melancholy
  - **Anger**: Frustration, irritation, rage
  - **Fear**: Anxiety, nervousness, terror
  - **Surprise**: Astonishment, startle
  - **Disgust**: Revulsion, contempt
  - **Neutral**: Calm, matter-of-fact
 
  ### Tips
  - Consider tone, pitch, speaking rate
  - The transcript may not match the emotion
  - When unsure between two emotions, choose the stronger one
  - Use the intensity scale for unclear cases
 
output_annotation_dir: annotations/
export_annotation_format: jsonl

صيغة الإخراج

json
{
  "instance_id": "utt_001",
  "user_id": "rater_01",
  "labels": {
    "primary_emotion": {"Surprise": "true"},
    "voice_qualities": {"Raised pitch": "true", "Fast speech rate": "true"},
    "authenticity": {"Clearly genuine": "true"},
    "confidence": {"4": "true"}
  },
  "spans": {},
  "links": {}
}

المشاعر على مستوى المقطع

للتسجيلات الصوتية الأطول التي تتغير فيها المشاعر:

yaml
annotation_schemes:
  - annotation_type: audio_annotation
    name: emotion_segments
    description: "Mark time segments with different emotions"
    labels:
      - name: Happy
        color: "#FCD34D"
      - name: Sad
        color: "#60A5FA"
      - name: Angry
        color: "#F87171"
      - name: Neutral
        color: "#9CA3AF"

ضبط الجودة

المقاطع الواضحة ذات التسميات المعروفة تكشف المُوسِّمين الذين ينقرون دون انتباه. تقع كلتا الكتلتين في المستوى الأعلى من ملف الإعداد، وكلتاهما تأخذ عناصرها من ملف بدلًا من تعريفها داخل الإعداد:

yaml
attention_checks:
  enabled: true
  frequency: 20
  items_file: data/attention_checks.json
  min_response_time: 3.0
 
gold_standards:
  enabled: true
  items_file: data/gold_standards.json
  mode: mixed
  frequency: 20
  accuracy:
    min_threshold: 0.7
    evaluation_count: 10

يبدو العنصر الذهبي مثل أي عنصر من عناصر بياناتك مع إضافة gold_label، ولذلك يُعرض بالطريقة نفسها التي يُعرض بها كل شيء آخر:

json
[
  {
    "id": "gold_001",
    "audio_path": "/audio/gold/clearly_happy.wav",
    "gold_label": { "primary_emotion": "Happiness" },
    "explanation": "Laughter and rising pitch throughout, with no ambiguity.",
    "difficulty": "easy"
  }
]

تستخدم عناصر فحص الانتباه expected_answer بدلًا من gold_label. ويُعد min_response_time أداة التحكم المفيدة في حالة الصوت، إذ يكشف حدٌّ أدنى قدره ثلاث ثوانٍ كل من يوسم مقطعًا لا يمكن أن يكون قد أنهى الاستماع إليه.

إن وضع هاتين الكتلتين داخل كتلة quality_control: خطأ شائع، وهو يفشل بصمت. يقرأ Potato attention_checks وgold_standards من المستوى الأعلى، والمفتاح الوحيد الذي يقرؤه من quality_control هو geometry_iou_tolerance، لذا تجتاز الكتلة المتداخلة التحقق دون أخطاء ولا تعمل أبدًا.

نصائح لتوسيم المشاعر

استمع إلى المقطع كاملًا قبل أن تقرر، وانتبه إلى طريقة قول الشيء لا إلى الكلمات نفسها. وضع في اعتبارك أن معايير التعبير تختلف بين الثقافات، فما يُفهم على أنه غضب في ثقافة قد يُفهم على أنه تأكيد في أخرى. توسيم المشاعر عمل مُرهق، لذا شجّع على أخذ فترات راحة، واجعل الفريق يناقش حالات الخلاف بانتظام ليحافظ على معايرة متسقة.

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


الوثائق في توسيم الصوت.