Skip to content
教程阅读约需 5 分钟

发音评估标注

构建一个带有音频播放和 Likert 量表的语言学习标注任务,用于评估发音质量。

Potato Team

发音评估对于语言学习应用、语言治疗和口音纠正至关重要。本教程涵盖构建发音质量评分界面、识别具体错误以及提供详细反馈。

基本发音评分

yaml
annotation_task_name: "Pronunciation Assessment"
task_dir: "."
 
data_files:
  - data/learner_recordings.json
 
item_properties:
  id_key: id
  text_key: target_text
 
instance_display:
  fields:
    - key: target_text
      type: text
      label: "Target sentence"
 
    - key: audio_path
      type: audio
      label: "Learner recording"
      display_options:
        controls: true
        show_waveform: true
 
annotation_schemes:
  - annotation_type: likert
    name: overall_quality
    description: "Overall pronunciation quality"
    size: 5
    min_label: "Very poor"
    max_label: "Excellent"
    label_requirement:
      required: true
 
output_annotation_dir: annotation_output/
export_annotation_format: jsonl
 
user_config:
  allow_all_users: true

详细评估配置

yaml
annotation_task_name: "Detailed Pronunciation Assessment"
task_dir: "."
 
data_files:
  - data/recordings.json
 
item_properties:
  id_key: id
  text_key: sentence
 
instance_display:
  fields:
    - key: sentence
      type: text
      label: "Target text"
 
    - key: native_language
      type: text
      label: "First language"
 
    - key: learner_audio
      type: audio
      label: "Learner recording"
      display_options:
        controls: true
        show_waveform: true
 
    - key: native_audio
      type: audio
      label: "Native reference"
      display_options:
        controls: true
 
annotation_schemes:
  - annotation_type: likert
    name: overall
    description: "Overall pronunciation quality"
    size: 5
    min_label: "Very poor"
    max_label: "Excellent"
    label_requirement:
      required: true
 
  - annotation_type: likert
    name: intelligibility
    description: "How understandable is the speaker?"
    size: 5
    min_label: "Unintelligible"
    max_label: "Perfectly clear"
    label_requirement:
      required: true
 
  - annotation_type: likert
    name: accent_strength
    description: "How strong is the foreign accent?"
    size: 5
    min_label: "No accent"
    max_label: "Very strong"
 
  - annotation_type: likert
    name: intonation
    description: "Intonation and rhythm"
    size: 5
    min_label: "Unnatural"
    max_label: "Native-like"
 
  - annotation_type: likert
    name: fluency
    description: "Fluency, meaning smoothness and pausing"
    size: 5
    min_label: "Very disfluent"
    max_label: "Very fluent"
 
  - annotation_type: multiselect
    name: error_types
    description: "What errors are present? Select all that apply."
    labels:
      - Vowel errors
      - Consonant errors
      - Word stress errors
      - Sentence intonation errors
      - Rhythm or timing errors
      - Added sounds
      - Deleted sounds
      - Substituted sounds
      - No significant errors
 
  - annotation_type: text
    name: problem_words
    description: "List any mispronounced words"
    placeholder: "e.g. 'thought' pronounced as 'taught'"
    label_requirement:
      required: false
 
  - annotation_type: radio
    name: native_comparison
    description: "Compared to the native reference"
    labels:
      - Very different
      - Somewhat different
      - Fairly similar
      - Very similar
      - Indistinguishable
 
  - annotation_type: likert
    name: confidence
    description: "Your confidence in this assessment"
    size: 5
    min_label: "Low"
    max_label: "High"
 
output_annotation_dir: annotation_output/
export_annotation_format: jsonl

词级评估

用于详细的音素/词汇反馈:

yaml
annotation_schemes:
  - annotation_type: multirate
    name: word_ratings
    description: "Rate the pronunciation of each word"
    options:
      - "the"
      - "weather"
      - "is"
      - "really"
      - "nice"
      - "today"
    labels:
      - Poor
      - Fair
      - Good
    arrangement: vertical

音素级标注

用于语音研究:

yaml
data_files:
  - data/phoneme_data.json
 
item_properties:
  id_key: id
  text_key: expected_phonemes
 
annotation_schemes:
  - annotation_type: speech_transcript
    name: phonemes
    description: "Mark substitutions, deletions, and insertions against the expected phonemes"
    segments_key: expected_phonemes
    error_types:
      - substitution
      - deletion
      - insertion
    allow_correction: true

完整配置

yaml
annotation_task_name: "L2 English Pronunciation Assessment"
task_dir: "."
 
