Ses Kırpıcı

Tarayıcınızda bir ses dosyasından bölüm kesin — dalga formu üzerinde başlangıç/bitiş aralığını sürükleyin, seçimi önizleyin, WAV olarak indirin. Hiçbir şey yüklenmez.

216 görüntülenme

Tarayıcı-İçi Ses Kırpma Nasıl Çalışır?

Bu araç dosyanızı asla hiçbir yere göndermez — sıkıştırılmış sesi (MP3, AAC, OGG, tarayıcının kodeklerinin desteklediği her şey) ham bir AudioBuffer'a açmak için Web Audio API'nin decodeAudioData() fonksiyonunu kullanır: kanal başına -1 ile 1 arasında kayan noktalı örnek değerlerinden oluşan bir dizi. Bu çözümleme adımı, bir medya oynatıcının bir sesi gerçekten çalabilmeden önce içeride yaptığı adımın aynısıdır — buradaki fark, çözümlenen örneklerin doğrudan hoparlörlere gitmek yerine JavaScript içinde erişilebilir kalması, düzenlemeyi mümkün kılan da budur. Bilinmesi gereken bir ayrıntı: decodeAudioData(), kaynağın kendi örnekleme hızında değil, cihazınızın ses donanımına bağlı olarak genelde 44.1kHz veya 48kHz olan AudioContext'in kendi örnekleme hızında çözümler — farklıysa otomatik olarak yeniden örnekler. Bu, bu aracın farklı yaptığı bir şey değil, her tarayıcının ses işlem hattına yerleşik standart, şeffaf bir davranıştır; dosya 8kHz'lik bir ses kaydı ya da 96kHz'lik bir stüdyo kaydı olsun aynı şekilde uygulanır.

Ses çözümlendikten sonra kırpma, dizi dilimlemekten başka bir şey değildir: seçilen başlangıç ve bitiş sürelerini saniye cinsinden örnekleme hızıyla çarparak örnek indekslerine dönüştürün, sonra yalnızca bu iki indeks arasındaki örnekleri yeni, daha kısa bir tampona kopyalayın. Ses içeriğinin yeniden kodlanması, kalite kaybı veya yeniden sıkıştırma artefaktı yoktur — seçili aralıktaki dalga formu, çözümlenmiş haliyle bayt bayt kopyalanır.

Dalga formu önizlemesi, çözümlenmiş örnek dizisi bir kez gezilerek, yatay piksel sayısı kadar kovaya bölünerek ve her kovada bulunan en küçük ve en büyük örnek değerinin dikey bir çubuk olarak çizilmesiyle oluşturulur — her ses düzenleyicinin kullandığı aynı tepe-zarfı tekniğidir, çünkü her tek örneği (genelde saniyede 44.100 tane) çizmek hem israf olur hem de tipik ekran çözünürlüklerinde min/maks zarfından görsel olarak ayırt edilemez.

Çıktı Neden MP3 Değil de WAV?

Kırpılan sonuç WAV olarak dışa aktarılır — örnekleme hızı, bit derinliği ve kanal sayısını tanımlayan standart 44 baytlık bir RIFF başlığıyla ham örnek verisini olduğu gibi geri yazan, sıkıştırılmamış bir PCM konteyneri. Bu, bilinçli ve dürüst bir ödünleşimdir: MP3 gibi sıkıştırılmış bir formata kodlamak tam bir psikoakustik kodlayıcı gerektirir (dosyayı ilk baştan oluşturmak için kullanılanla aynı türde karmaşık algoritma), tarayıcılar bunu doğal olarak sunmaz ve büyük ek bir kütüphane yüklemeyi gerektirirdi. Karşılığında WAV, sıfır nesil kaybı garanti eder — art arda on kez kırpmak sesi asla bozmaz, kayıplı bir MP3'ü tekrar tekrar kaydetmenin aksine. Sonrasında daha küçük bir dosya gerekirse, elde edilen WAV herhangi bir standart ses aracıyla yeniden sıkıştırılabilir.

  • Dışa aktarılan WAV, kaynağın orijinal hızı veya bit derinliği ne olursa olsun AudioContext'in örnekleme hızını (genelde 44.1kHz veya 48kHz) ve 16-bit derinliği kullanır — bu, kırpmanın kendi sınırlaması değil, decodeAudioData()'nın çalışma biçiminden gelir.
  • Çok uzun dosyalar (kabaca 30-60 dakikanın üzeri) önemli miktarda tarayıcı belleği kullanabilir, çünkü çözümlenmiş tampon kırpma öncesinde kayan noktalı örnekler olarak RAM'de tamamen tutulur.
  • Dalga formu yalnızca ilk ses kanalından çizilir; stereo içerik tüm kanallarda eşit şekilde kırpılır, yalnızca önizleme tek çizgiye basitleştirilir.

Sıkça Sorulan Sorular

Kırpılan dosya neden MP3 değil de WAV olarak iniyor?

MP3 kodlaması, tarayıcıların doğal olarak sunmadığı tam bir psikoakustik sıkıştırma algoritması gerektirir. WAV, zaten çözümlenmiş örnekleri kayıpsız biçimde geri yazar — sıfır kalite kaybı ve ek kütüphane gerekmez; sonrasında daha küçük dosya gerekirse WAV'ı ayrıca sıkıştırın.

Kırpma ses kalitesinden bir şey kaybettirir mi?

Kesimin kendisi kaybettirmez - çözümlenmiş örneklerin bitişik bir aralığını yeni bir tampona kopyalamaktan ibarettir, yeniden kodlama veya sıkıştırma yoktur. Tek istisna: decodeAudioData() tarayıcının ses donanımı örnekleme hızına (genelde 44.1kHz veya 48kHz) çözümler, kaynak farklı bir hız kullanıyorsa otomatik olarak yeniden örnekler - bu, kırpmaya özgü değil standart tarayıcı davranışıdır ve normal dinleme için pratikte fark edilmez.

Ses dosyam bir sunucuya yükleniyor mu?

Hayır. Çözümleme, dalga formu çizimi, oynatma önizlemesi ve son kırpma işlemi Web Audio API ile tamamen tarayıcınızda yerel olarak gerçekleşir — dosya cihazınızdan asla ayrılmaz.

Hangi ses formatlarını yükleyebilirim?

Tarayıcınızın yerleşik çözümleyicisinin desteklediği her format — MP3, WAV, OGG ve AAC/M4A neredeyse tüm modern tarayıcılarda çalışır; çünkü bu aracı çalıştıran fonksiyon, tarayıcının ses çalmak için kullandığı aynı decodeAudioData() fonksiyonudur.

İndirmeden önce seçimi önizleyebilir miyim?

Evet — Seçimi Oynat düğmesi, başlangıç ve bitiş işaretleri arasındaki aralığı, son kırpmanın kullanacağı aynı tampon ofsetiyle çalar, böylece duyduğunuz şey inen dosyayla birebir eşleşir.

Yorumlar

Henüz yorum yok — ilk yorumu siz yazın!

Benzer Araçlar