Pemformatan Ulang Data Audio Engine Audio Tingkat Rendah - Kecepatan Sampel dan Konversi Kedalaman Bit

Aug 17 2020

Pertama, tampaknya ada sejumlah kecil tutorial pemrograman audio tingkat rendah di luar sana jadi jika ada yang tahu tentang beberapa sumber yang baik saya akan sangat menghargai. Sekarang ke topik yang sedang dibahas!

Saya menggunakan WASAPI untuk mesin audio yang saya coba kembangkan dan saya mengalami kesulitan dalam memformat ulang data file audio yang telah dibaca ke dalam format yang disiapkan untuk diterima oleh perangkat audio. Secara khusus saya bertanya-tanya bagaimana cara dengan cepat mengubah kecepatan pengambilan sampel dan kedalaman bit dari file audio yang dibaca ke dalam format perangkat yang diminta. Saya melihat contoh di mana interpolasi linier digunakan tetapi membaca di tempat lain bahwa filter seperti itu memperkenalkan terlalu banyak artefak seperti aliasing, jadi sekali lagi saya bertanya-tanya apa algoritma praktis untuk memformat ulang data audio dalam aplikasi waktu nyata.

Jawaban

1 hotpaw2 Aug 17 2020 at 15:44

Interpolasi Sinc tidak memasukkan artefak aliasing ke data yang aslinya bandlimited sebelum pengambilan sampel. (Tetapi perlu sedikit dimodifikasi, karena kernel Sinc atau Dirichlet memiliki durasi tak terbatas.)

Salah satu referensi kanonik tentang mengapa rekonstruksi bekerja dan bagaimana melakukan interpolasi ada di sini: https://ccrma.stanford.edu/~jos/resample/

Saya memiliki implementasi sederhana di Basic di sini: http://www.nicholson.com/rhn/dsp.html#3

Metode umum lainnya adalah upampling rasio bilangan bulat terfilter jalur rendah yang diikuti dengan penurunan sampel rasio bilangan bulat terfilter jalur rendah dengan dua rasio yang sesuai. Metode umum lainnya adalah menghasilkan bank filter FIR polifase (dari beberapa fase kernel interpolasi Sinc berjendela (atau filter FIR yang dioptimalkan). Metode umum lainnya adalah menggunakan interpolasi polinomial dari setiap punuk kernel Sinc, menghasilkan bank filter Farrow .

Anda perlu membawa bit nilai antara aritmatika yang cukup untuk menjaga noise floor Anda di bawah spesifikasi apa pun.