التعليق التوضيحي للصوت
التعليق على ملفات الصوت مع عرض الموجة الصوتية وأدوات التحكم في التشغيل.
يوفر Potato 2.0 إمكانيات قوية للتعليق التوضيحي على الصوت مع عرض الموجة الصوتية المدعوم بـ Peaks.js، وتسمية المقاطع، واختصارات لوحة المفاتيح الشاملة.
حالات الاستخدام
- نسخ الكلام ومراجعته
- تمييز المتحدثين (Speaker diarization)
- تحليل الموسيقى
- اكتشاف الأحداث الصوتية
- التعرف على المشاعر في الكلام
- ضمان جودة مراكز الاتصال
تفعيل دعم الصوت
أضف قسم audio_annotation إلى ملف الإعدادات الخاص بك:
annotation_schemes:
- annotation_type: audio_annotation
name: audio_segments
description: "Segment and label the audio"
labels:
- Speech
- Music
- Silence
- Noiseأوضاع التشغيل
يدعم Potato ثلاثة أوضاع للتعليق التوضيحي على الصوت:
وضع التسمية
تقسيم الصوت إلى مقاطع وتعيين تسميات فئوية لكل مقطع:
annotation_schemes:
- annotation_type: audio_annotation
name: speaker_diarization
mode: label
description: "Identify speakers in the audio"
labels:
- Speaker A
- Speaker B
- Overlapوضع الأسئلة
إضافة أسئلة تعليق توضيحي لكل مقطع:
annotation_schemes:
- annotation_type: audio_annotation
name: speech_quality
mode: questions
description: "Evaluate speech segments"
segment_schemes:
- annotation_type: radio
name: speaker_type
description: "Who is speaking?"
labels: ["host", "guest", "unknown"]
- annotation_type: likert
name: clarity
description: "How clear is this segment?"
size: 5
min_label: "Unintelligible"
max_label: "Perfectly clear"الوضع المشترك
الجمع بين التسمية وأسئلة كل مقطع:
annotation_schemes:
- annotation_type: audio_annotation
name: full_analysis
mode: both
description: "Label and analyze audio segments"
labels:
- Speech
- Music
- Noise
segment_schemes:
- annotation_type: radio
name: foreground
description: "Is this the foreground audio?"
labels: ["Yes", "No"]خيارات الإعدادات
الإعداد الأساسي
annotation_schemes:
- annotation_type: audio_annotation
name: segments
description: "Create audio segments"
labels:
- Label A
- Label B
# Optional constraints
min_segments: 1
max_segments: 50اختصارات لوحة المفاتيح
يمكن تعيين التسميات باستخدام مفاتيح الأرقام 1-9:
annotation_schemes:
- annotation_type: audio_annotation
name: speakers
description: "Mark each speaker turn"
labels:
- Speaker A # Press 1
- Speaker B # Press 2
- Overlap # Press 3ألوان التسميات
تخصيص ألوان المقاطع:
annotation_schemes:
- annotation_type: audio_annotation
name: segments
description: "Segment the recording and label each region"
labels:
- name: Speech
color: "#22C55E"
- name: Music
color: "#3B82F6"
- name: Silence
color: "#9CA3AF"أداء الموجة الصوتية
للحصول على أفضل أداء مع ملفات الصوت الطويلة، قم بتثبيت أداة BBC audiowaveform:
# macOS
brew install audiowaveform
# Ubuntu/Debian
sudo apt-get install audiowaveform
# Or build from source
# https://github.com/bbc/audiowaveformهذا يتيح توليد الموجة الصوتية من جانب الخادم. بدونه، يتم استخدام التوليد من جانب العميل (مناسب للملفات التي تقل مدتها عن 30 دقيقة).
تخزين الموجة الصوتية مؤقتاً
إعداد التخزين المؤقت لأداء أفضل:
audio_annotation:
waveform_cache_dir: waveform_cache/ # Where pre-computed waveforms are stored
waveform_look_ahead: 3 # Pre-compute the next N instances
waveform_cache_max_size: 50 # Maximum cached waveform files
client_fallback_max_duration: 1800 # Longest file the browser will render, in secondsتنسيق البيانات
مرجع صوتي بسيط
[
{"id": "1", "audio_path": "audio/recording_001.wav"},
{"id": "2", "audio_path": "audio/recording_002.wav"}
]data_files:
- "data/audio_data.json"
item_properties:
id_key: id
text_key: audio_path # The field holding the audio URLمع النصوص المكتوبة
[
{
"id": "1",
"audio_path": "audio/call_001.wav",
"transcript": "Hello, how can I help you today?"
}
]تنسيق المخرجات
يتم حفظ التعليقات التوضيحية مع الطوابع الزمنية للمقاطع:
{
"id": "audio_1",
"annotations": {
"segments": [
{
"start": 0.0,
"end": 2.5,
"label": "Speaker A",
"questions": {
"clarity": 4,
"emotion": "Neutral"
}
},
{
"start": 2.5,
"end": 5.2,
"label": "Speaker B"
}
]
}
}اختصارات لوحة المفاتيح
يوفر Potato اختصارات لوحة مفاتيح شاملة للتعليق التوضيحي الفعّال:
| الاختصار | الإجراء |
|---|---|
Space | تشغيل/إيقاف مؤقت |
[ | تعيين بداية المقطع عند الموضع الحالي |
] | تعيين نهاية المقطع عند الموضع الحالي |
1-9 | تعيين تسمية للمقطع الحالي |
Delete | حذف المقطع الحالي |
Left Arrow | الرجوع 5 ثوانٍ |
Right Arrow | التقدم 5 ثوانٍ |
Up Arrow | تكبير |
Down Arrow | تصغير |
Home | الانتقال إلى البداية |
End | الانتقال إلى النهاية |
+ | زيادة سرعة التشغيل |
- | تقليل سرعة التشغيل |
أمثلة على الإعدادات
تمييز المتحدثين
annotation_task_name: "Speaker Diarization"
task_dir: "."
port: 8000
data_files:
- "data/recordings.json"
item_properties:
id_key: id
text_key: audio_path
annotation_schemes:
- annotation_type: audio_annotation
name: speakers
mode: label
description: "Identify who is speaking"
labels:
- Speaker 1
- Speaker 2
- Speaker 3
- Overlap
- Silence
min_segments: 1
# Diarization recordings run long, so precompute a few ahead of the annotator.
audio_annotation:
waveform_cache_dir: waveform_cache/
waveform_look_ahead: 5
output_annotation_dir: "output/"
export_annotation_format: jsonl
user_config:
allow_all_users: trueمراجعة النسخ الكتابي
annotation_task_name: "Transcription Quality Review"
task_dir: "."
port: 8000
data_files:
- "data/transcripts.json"
item_properties:
id_key: id
text_key: audio_path
annotation_schemes:
- annotation_type: audio_annotation
name: errors
mode: questions
description: "Mark transcription errors"
# Questions mode collects answers per marked region, so the error type and
# the correction stay attached to the stretch of audio they describe.
segment_schemes:
- annotation_type: radio
name: error_type
description: "What kind of error is this?"
labels: ["Substitution", "Deletion", "Insertion", "Speaker mix-up"]
- annotation_type: text
name: correction
description: "What should the transcript say?"
- annotation_type: radio
name: overall_accuracy
description: "Overall transcript accuracy"
labels:
- Accurate
- Minor errors
- Major errors
- Unusable
output_annotation_dir: "output/"
export_annotation_format: jsonlضمان جودة مراكز الاتصال
annotation_task_name: "Call Center Quality Assurance"
task_dir: "."
port: 8000
data_files:
- "data/calls.json"
item_properties:
id_key: call_id
text_key: recording_path
annotation_schemes:
# Segment-level annotation
- annotation_type: audio_annotation
name: conversation
mode: both
description: "Segment the conversation"
labels:
- Agent
- Customer
- Hold
- Silence
# Who is speaking is a label; how the turn went is a question about it.
segment_schemes:
- annotation_type: radio
name: tone
description: "Tone of this turn"
labels: ["Calm", "Neutral", "Escalated"]
# Call-level assessment
- annotation_type: likert
name: professionalism
description: "Agent professionalism"
size: 5
min_label: "Poor"
max_label: "Excellent"
- annotation_type: likert
name: resolution
description: "Issue resolution"
size: 5
min_label: "Unresolved"
max_label: "Fully resolved"
- annotation_type: multiselect
name: issues
description: "Select any issues observed"
labels:
- Long hold time
- Agent interrupted
- Incorrect information
- Missing greeting
- Unprofessional language
- annotation_type: text
name: notes
description: "Additional observations"
rows: 4
output_annotation_dir: "output/"
export_annotation_format: jsonlصيغ الصوت المدعومة
- WAV (يُنصح به لأفضل جودة)
- MP3
- OGG
- FLAC
- M4A
- WebM
نصائح الأداء
- تثبيت audiowaveform - ضروري لملفات الصوت الطويلة
- تفعيل التخزين المؤقت - استخدم
cache_dirلتخزين الموجات الصوتية المولّدة مسبقاً - استخدام WAV للجودة - الصيغ المضغوطة قد تُحدث تشوهات
- معالجة الصوت مسبقاً - تطبيع المستويات وقص الصمت غير الضروري
- مراعاة أحجام الملفات - الملفات الكبيرة تبطئ التحميل
- استخدام الحساب المسبق - توليد الموجات الصوتية مسبقاً للعناصر الأولى
استكشاف الأخطاء وإصلاحها
الموجة الصوتية لا تُحمَّل
- تحقق من صحة مسار ملف الصوت
- تأكد من أن صيغة الملف مدعومة
- قم بتثبيت audiowaveform للملفات الطويلة
- تحقق من وحدة تحكم المتصفح بحثاً عن الأخطاء
أداء بطيء
- قم بتثبيت أداة audiowaveform
- فعّل التخزين المؤقت للموجة الصوتية
- قلّل أحجام ملفات الصوت
- استخدم إعداد
precompute_depth
المقاطع لا تُحفظ
- تأكد من أن مجلد المخرجات قابل للكتابة
- تحقق من إعدادات تنسيق التعليق التوضيحي
- تأكد من أن المقطع يحتوي على وقت بداية ونهاية