Bagaimana Saya Menjernihkan Audio Rekaman Tanpa Meng-encode Ulang Videonya
On this page
- Pendahuluan
- A. Bagian rekaman yang selalu meleset
- B. Apa yang harus dipenuhi "tanpa batas"
- C. Sembilan hambatan yang menghalangi
- Metode
- A. Filternya memang sudah terpasang
- B. Menyalin gambarnya, byte demi byte
- C. Lima model, dan sebuah tabel ketimbang tebakan
- D. Kendali campuran, sebab kekuatan penuh tak selalu paling baik
- E. Menemukan file sendiri ketika kita sebuah symlink
- F. Tilde yang tiba sebagai coretan
- G. Menolak memusnahkan aslinya
- H. Menulis ke tempat lain lebih dulu
- I. Melaporkan apa yang berubah
- Hasil dan Pembahasan
- A. Apa yang dijumlahkan kesembilan keputusan itu
- B. Ke mana tenaganya sebenarnya pergi
- C. Yang tidak dijawab pendekatan ini
- Simpulan
- Istilah
Pendahuluan
A. Bagian rekaman yang selalu meleset
Rekaman layar adalah dua bagian yang dijahit jadi satu, dan biasanya cuma salah satunya yang keluar jelek. Gambarnya apa pun yang ditulis software perekam, dan ia benar sejak awal — jendelanya memang di sana, kursornya memang bergerak, frame-nya memang mendarat. Audionya sebuah mic di dalam ruangan, dan ruangan punya kulkas, kipas, jalanan di luar, serta laptop yang putarannya naik tiap kali encoder mulai sibuk.
Yang pulang dari satu sesi karena itu timpang: track video yang tak perlu diapa-apakan, dinikahkan dengan track audio yang membawa lantai desis tetap — tak terdengar saat merekam, mustahil diabaikan saat diputar. Rekaman yang mengalami ini berupa screen capture untuk artikel dan demo, video tutorial yang lebih panjang, serta rekaman rapat dan wawancara — tiga bentuk isi yang berbeda dengan cacat yang sama di paruh file yang sama.
Tantangannya: menjernihkan suara sebuah rekaman, sebanyak yang pekerjaannya butuhkan, tanpa watermark dan tanpa batas pemakaian.
Frekuensinya bagian yang menentukan. Satu rekaman beraudio buruk cuma kerepotan yang bisa diselesaikan manual. Merekam secara rutin berarti keseleo satu kalimat, merekam ulang, keseleo di kalimat lain, lalu tiba di satu folder berisi take yang semuanya butuh perlakuan sama. Solusi yang menagih per file, membatasi menit per bulan, atau mencapkan watermark audio ke hasilnya kecuali kita berlangganan, dihargai persis melawan pola pemakaian yang melahirkan kebutuhannya. Yang murah di file pertama jadi mahal di file kelima belas, dan jumlah itu bukan angka yang muluk untuk satu sesi perekaman.
Gampang dirumuskan, canggung dibangun. Kecanggungannya bukan pada peredaman noise-nya, yang ternyata cuma satu filter bawaan program yang sudah ada di kebanyakan mesin. Melainkan pada segala yang mengelilinginya: tidak merusak paruh file yang sudah benar, memilih di antara model yang cuma telinga bisa menilainya, dan segelintir jebakan environment yang memisahkan script yang jalan di mesin sendiri dari script yang jalan saat dipanggil namanya dari mana pun.
B. Apa yang harus dipenuhi "tanpa batas"
Dua syarat lahir dari memproses rekaman berulang kali, dan keduanya mendorong pekerjaannya dikerjakan lokal.
Pertama, hasilnya wajib langsung pakai. Watermark audio — nada, suara orang, atau jeda senyap — bukan persoalan kosmetik di sebuah tutorial; ia cacat pada barang yang mau diserahkan. Tool yang menghasilkan pratinjau lalu menagih untuk membuang capnya bukan menyelesaikan persoalan, melainkan memperagakan solusinya lalu menahannya.
Kedua, bahannya sebaiknya tak meninggalkan mesin. Rekaman rapat dan wawancara memuat suara orang lain, dan mengunggahnya ke sebuah layanan demi kepraktisan adalah keputusan atas data milik orang lain yang diambil sepihak. Mengerjakannya lokal menghapus pertanyaan itu ketimbang menjawabnya. Tak ada syarat layanan yang perlu dibaca, tak ada kebijakan retensi yang perlu dipercaya, dan tak ada yang perlu dijelaskan kepada orang yang suaranya ikut terekam.
Digabung, keduanya mencoret seluruh kategori layanan penjernih online, dan menyisakan pertanyaan mau memakai apa — yang jawabannya ternyata sudah terpasang.
C. Sembilan hambatan yang menghalangi
Layanan penjernih online dihargai melawan pemakaian berulang. Watermark, batas durasi, dan tagihan per file semuanya menggigit paling keras justru pada situasi yang melahirkan kebutuhannya: banyak take dari rekaman yang sama. Alternatif yang saya tolak pantas disebut terus terang, sebab ia langkah pertama yang paling jelas sekaligus yang gagal di file kedua, bukan di file pertama. Percobaan pertama justru mulus, dan itulah yang membuatnya terasa menjanjikan sampai jumlahnya bertambah.
Yang rusak cuma audionya, tapi tool video memperlakukan kedua paruh itu sama. Meng-encode ulang gambar menurunkan mutu bagian yang sudah benar, dan memakan waktu jauh lebih banyak ketimbang pekerjaan audionya. Inilah keputusan inti tool ini, dan inilah yang pantas dibuktikan ketimbang sekadar dinyatakan.
Peredaman noise bukan satu tombol. Ada lima model RNNoise, masing-masing dilatih untuk kombinasi karakter noise dan karakter sinyal yang berbeda, dan beda di antaranya urusan telinga ketimbang urusan angka. Tool yang tak menawarkan pilihan berarti menebak atas nama pemakainya; tool yang menawarkan lima tanpa panduan sama saja tak lebih baik.
Denoise penuh kadang terdengar lebih buruk ketimbang denoise separuh. Membuang seluruh noise bisa membuat suara terdengar tipis dan terlalu diproses, sebab filter-nya tak sanggup memisahkan keduanya dengan sempurna. Penawarnya sebuah kendali campuran, dan keberadaannya adalah pengakuan bahwa mutu audio itu penilaian, bukan pengukuran.
Symlink memutus jalan sebuah program ke file pendampingnya sendiri. Dipanggil lewat /usr/local/bin, cara naif mencari folder sebuah script akan menunjuk ke lokasi symlink-nya, dan file model tidak ada di sana. Hambatan ini muncul justru karena tool ini punya file data di sebelahnya — tool saya sebelumnya yang murni shortcut tak pernah menabraknya.
Bash tak mengekspansi tilde sesudah tanda sama dengan. Ditulis dengan satu cara, path relatif-home tiba sebagai path sungguhan; ditulis dengan cara lain, ia tiba sebagai coretan harfiah. Bedanya tak kelihatan sampai ada yang mengetik bentuk kedua.
Rekaman aslinya wajib selamat. Sebuah take tak bisa direkam ulang begitu ruangan, cahaya, dan kalimatnya sudah bergerak. Tool yang menulis menimpa masukannya cuma berjarak satu ketukan tombol dari memusnahkan bahan yang tak punya cadangan.
Jalan yang mati di tengah tak boleh meninggalkan file separuh tulis yang tampak jadi. Encode makan waktu, dan gangguan terjadi. Keluaran separuh yang duduk di folder tujuan dengan nama yang benar lebih buruk ketimbang tak ada keluaran sama sekali, sebab ia akan dipakai.
Berhasil atau tidak adalah pertanyaan yang mestinya dibantu jawab oleh tool-nya. "Terdengar lebih baik?" itu subjektif, tapi "lantai noise-nya turun sementara puncaknya tetap?" bisa diukur, dan yang kedua proxy yang bagus untuk yang pertama.
Urutannya berjalan dari kenapa tool ini ada, melewati keputusan yang mendefinisikannya, lalu ke penilaian yang subjektif, jebakan environment, dan akhirnya tiga syarat yang wajib dipenuhi sebuah tool agar boleh dipercaya memegang bahan yang tak bisa dibuat ulang.
Metode
A. Filternya memang sudah terpasang
Inilah jawaban atas hambatan pertama: tak ada yang perlu dibeli maupun diunggah, sebab ffmpeg — program command-line gratis untuk mengonversi dan mengolah audio maupun video — membawa peredam noise berbasis neural network bernama arnndn, yang menjalankan model RNNoise secara lokal.
Yang ia butuhkan sebuah file bobot. Filternya sendiri sudah dikompilasi ke dalam ffmpeg, tapi model terlatihnya data terpisah, dan tanpa itu filter menolak jalan. Bobot itulah isi folder models/ — lima file, total sekitar 1,5 MB, disimpan di sebelah script ketimbang diunduh saat dibutuhkan, supaya pipeline-nya jalan offline dan hasilnya tahun depan sama dengan hasilnya hari ini.
Tak ada langkah build dan tak ada library yang dipasang, dan justru itulah alasan pendekatan ini lebih murah ketimbang kedengarannya. Saya tidak mengambil alternatif yang sering disarankan — mem-build library RNNoise lalu menyambungkannya ke rantai pemrosesan — karena filternya sudah ada di dalam binary.
B. Menyalin gambarnya, byte demi byte
Ini menjawab hambatan kedua, dan inilah keputusan yang jadi poros seluruh tool. Saya memilih tidak meng-encode ulang gambarnya; gambar itu saya salin.
Dua stream, dua perlakuan berbeda. Stream video diteruskan tanpa disentuh, dan cuma audionya yang di-decode, difilter, lalu di-encode ulang.
"Tanpa disentuh" klaim yang kuat, jadi ia pantas diperiksa ketimbang dipercaya. Menghitung hash stream video pada input dan output menjawabnya langsung:
MD5=6665057e1a0aa5e54aec08268ad994ab
MD5=6665057e1a0aa5e54aec08268ad994abIdentik. Bukan mirip secara visual, bukan cukup dekat — byte yang sama persis. Stream audio dari kedua file itu menghasilkan hash yang berbeda, dan justru itulah pemisahan yang dimaksud: satu paruh ditulis ulang, paruh lainnya diangkut menyeberang tanpa pernah di-decode sama sekali.
Sisi ongkosnya sama terangnya. Pada klip 1080p, memproses dengan penyalinan stream dibanding meng-encode ulang video dengan filter yang sama:
Lima setengah kali, pada dua puluh detik footage uji sintetis. Rasionya yang berarti ketimbang angka mutlaknya: pekerjaan audio itu ongkos kecil yang tetap, dan segala di atasnya adalah harga mengompresi ulang gambar yang sebetulnya tak perlu. Pada tutorial yang direkam dalam satu take panjang, pengali itu beda antara sebuah jeda dengan sebuah rehat kopi — dan di ujung encode ulang, gambarnya terukur lebih buruk ketimbang yang masuk.
C. Lima model, dan sebuah tabel ketimbang tebakan
Ini menjawab hambatan ketiga. Kelima model berbeda pada dua sumbu: jenis noise yang dilatihkan untuk dibuang, dan jenis sinyal yang dilatihkan untuk dipertahankan.
| noise ↓ / sinyal → | General | Voice | Speech |
|---|---|---|---|
| General | mp | lq | tidak disertakan |
| Recording | cb | bd | sh |
"Voice" dan "speech" bukan kolom yang sama: voice mencakup suara manusia yang bukan kata, seperti tawa, sedangkan speech lebih sempit. Rekaman layar bernarasi duduk di persilangan noise rekaman dengan sinyal speech, dan di situlah sh berada — itulah alasan ia jadi default.
Default-nya tidak saya pilih dari tabel saja. Saya mendengarkan kelimanya pada screen capture sungguhan lalu mengambil yang terdengar paling baik, dengan pilihan kedua dicatat untuk saat ia kurang cocok pada suatu rekaman. Itulah prosedur yang jujur untuk penilaian yang dijatuhkan telinga, dan mencatat juara keduanya itulah yang membuat catatan tersebut berguna belakangan.
Nama pendeknya diterjemahkan ke file di dalam folder milik program, jadi kasus yang paling sering tak butuh path. Path utuh tetap diterima, untuk model yang tinggal di tempat lain.
D. Kendali campuran, sebab kekuatan penuh tak selalu paling baik
Ini menjawab hambatan keempat. Denoise pada kekuatan penuh bisa meninggalkan suara yang terdengar kopong, dan penawarnya mencampurkan sebagian aslinya kembali.
Efeknya terukur meski penilaiannya tidak. Menjalankan file yang sama pada dua setelan lalu mengukur mean volume-nya memperlihatkan seberapa banyak lantai noise yang dibuang masing-masing:
--mix=1
--mix=0.3 Pada kekuatan penuh, lantainya turun jauh; pada 0,3 sebagian besarnya masih ada, sebab sebagian besar aslinya juga masih ada. Tak satu pun dari kedua angka itu yang benar dengan sendirinya — intinya kendali tersebut berpengaruh nyata di sepanjang rentangnya, jadi ia tombol sungguhan ketimbang hiasan.
Alasan ia ada sama sekali: peredaman noise itu tawar-menawar. Yang dibuang model adalah yang ia yakini bukan speech, dan ketika ia keliru sedikit, sebagian suara ikut terbawa. Menahan sebagian aslinya adalah cara membeli kembali bagian yang semestinya tak ia ambil, dengan ongkos menyisakan sebagian desisnya.
E. Menemukan file sendiri ketika kita sebuah symlink
Ini menjawab hambatan kelima. Tool ini tinggal di folder project dengan model di sebelahnya, dan dipasang lewat symlink ke /usr/local/bin. Pemasangan itulah yang mematahkan cara naif menemukan file pendamping.
SELF=""
SCRIPT_DIR=""Tanpa readlink -f, path yang diperiksa adalah path symlink-nya sendiri, dan folder yang diturunkan darinya jadi /usr/local/bin — tempat yang tak punya folder models/, sehingga filter gagal inisialisasi dengan pesan soal file model, bukan soal pemasangannya.
Menyelesaikan link-nya lebih dulu membuat pencarian menunjuk folder yang sebenarnya, tak peduli tool-nya dipanggil dengan cara apa. Ini jebakan khas tool yang membawa file data; script yang murni shortcut tak punya apa pun di sebelahnya untuk dicari, dan boleh di-symlink ke mana-mana tanpa merasakan bedanya.
F. Tilde yang tiba sebagai coretan
Ini menjawab hambatan keenam, yang kecil, nyata, dan cuma ketahuan lewat pemakaian. Shell mengekspansi ~ jadi home directory pada sebagian posisi dan tidak pada posisi lain.
--source=/video.mp4 Dipisah spasi, tilde jadi kata tersendiri dan diekspansi sebelum programnya sempat melihatnya. Ditempelkan sesudah tanda sama dengan, ia bagian dari kata yang lebih panjang, dan shell membiarkannya — jadi program menerima coretan harfiah lalu melaporkan file bernama begitu tidak ada.
Karena tool ini menerima kedua ejaan untuk tiap opsi, ia mengekspansi tilde-nya sendiri ketimbang memberitahukan ejaan mana yang harus dihindari:
Tiga cabang, dan yang ketiga yang penting: apa pun yang tak diawali tilde lewat tanpa berubah, sehingga fungsi ini aman diterapkan ke tiap argumen path tanpa perlu dipikirkan lagi.
G. Menolak memusnahkan aslinya
Ini menjawab hambatan ketujuh. Saya menulis keluarannya di sebelah masukannya dengan suffix disisipkan sebelum ekstensi, dan dua pagar terpisah berdiri antara tool ini dengan rekaman yang hilang.
;
Pagar pertama membandingkan path keluaran yang sudah diselesaikan dengan path sumber yang sudah diselesaikan, jadi ia menangkap kasus ketika opsinya bersekongkol menunjuk keduanya ke file yang sama. Pagar kedua menolak mengganti hasil yang sudah ada kecuali menimpa memang diminta terang-terangan. Tak satu pun cerdik; keduanya ada sebab masukannya bahan yang tak bisa dibuat ulang, dan rekaman sumber tak layak dijaga cuma dengan mengingat-ingat untuk berhati-hati.
H. Menulis ke tempat lain lebih dulu
Ini menjawab hambatan kedelapan. Saya tidak membiarkan encode menulis langsung ke nama file finalnya. Ia menulis ke file sementara, yang baru dipindahkan ke tempatnya sesudah ffmpeg melaporkan sukses.
tmp=""
# ... ffmpeg menulis ke "$tmp_out" ...
Dua rincian yang mengerjakan pekerjaannya. File sementaranya dibuat di folder tujuan ketimbang di /tmp, yang menjaga rename-nya tetap dalam satu filesystem sehingga atomik — perpindahan antar-filesystem adalah salin lalu hapus, yang punya keadaan separuh jadi yang terlihat, persis jenis yang hendak dihindari ini. Dan trap-nya membuang file sementara bila jalannya terganggu, sehingga encode yang ditinggalkan tak meninggalkan apa pun ketimbang meninggalkan serpihan yang tampak masuk akal.
Hasilnya, nama file keluaran baru muncul begitu ia utuh. Tak ada celah waktu ketika proses lain bisa memungut file separuh lalu memperlakukannya sebagai barang jadi.
I. Melaporkan apa yang berubah
Ini menjawab hambatan kesembilan. Tool ini mengukur audionya sebelum dan sesudah, lalu mencetak keduanya.
Kedua angka itu menjawab pertanyaan berbeda. mean_volume dikuasai apa pun yang hadir hampir sepanjang waktu, yang pada rekaman bernoise berarti lantai noise-nya — jadi penurunan besar berarti desis tetapnya sudah pergi. max_volume mengikuti puncak paling keras, yang berarti suaranya, jadi ia mestinya tetap kira-kira di tempatnya. Jalan yang membuat keduanya turun sebanyak yang sama bukan membuang noise; ia mengecilkan segalanya, termasuk yang pantas dipertahankan.
Ini bukan pengganti mendengarkan, dan tak disodorkan sebagai pengganti. Ia cara cepat menangkap kasus ketika filter bertindak terlalu jauh, sebelum satu menit perhatian dihabiskan untuk memutarnya.
Satu penataan lagi membuat tool ini bisa dipakai dari script lain: laporannya pergi ke stderr, dan satu-satunya yang ada di stdout adalah path file yang sudah jadi.
Pemisahan itu disengaja. Informasi kemajuan untuk orang yang menonton; path-nya adalah nilai balik tool yang sesungguhnya, dan menaruhnya sendirian di stdout membuat tahap berikutnya dalam rantai bisa menelannya tanpa mengurai keterangan di sekitarnya.
Hasil dan Pembahasan
A. Apa yang dijumlahkan kesembilan keputusan itu
Saya belum perlu mengubah tool ini sejak menulisnya, dan rekaman yang diprosesnya kini berjalan dari perekaman sampai audio siap pakai tanpa apa pun meninggalkan mesin. Tabel di bawah adalah rancangannya, satu baris per keputusan.
| Keputusan | Yang dibeli | Alternatif yang ditolak |
|---|---|---|
arnndn di ffmpeg | tanpa unggah, tanpa watermark, tanpa batas per file | layanan penjernih online — dihargai melawan pengulangan |
-c:v copy | hash stream video identik; 5.5× lebih cepat | encode ulang — lebih lambat dan terukur lebih buruk |
| model dibawa serta | jalan offline; hasil yang sama tahun depan | unduh saat dibutuhkan — pihak ketiga di dalam pipeline |
| lima model, tabel didokumentasikan | titik awal plus juara kedua yang disebut namanya | satu model dipatok — menebak untuk yang mendengarkan |
--mix | membeli kembali suara yang keliru diambil filter | selalu kekuatan penuh — terdengar terlalu diproses |
readlink -f | menemukan model-nya lewat symlink | pencarian folder naif — patah saat dipasang |
expand_tilde | kedua ejaan opsi sama-sama bekerja | mendokumentasikan keanehannya — jebakan dibiarkan |
| suffix + dua pagar | aslinya tak bisa hilang karena kecelakaan | sunting di tempat — sejengkal dari kehilangan permanen |
file sementara + mv atomik | nama finalnya cuma pernah memuat file yang utuh | menulis langsung — serpihan yang tampak jadi |
B. Ke mana tenaganya sebenarnya pergi
Satu baris di tabel itu adalah fiturnya. Peredaman noise-nya sendiri cuma satu pemanggilan filter, dan seandainya pekerjaannya berhenti di situ, tool ini akan sepanjang satu baris. Selebihnya soal rekaman yang memang bahan sungguhan ketimbang file uji: ia tak bisa dibuat ulang, ia mungkin memuat suara orang lain, ia datang berkelompok, dan ia diumpankan ke tahap berikutnya.
Proporsi itulah pelajaran umumnya. Kemampuan teknis yang menarik — peredam noise berbasis neural network — gratis dan memakan satu baris. Pekerjaannya justru pada menolak merusak paruh yang sudah benar, pada membuat pilihan subjektif bisa dinavigasi ketimbang disembunyikan, dan pada tiga mekanisme terpisah yang ada semata supaya satu kekeliruan atau satu gangguan tak berujung pada hilangnya sebuah rekaman. Tool yang cuma mengerjakan penyaringannya akan bekerja sempurna pada tiap file kecuali file yang justru penting.
Pantas disebut sebagai batas ketimbang kemenangan: ini dibangun untuk rekaman satu orang di satu mesin. Ia memproses satu file per jalan, tanpa paralelisme, dan mengandaikan seluruh file cocok dengan alur encode-lalu-rename. Memproses sekelompok file berarti sebuah loop shell, yang memadai pada skala beberapa take dan takkan memadai pada skala sebuah media library.
C. Yang tidak dijawab pendekatan ini
RNNoise membuang noise yang tetap dan berpita lebar — kipas, desis, dengung. Filter ini bukan tool perbaikan. Rekaman yang clipping, yang mic-nya tersenggol di tengah kalimat, atau yang ada percakapan kedua terdengar di latar takkan diselesaikan model noise, dan menjalankannya lebih keras tak menolong; ia justru mengambil lebih banyak suaranya.
Batas yang sama berlaku pada bentuk pekerjaannya. Tool ini mengandaikan persoalan audionya seragam di sepanjang file, sebab lantai noise sebuah ruangan biasanya memang begitu. Audio yang butuh perlakuan berbeda di tempat berbeda adalah pekerjaan penyuntingan, dan tempatnya di program bertimeline ketimbang di satu perintah yang menerapkan satu setelan ke seluruh durasi.
Simpulan
Sebuah rekaman terdiri dari dua paruh, dan biasanya cuma satu yang rusak. Menjernihkan audionya berulang kali, tanpa watermark maupun batas, cuma butuh filter yang sudah dikompilasi ke dalam ffmpeg — lalu delapan keputusan lain yang sama sekali tak berurusan dengan noise: salin gambarnya ketimbang meng-encode ulang, bawa serta file bobotnya supaya pipeline jalan offline, dokumentasikan tabel model supaya pilihan subjektif punya titik awal, sediakan kendali campuran sebab kekuatan penuh tak selalu paling baik, selesaikan symlink-nya supaya program bisa menemukan file miliknya, ekspansi tilde yang dibiarkan shell, dan pertahankan tiga mekanisme terpisah antara sebuah kekeliruan dengan hilangnya file asli.
Pengukuran yang pantas disimpan adalah hash-nya. Stream video keluarannya identik byte demi byte dengan stream video masukannya, dan itu klaim yang lebih kuat ketimbang "mutunya terjaga" sekaligus jauh lebih gampang diperiksa. Ia juga menjelaskan beda kecepatan 5,5 kali itu: cara tercepat memproses sebuah stream dengan benar adalah tidak memprosesnya sama sekali.
Yang menjaga tool ini tetap kecil adalah sempitnya pekerjaan — satu file, satu mesin, satu persoalan noise yang seragam. Tiap fitur yang tak dimilikinya adalah fitur yang dibuat tak perlu oleh kesempitan tersebut, dan fitur yang dimilikinya sebagian besar ada untuk melindungi bahan yang tak bisa direkam dua kali.
Istilah
- ffmpeg
- Program command-line gratis untuk mengonversi dan mengolah audio maupun video. Ia membaca rekaman, menjalankan filter noise, lalu menulis hasilnya.
- RNNoise
- Metode peredaman noise memakai recurrent neural network kecil yang dilatih memisahkan speech dari noise latar. Ditampilkan di ffmpeg sebagai filter
arnndn, yang butuh file bobot terlatih untuk berjalan. - stream copy
- Meneruskan stream audio atau video dari input ke output tanpa men-decode lalu meng-encode ulangnya. Ditulis
-c:v copy; byte keluaran untuk stream itu adalah byte masukannya. mean_volume/max_volume- Dua angka yang dilaporkan
volumedetectmilik ffmpeg. Pertama level rata-rata sepanjang file, dikuasai apa pun yang hadir hampir sepanjang waktu; kedua puncak paling keras. - lantai noise
- Suara tetap berlevel rendah yang hadir di sebuah rekaman bahkan ketika tak ada yang bicara — kipas, pendingin ruangan, dengung listrik, noise bawaan mic.
- rename atomik
- Memindahkan file di dalam satu filesystem, yang entah selesai entah tidak; tak ada pengamat yang melihat file setengah dipindahkan. Antar-filesystem, perintah yang sama berubah jadi salin lalu hapus, yang tidak atomik.
- file bobot
- Parameter hasil pelatihan sebuah neural network, disimpan terpisah dari code yang menjalankannya. Di sini, file
.rnnnyang dimuatarnndnsaat mulai.
Technologies covered
- Bash
- FFmpeg
- RNNoise