Saya memiliki satu set lagu yang saya ekstrak STFT (Short-Time Fourier Transform) dan menggunakan spektrum magnitudountuk menghitung mel spektrogram dengan menggunakan mel filterbank matrix , jadi . Saya ingin tahu apakah ada metode untuk membalikkan proses ini, yaitu mengkonversi dari mel spektrogram kembali ke spektrogram. Saya melakukan beberapa pengurangan dimensi pada spektogram mel, dan merekonstruksi spektogram mel dari dimensi yang lebih rendah. Sekarang saya ingin membuat kembali sinyal audio dari spektogram mel yang direkonstruksi, jadi saya kira pertama merekonstruksi spektrogram dan kemudian sinyal audio.
Masalahnya adalah bahwa matriks bank filter mel bukan matriks kuadrat, karena kita mengurangi no dari frekuensi bins, jadi kebalikan dari tidak dapat digunakan seperti ini: . Jadi apakah ada cara untuk menghasilkan pemetaan invers, seperti beberapa fungsi transfer terbalik yang dapat dikonversi dari X ke S ?
sumber
Jawaban:
Keduanya menggunakan spektogram magnitudo dan bank filter Mel adalah proses yang merugi. Informasi penting yang diperlukan untuk merekonstruksi dokumen asli akan hilang. Dengan demikian, Anda perlu kembali dan menggunakan sampel audio asli untuk melakukan rekonstruksi dengan menentukan filter domain waktu atau frekuensi yang setara dengan pengurangan dimensi Anda.
Anda dapat membuat asumsi tentang informasi yang hilang, tetapi asumsi itu sendiri biasanya terdengar tidak akurat, palsu, dan / atau robot. Atau Anda hanya dapat menggunakan input yang disintesis khusus, di mana asumsi akan benar dengan desain input itu.
sumber
Seperti yang telah disebutkan, secara umum tidak mungkin untuk melakukan dengan tepat. Seperti jika Anda memiliki representasi 2d adegan 3d, mantan sisi mobil, Anda pada prinsipnya tidak dapat mengatakan apakah itu kartun yang sangat tipis yang menyerupai mobil atau itu adalah foto dari beberapa mobil sungguhan tetapi jika Anda menganggap bahwa tidak ada yang mencoba menipu Anda, Anda dapat membuat beberapa asumsi tentang data nyata, memang begitulah cara kerja model generatif pembelajaran mesin.
Mengenai transformasi terbalik, karena sebagian besar filter bersifat ortogonal (produk dalamnya nol), Anda dapat menggunakan transposisi bank filter sebagai perkiraan transformasi terbalik, namun penskalaan data akan salah karena Anda dapat dengan mudah memverifikasi. Anda dapat menggunakan beberapa statistik tentang STFT asli yang diekstrak dari beberapa dataset besar per saluran (frekuensi) dan menormalkan untuk memiliki skala 'benar'. Ketika membuat spektogram penuh hanya dari sinyal magnitudo, Anda dapat menggunakan algoritma Griffin-Lin untuk melakukan perkiraan. Anda dapat menggunakan sesuatu seperti WaveNet atau Parallel Wavenet untuk melakukannya dengan lebih kuat, karena telah diverifikasi berfungsi dengan baik dengan sinyal suara dan sinyal audio lainnya.MTMx
sumber
Saat ini hal termudah adalah menggunakan
librosa
untuk tugas ini. Ini memiliki fungsi mel_to_stft yang melakukan persis apa yang Anda inginkan.Seperti yang telah disebutkan orang lain, rekonstruksi ini bersifat lossy dan hanya solusi yang dapat ditemukan. Dalam librosa itu dilakukan dengan menggunakan algoritma Lease Squares Non-negatif .
Suatu hal yang perlu diingat: jika Anda telah mengekstrak energi mel menggunakan algoritma Anda sendiri, Anda harus memastikan bahwa frekuensi warping serupa, jika tidak, Anda akan berakhir dengan audio yang terdengar tidak harmonis (dengan asumsi bahwa nanti Anda ingin mensintesis bentuk gelombang dari STFT). Di librosa ada dua fungsi melengkung, Anda bisa menggunakan yang kedua dengan menentukan
htk=True
.sumber