Questions tagged «spectrogram»

2
提高Python的频谱图分辨率?
我正在使用该specgram()函数在matplotlibPython中生成语音波文件的频谱图,但输出的质量始终比我的普通转录软件Praat生成的质量差很多。例如,以下调用: specgram( fromstring(spf.readframes(-1), 'Int16'), Fs=framerate, cmap=cm.gray_r, ) 生成此: 在Praat期间,使用以下设置处理相同的音频样本: 查看范围:0-8000Hz 窗长:0.005s 动态范围:70dB 时间步长:1000 频率步进:250 窗口形状:高斯 生成此: 我究竟做错了什么?我尝试摆弄所有specgram()参数,但似乎没有任何方法可以改善分辨率。我几乎没有FFT的经验。

4
从频谱图重建音频信号
我有一组歌曲,使用重叠频率为50%的汉明窗提取了幅度谱图。提取频谱图后,我使用主成分分析(PCA)进行了降维。将其降低到较低的维度后,我从较低的维度重构了频谱图。因此,现在,原始频谱图和重建频谱图之间将出现一些错误。我想将此频谱图转换回音频信号并播放它,这样我就能知道从较低尺寸重建时的声音声音。 Matlab中有可用的功能吗?将幅度频谱图转换为音频信号

1
创建频谱图
我一直在尝试确定此任务的逻辑,并计划使用KissFFT源程序包执行快速傅立叶变换。请让我知道这是否正确: 分配FFT结构,即。我正在使用的窗口大小kiss_fft_alloc(N,0,NULL,NULL) 在哪里N。输入缓冲区将是N类型为的元素数组kiss_fft_scalar。输出缓冲区将是N/2 + 1类型为的元素数组kiss_fft_cpx。 解码N(窗口大小)PCM样本数。 对于每个PCM样本,平均每个通道的振幅(无符号样本),并从0缩放到2(除以65536.0),然后将结果存储到输入缓冲区中。 在输入缓冲区上执行窗口化(即Hanning)。 对输入缓冲区执行快速傅立叶变换,并将其存储到输出缓冲区中。由于我使用实数值作为输入,因此可以使用kiss_fftr()。 对于N/2输出值,获取转换后数据的平方大小,然后使用以下公式将这些值转换为dB刻度: 10 * log10 (re * re + im * im) 绘制N/2步骤6中的值。 丢弃输入缓冲区的前半部分,解码下一个(窗口大小/ 2)PCM样本,并对数据执行缩放和加窗操作。这样可以有效地滑动输入窗口,并避免必须在已处理的PCM样本上重做数学运算。 循环至步骤5,重复这些步骤,直到处理完所有样本为止。 从中释放已使用的内存kiss_fft_alloc()。 建议在执行FFT之前先从输入窗口中减去一个值,以使所得的DC值的大小为零。我应该从输入数据中减去平均值还是平均值? 另外,选择窗口大小时需要考虑哪些事项?除此之外,按照KissFFT的说明,它必须是偶数,使用较小的窗口大小也有好处。它会提供更好的图形吗?我认为大窗口大小会减少必须执行的FFT数量,这是使用大窗口大小的唯一好处吗? XXx 预先感谢您提供的所有指导。

1
Matlab的STFT实现spectrogram()的最大频率分辨率是多少?
Matlab的spectrogram()功能计算信号的STFT。它描述其NFFT参数如下: S = SPECTROGRAM(X,WINDOW,NOVERLAP,NFFT)指定用于计算离散傅立叶变换的频率点数。如果NFFT未指定,NFFT则使用默认值。 我是否正确,这NFFT仅是在频率分辨率和计算数量之间进行权衡?对于我的离线工作,无需节省周期。是否有的最大限制NFFT,例如由频谱泄漏或我应了解的任何其他问题强加的,或者我可以将该参数设置得尽可能高吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.