أداة قص الصوت

اقطع جزءًا من ملف صوتي في متصفحك — اسحب نطاق البداية/النهاية فوق شكل الموجة، عاين التحديد، ونزّل بصيغة WAV. لا يُرفع شيء إلى أي خادم.

220 مشاهدة

كيف يعمل قص الصوت داخل المتصفح؟

لا ترسل هذه الأداة ملفك إلى أي مكان أبدًا — فهي تستخدم دالة decodeAudioData() من Web Audio API لفك ضغط الصوت (MP3، AAC، OGG، وأي صيغة يدعمها مرمّز متصفحك) إلى AudioBuffer خام: مصفوفة من قيم العينات العشرية بين -1 و1، واحدة لكل قناة. خطوة فك الترميز هذه هي نفسها التي يقوم بها مشغّل الوسائط داخليًا قبل أن يتمكن فعليًا من تشغيل صوت — والفرق هنا أن العينات المفكوكة تبقى متاحة داخل جافاسكريبت بدلًا من الذهاب مباشرة إلى مكبرات الصوت، وهذا ما يجعل التحرير ممكنًا. تفصيل يستحق المعرفة: تُفكّ decodeAudioData() الترميز إلى معدل أخذ العينات الخاص بـ AudioContext نفسه — عادة 44.1 كيلوهرتز أو 48 كيلوهرتز حسب عتاد الصوت في جهازك — وليس إلى المعدل الأصلي لملف المصدر، مع إعادة أخذ العينات تلقائيًا إذا اختلفا. هذا سلوك قياسي وشفاف مدمج في مسار معالجة الصوت في كل متصفح، وليس شيئًا تفعله هذه الأداة بشكل مختلف، وينطبق سواء كان الملف صوت محادثة بـ 8 كيلوهرتز أو صوت استوديو بـ 96 كيلوهرتز.

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

تُرسم معاينة شكل الموجة بالمرور مرة واحدة عبر مصفوفة العينات المفكوكة، وتقسيمها إلى عدد من الحاويات يساوي عدد البكسلات الأفقية، ثم رسم أدنى وأقصى قيمة عينة موجودة في كل حاوية كشريط عمودي — وهي نفس تقنية غلاف الذروة التي يستخدمها كل محرر صوت، لأن رسم كل عينة فردية (غالبًا 44100 في الثانية) سيكون مضيعة للموارد ولن يمكن تمييزه بصريًا عن غلاف الحد الأدنى/الأقصى عند دقة الشاشة المعتادة.

لماذا الناتج WAV وليس MP3؟

يُصدَّر الناتج المقصوص كملف WAV — وهو حاوية PCM غير مضغوطة تكتب بيانات العينات الخام كما هي مع ترويسة RIFF قياسية من 44 بايت تصف معدل أخذ العينات وعمق البت وعدد القنوات. هذه مفاضلة متعمدة وصادقة: الترميز إلى صيغة مضغوطة مثل MP3 يتطلب مرمّزًا نفسيًا صوتيًا كاملًا (نفس نوع الخوارزمية المعقدة المستخدمة لإنشاء الملف أصلًا)، وهو ما لا تعرضه المتصفحات بشكل أصلي وما يتطلب تحميل مكتبة إضافية كبيرة. في المقابل، يضمن WAV صفر فقدان بين الأجيال — القص عشر مرات متتالية لا يُفسد الصوت أبدًا، بعكس إعادة حفظ ملف MP3 المفقود الجودة مرارًا. إذا لزم ملف أصغر لاحقًا، يمكن إعادة ضغط ملف WAV الناتج بأي أداة صوت قياسية.

  • يستخدم ملف WAV المصدَّر معدل أخذ عينات AudioContext (عادة 44.1 كيلوهرتز أو 48 كيلوهرتز) وعمق 16 بت، بغض النظر عن المعدل أو العمق الأصلي لملف المصدر — وهذا ناتج عن طريقة عمل decodeAudioData()، وليس قيدًا في عملية القص نفسها.
  • الملفات الطويلة جدًا (أكثر من نحو 30-60 دقيقة) يمكن أن تستهلك ذاكرة متصفح كبيرة، لأن المخزن المؤقت المفكوك بالكامل يُحفظ في الذاكرة العشوائية كعينات عشرية قبل القص.
  • يُرسم شكل الموجة من القناة الصوتية الأولى فقط؛ يُقص المحتوى الستيريو بالتساوي على جميع القنوات، والمعاينة فقط تُبسَّط إلى خط واحد.

الأسئلة الشائعة

لماذا يُنزَّل الملف المقصوص بصيغة WAV بدلًا من MP3؟

يتطلب ترميز MP3 خوارزمية ضغط نفسي صوتي كاملة لا تعرضها المتصفحات بشكل أصلي. يكتب WAV ببساطة العينات المفكوكة مسبقًا دون فقدان، بصفر فقدان في الجودة ودون الحاجة لمكتبة إضافية — إذا لزم ملف أصغر لاحقًا، اضغط ملف WAV بشكل منفصل.

هل يفقد القص أي جودة صوتية؟

القص نفسه لا يفقدها - فهو فقط ينسخ نطاقًا متجاورًا من العينات المفكوكة إلى مخزن مؤقت جديد، دون إعادة ترميز أو ضغط. التحفظ الوحيد هو أن decodeAudioData() تفكّ الترميز إلى معدل أخذ العينات لعتاد الصوت في المتصفح (عادة 44.1 كيلوهرتز أو 48 كيلوهرتز)، مع إعادة أخذ العينات تلقائيًا إذا استخدم ملف المصدر معدلًا مختلفًا - وهذا سلوك متصفح قياسي، وليس خاصًا بالقص، وهو غير ملحوظ عمليًا عند الاستماع العادي.

هل يُرفع ملفي الصوتي إلى خادم؟

لا. يحدث فك الترميز، ورسم شكل الموجة، ومعاينة التشغيل، والقص النهائي كلها محليًا في متصفحك عبر Web Audio API — لا يغادر الملف جهازك أبدًا.

ما صيغ الصوت التي يمكنني رفعها؟

أي صيغة يدعمها مفكك الترميز المدمج في متصفحك — تعمل MP3 وWAV وOGG وAAC/M4A في جميع المتصفحات الحديثة تقريبًا، لأن نفس دالة decodeAudioData() التي يستخدمها المتصفح لتشغيل الصوت هي التي تُشغّل هذه الأداة.

هل يمكنني معاينة التحديد قبل التنزيل؟

نعم — يشغّل زر "تشغيل التحديد" بالضبط النطاق بين علامتي البداية والنهاية، مستخدمًا نفس إزاحة المخزن المؤقت التي سيستخدمها القص النهائي، لذا ما تسمعه يطابق ما يتم تنزيله.

التعليقات

لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!

أدوات مشابهة