Saya memiliki satu set lagu yang saya ekstrak spektogram besarnya menggunakan Jendela Hamming dengan tumpang tindih 50%. Setelah mengekstraksi spektrogram, saya melakukan pengurangan dimensionalitas menggunakan Principal Components Analysis (PCA). Setelah menguranginya menjadi dimensi yang lebih rendah, saya merekonstruksi spektrogram dari dimensi yang lebih rendah. Jadi sekarang, akan ada beberapa kesalahan antara spektrogram asli dan spektrogram yang direkonstruksi. Saya ingin mengubah spektrogram ini kembali ke sinyal audio dan memutarnya, sehingga saya dapat mengetahui kapan direkonstruksi dari dimensi yang lebih rendah, bagaimana suara audionya.
Apakah ada fungsi yang tersedia di katakanlah Matlab. untuk mengubah Spectrogram besarnya menjadi sinyal audio ??
sumber
Jawaban:
Jika spektogram dihitung sebagai besarnya transformasi fourrier waktu singkat dari jendela yang tumpang tindih , maka spektrogram tersebut berisi beberapa informasi fase secara implisit.
Iterasi berikut melakukan pekerjaan:
STFT isftS adalah spektrogram, adalah transformasi Fourier-maju waktu singkat, adalah invers-short-time transformasi Fourier.stft kaki
sumber
Saya mengalami sedikit kesulitan untuk memahami jawaban @edouard, yang melakukan hal yang benar. Bandingkan dengan /signals//a/3410/9031 , yang saya gunakan untuk mengimplementasikan rekonstruksi saya.
Perhatikan bahwa adalah angka imajiner, dan adalah sinyal yang direkonstruksi pada iterasi . Mulai dengan menjadi vektor acak dengan panjang sinyal audio. Bagi saya beberapa iterasi sudah cukup untuk mendapatkan hasil yang terdengar baik-baik saja. Namun kesalahan absolut terhadap sinyal asli cukup tinggi. Juga spektogram yang dihasilkan I dihasilkan dari sinyal yang direkonstruksi, walaupun menunjukkan struktur yang sama secara umum, memiliki magnitudo yang sangat berbeda.x n n th x 0i xn nth x0
sumber
Anda dapat menggunakan spektogram yang direkonstruksi versus spektrogram asli untuk mendesain filter yang respons magnitude-nya mengubah satu spektogram ke yang lainnya. Anda kemudian dapat menerapkan filter ini ke data domain waktu asli, atau ke FFT asli untuk tumpang tindih menambah / menyimpan penyaringan konvolusi cepat.
sumber
Gunakan algoritma Griffin-Lim untuk membalikkan sinyal audio dari spektrogram, jika Anda tidak khawatir tentang kompleksitas komputasi.
sumber