Bu sayfayı resample audio buffer from 44100 to 16000 numaralı telefonu, sabit bir arabellekden yeniden örneklendirmek için offlineAudioContext kullanarak gördüm. Sesi bir akıştan yeniden örneklemenin bir yolu var mı? Benim yapmak istediğim mikrofondan ses yakalamak, düşük bit hızına yeniden örneklemek ve gerçek zamanlı olarak sunucumuza yüklemek.Yakalanan ses akışını offlineAudioContext ile yeniden örnekleme
cevap
Yapmanız gereken, bir ScriptProcessorNode oluşturmak ve sonra geri çağrılarınızla arandığında arabellekleri yeniden örneklemektir.
var scriptNode = context.createScriptProcessor(4096, 1, 1);
scriptNode.onaudioprocess = function onAudioProcess(e) {
// e.inputBuffer contains what you want
};
Cevabınız için teşekkür ederiz. Bunu yapmadan önce TÜM örnek verilere sahip olmalı mıyım? Bunu gerçek zamanlı olarak yapmaya çalışıyorum, 30 dakikalık ses kaydını kaydetme ve yeniden örnekleme. Ayrıca, webrtc özellikleri, geri aramaların ne sıklıkta gerçekleştiğini göstermez. – user2600798
@ user2600798 Hayır, ScriptProcessorNode için bağlandığım belgeleri okuyun. Oluştururken ilk parametre, örneklerde arabellek boyutunu gösterir. 4.096'a ayarlanarak, geri çağrı her 4.096 örnekte ateşlenecektir. 2,048 ve 4,096'nın çoğu genel kullanım için gecikme ve performans açısından iyi birer avantaj olduğunu düşünüyorum. Gerekirse indirebilir veya uygunsa yükseltebilirsiniz. WebRTC özelliğinin bununla hiçbir ilgisi yok ... Bu Web Ses API'sı. – Brad
Temizlediğiniz için teşekkürler. Ancak bu, bir seferde yalnızca bir örnekleme yapabilir. Bir paketin sonundaki bilgiler bir sonraki pakete taşınmaz, bu nedenle son seste çok fazla anormal bir durum söz konusudur. – user2600798
- 1. WebAudio API örnekleme hızı
- 2. Özel dönemlerle yeniden örnekleme
- 3. Değiştir AYDK yeniden örnekleme kod
- 4. iOS'ta arka plan ses akışını engelleme
- 5. MPMoviePlayerController arka planda ses akışını oynatıyor
- 6. Örnekleme ile data.table birleştirilmesi
- 7. 8Khz'den 48Khz'ye (örnekleme/sonrasındaki örnek ses çerçeveleri) örnekleme/sonlandırma örnek kareleri
- 8. Logging.captureWarnings ile yakalanan uyarıları nasıl biçimlendiririm?
- 9. Örnekleme çalışmıyor
- 10. Pandalarla yeniden örnekleme yaparken dize değişkeni modu nasıl elde edilir
- 11. FBO'dan glReadPixels çoklu örnekleme ile başarısız oluyor
- 12. Windsor, yakalanan bileşenleri çözümlemiyor
- 13. Yeniden örnekleme işlevini 1000 kez tekrarlayın? Lapa kullanmadan mı?
- 14. Yeniden örnekleme verilerini Kotlin'deki örnek alanlarına nasıl kaydedebilirim?
- 15. Teorisi: Örnekleme Teoremi & Nyquist Frekansı
- 16. Rebasing iş akışını kısaltma?
- 17. Yakalanan Değişkenler ... Bu 'Yakalanan' aslında ne anlama geliyor?
- 18. OS X çekirdek ses çalma/çıkışı ile ses çıkışları yaşanıyor
- 19. JavaFX ile ses çalma
- 20. HTML5 ile ses çalma
- 21. HTML5 ile ses yakalama
- 22. OpenAL ile Ses Kaydetme
- 23. SoundPool ile ses çalma
- 24. Örnekleme ve başlatılıyor java.nio.files.Path?
- 25. Twitter akış filtresi anahtar kelimelerini akışını yeniden başlatmadan değiştirin
- 26. Ses Akışı OS
- 27. Örnekleme Hatası asp.net
- 28. Crash Örnekleme System.Xml.Serialization.XmlSerializer C#
- 29. SpringFramework: örnekleme istisnası
- 30. JavaScript'te dinamik örnekleme
Böyle yavaş bir örnekleme hızı kullanmak istediğiniz bir neden var mı? Sadece bant genişliğini azaltmaya çalışıyorsanız, bit derinliğinde bir azalma çok daha iyi bir fikirdir. Web Audio API, float32 örneklerini kullanır. 16-kHz'de 16-bit örneklerle 8,1 bitlik 44.1 kHz'de çok daha iyi sonuçlar elde edebilirsiniz. – Brad
Evet. Tarayıcıya konuşan cihazlar, yalnızca ADPMC'de kodlanmış 8K örnekleme oranını bilir ve bu, örnek başına 4 bittir. Bunun da ötesinde, içinde bulunduğumuz çevrenin, gerçek zamanlı sesleri (yalnızca konuşmalar) günde 24 saat eş zamanlı olarak bulut sunucularına yükleyen birkaç yüz kullanıcısı var. Yani evet, düşük bant genişliği kesinlikle bir gereklilik. 8 bitlik örnek üzerinde iyi fikir. Sunucu tarafında gerçek zamanlı olarak aşağıya doğru örnekleyebiliriz ve ekibimin çoğu C, C++ insanlarından oluştuğu için işi daha kolay hale getirir. – user2600798
Geliştiricileriniz Emscripten hakkında bilgi sahibi mi? https://kripken.github.io/emscripten-site/ – Brad