GNU/Linux >> Belajar Linux >  >> Linux

Analisis Audio Waktu Nyata Di Linux

Marsyas akan menjadi pilihan yang bagus untuk melakukan ini, ini dibuat tepat untuk tugas semacam ini.

Untuk menyetel instrumen, yang perlu Anda lakukan adalah memiliki algoritme yang memperkirakan frekuensi fundamental (F0) dari suatu suara. Ada beberapa algoritma untuk melakukan ini, salah satu yang terbaru dan terbaik adalah algoritma YIN, yang dikembangkan oleh Alain de Cheveigne. Saya baru saja menambahkan algoritme YIN ke Marsyas, dan menggunakannya sangat sederhana.

Berikut kode dasar yang akan Anda gunakan di Marsyas:

  MarSystemManager mng;

  // A series to contain everything
  MarSystem* net = mng.create("Series", "series");

  // Process the data from the SoundFileSource with AubioYin
  net->addMarSystem(mng.create("SoundFileSource", "src"));
  net->addMarSystem(mng.create("ShiftInput", "si"));
  net->addMarSystem(mng.create("AubioYin", "yin"));

  net->updctrl("SoundFileSource/src/mrs_string/filename",inAudioFileName);

  while (net->getctrl("SoundFileSource/src/mrs_bool/notEmpty")->to<mrs_bool>()) {
    net->tick();
    realvec r = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
    cout << r(0,0) << endl;
  }

Kode ini pertama-tama membuat objek Seri yang akan kita tambahkan komponennya. Dalam sebuah Seri, masing-masing komponen menerima keluaran dari MarSystem sebelumnya secara serial. Kami kemudian menambahkan Sumber File Suara, yang dapat Anda masukkan dalam file .wav atau .mp3. Kami kemudian menambahkan objek ShiftInput yang menghasilkan potongan audio yang tumpang tindih, yang kemudian dimasukkan ke dalam objek AubioYin, yang memperkirakan frekuensi dasar dari potongan audio tersebut.

Kami kemudian memberi tahu SoundFileSource bahwa kami ingin membaca file di AudioFileName.

Pernyataan while kemudian diulang sampai SoundFileSource kehabisan data. Di dalam whileloop, kami mengambil data yang telah diproses jaringan dan menampilkan elemen (0,0), yang merupakan perkiraan frekuensi dasar.

Ini bahkan lebih mudah bila Anda menggunakan pengikatan Python untuk Marsyas.


http://clam-project.org/CLAM adalah kerangka perangkat lunak lengkap untuk penelitian dan pengembangan aplikasi di Domain Audio dan Musik. Ini menawarkan model konseptual serta alat untuk analisis, sintesis, dan pemrosesan sinyal audio.

Mereka memiliki API yang bagus, GUI yang bagus, dan beberapa aplikasi yang telah selesai di mana Anda dapat melihat semuanya.


Panduan ini akan membantu. Jangan gunakan ALSA untuk aplikasi Anda. Gunakan API tingkat yang lebih tinggi. Jika Anda memutuskan ingin menggunakan JACK, http://jackaudio.org/applications memiliki tiga tuner instrumen yang dapat Anda gunakan sebagai kode contoh.


ALSA adalah semacam standar default untuk linux sekarang berdasarkan driver kernel yang disertakan dalam kernel dan OSS disusutkan. Namun ada alternatif untuk ruang pengguna ALSA, seperti jack, yang tampaknya ditujukan untuk aplikasi tipe profesional latensi rendah. API-nya tampaknya memiliki API yang lebih bagus, meskipun saya belum pernah menggunakannya, paparan singkat saya ke ALSA API akan membuat saya berpikir bahwa hampir semua hal akan lebih baik.


Linux
  1. Memboot Linux lebih cepat

  2. Skenario Waktu Nyata Linux dan masalah dengan solusinya

  3. Bagaimana Linux menggunakan jam waktu nyata?

  1. Direktori JAVA_HOME di Linux

  2. Status Proses Linux

  3. Ekstrak estimasi waktu perjalanan pulang pergi (RTT) TCP di linux

  1. Linux – Penggunaan Memori Nyata?

  2. Linux – Union Mount Di Linux?

  3. apakah mungkin untuk membangunkan perangkat Linux pada waktu tertentu