data_files:
  - data/esl_recordings.json
 
item_properties:
  id_key: id
  text_key: target_sentence
 
instance_display:
  fields:
    - key: target_sentence
      type: text
      label: "The learner was asked to say"
 
    - key: native_language
      type: text
      label: "First language"
 
    - key: proficiency_level
      type: text
      label: "Level"
 
    - key: audio_url
      type: audio
      label: "Recording"
      display_options:
        controls: true
        show_waveform: true
 
annotation_instructions: |
  ## Pronunciation Assessment Guidelines
 
  ### Rating scales
 
  **Overall score (1-9)**
  - 1-3: significant difficulty, hard to understand
  - 4-6: noticeable accent, still understandable
  - 7-9: minor issues through to native-like
 
  **Comprehensibility** is how much effort understanding takes. Ignore the
  accent where the message is clear.
 
  **Accentedness** is the degree of foreign accent, judged independently of
  whether you understood it.
 
  ### What to listen for
  Individual sounds, word stress, sentence intonation, and speaking rate.
 
  ### Tips
  Listen at least twice. Use slow playback for the details. Be consistent
  across recordings rather than across raters.
 
annotation_schemes:
  - annotation_type: likert
    name: overall_score
    description: "Overall pronunciation score"
    size: 9
    min_label: "Very poor"
    max_label: "Native-like"
    label_requirement:
      required: true
 
  - annotation_type: likert
    name: comprehensibility
    description: "How easy is it to understand?"
    size: 9
    min_label: "Very hard"
    max_label: "Very easy"
    label_requirement:
      required: true
 
  - annotation_type: likert
    name: accentedness
    description: "How strong is the foreign accent?"
    size: 9
    min_label: "No accent"
    max_label: "Very strong"
 
  - annotation_type: likert
    name: vowels
    description: "Vowel pronunciation accuracy"
    size: 5
    min_label: "Poor"
    max_label: "Excellent"
 
  - annotation_type: likert
    name: consonants
    description: "Consonant pronunciation accuracy"
    size: 5
    min_label: "Poor"
    max_label: "Excellent"
 
  - annotation_type: likert
    name: word_stress
    description: "Word stress patterns"
    size: 5
    min_label: "Incorrect"
    max_label: "Correct"
 
  - annotation_type: likert
    name: sentence_intonation
    description: "Sentence intonation"
    size: 5
    min_label: "Unnatural"
    max_label: "Natural"
 
  - annotation_type: likert
    name: fluency
    description: "Speaking fluency"
    size: 5
    min_label: "Disfluent"
    max_label: "Fluent"
 
  - annotation_type: multiselect
    name: common_errors
    description: "Check all that apply"
    labels:
      - Th-sounds (think, this)
      - R-sounds
      - L-sounds
      - Vowel length
      - Final consonants dropped
      - Consonant clusters simplified
      - Word stress on wrong syllable
      - Flat intonation
      - No errors detected
    label_requirement:
      required: false
 
  - annotation_type: text
    name: feedback
    description: "Specific words or sounds that need work"
    rows: 4
    placeholder: "e.g. 'world' - /r/ needs work; 'through' - th sound"
    label_requirement:
      required: false
 
  - annotation_type: radio
    name: confidence
    description: "How confident are you in your ratings?"
    labels:
      - Not confident
      - Somewhat confident
      - Very confident
 
training:
  enabled: true
  data_file: data/calibration_recordings.json
  annotation_schemes: ["overall_score", "comprehensibility"]
  passing_criteria:
    min_correct: 4
  allow_retry: true
 
phases:
  order: [training, annotation]
  training:
    type: training
    file: data/calibration_recordings.json
 
output_annotation_dir: annotation_output/
export_annotation_format: jsonl
 
user_config:
  allow_all_users: true

输出格式

json
{
  "overall_score": "6",
  "comprehensibility": "7",
  "accentedness": "5",
  "vowels": "4",
  "consonants": "3",
  "word_stress": "4",
  "sentence_intonation": "3",
  "fluency": "4",
  "common_errors": ["Th-sounds (think, this)", "R-sounds"],
  "feedback": "'weather' - th sound; 'really' - r sound",
  "confidence": "Very confident"
}

发音评估技巧

  1. 校准:先一起评分样本录音
  2. 一致性:使用参考录音作为锚定
  3. 多次聆听:第一遍听整体,第二遍听细节
  4. 音频质量:好的耳机是必需品
  5. 评分者培训:有语音学背景会有帮助

下一步


完整音频文档请见 音频标注。