最近在做利用深度学习去噪的工作,大部分的工作都是利用spectrogram特征来做的,这就需要用到STFT, 本次利用的是python的scipy.signal模块。

在做去噪的时候,首先需要先将输入信号x利用stft转换成spectrogram:

ff, tt, yyx = scipy.signal.stft(test_noise_, fs=48000, nperseg = N, noverlap = N//2)

其中N表示的是fft的窗口长度(这里因为没有设置nfft,所以默认取nfft = nperseg), noverlap取的是N//2,表示有一半的信号重复计算。取N = 256 - 1, 那么得出来的yyx的shape就是128*128了,这样就能方便的使用一些基于图像的算法了。可以利用下面的代码来显示spectrogram (用imshow也可以,但是看得不是很明显,通过改cmap也许可行,但是不好找到跟下面图片一样的色彩配置):

plt.figure()
Pxx, freqs, bins, im = plt.specgram(test_noise_, NFFT=N, Fs=48000, noverlap=N//2)
plt.show()

在实际的操作中,往往取yyx的幅值,即np.abs(yyx),即将np.abs(yyx)来做为网络的输入(注意把信号归一化到-1~1之间要好得一些,图像它们的操作一般都会这么做),经过处理后会得到一些干净的spectrogram, 这个时候要还原成原始信号才能听得出差别来。而还原是要用到phase的,所以前面的步骤得把phase保存下来(注意在train的时候是不需要的, 在test的时候需要听出差别来,就要得到时域信号)。可以参与下面的操作来还完:

yyx_mag = np.abs(yyx) / np.max(np.abs(yyx)) * 2
yyx_phi = np.angle(yyx)xxx = np.multiply(yyx_mag, np.cos(yyx_phi)) + np.multiply(yyx_mag, np.sin(yyx_phi)) *1j

这里得到的xxx就是还原的时域信号,可以用plt.spectrogram得到其频谱:

这里跟上面不完全一样是因为在转换的过程中存在精度损失。

Revertable STFT相关推荐

  1. tf.signal.stft() 短时傅里叶变换的示例

    import tensorflow as tf import numpy as np a1 = np.arange(5) print(a1) [0 1 2 3 4] a2 = a1.astype(np ...

  2. librosa.stft() 短时傅里叶变换

    librosa 短时傅里叶变换 import numpy as np # pip install numpy import librosa # pip install librosa y, sr = ...

  3. mfcc中的fft操作_简化音频数据:FFT,STFT和MFCC

    mfcc中的fft操作 What we should know about sound. Sound is produced when there's an object that vibrates ...

  4. MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法

    在Matlab中,做短时傅里叶变换需要使用函数spectrogram,而在Matlab2019中,引入了一个新的函数stft,下面我们就来看下这两个函数都如何使用. 短时傅里叶变换的基本原理就是将数据 ...

  5. matlab STFT从时频图找异常噪声的频率

    %%%%%%傅里叶变换/逆变换/短时傅里叶变换%%%%%% [y,Fs]=wavread('Noise.wav'); %读出信号,采样率和采样位数. %sound(y,Fs); y=y(:,1); % ...

  6. stft isar成像 matlab,基于STFT和FRFT的运动目标雷达三维成像方法与流程

    本发明属于数字信号处理技术领域,特别涉及一种运动目标雷达三维成像方方法,可 用于对运动目标识别时,雷达ISAR对其三维成像. 背景技术: 逆合成孔径雷达ISAR是一种全天候.全天时的远程探测手段,具有 ...

  7. 傅里叶变换@(stft和istft)

    一.窗函数之短时傅里叶变换stft 前提: 傅里叶变换是针对平稳信号的,但是很多实际应用中的信号都是非平稳的,如果要计算其傅里叶变换,需要假设其周期无限长,然后对这个无限长的信号做变换分析.但是这种无 ...

  8. stft isar成像 matlab,基于时频分析的ISAR成像

    1引言雷达目标的回波具有时变性,因此常用的频域或时域处理方法往往力不从心.解决该问题的主要工具联合时频技术应运而生.逆合成孔径雷达(ISAR)成像的基本方法为距离一多普勒法,距离一多普勒法采用DFT对 ...

  9. matlab 时频分析(短时傅里叶变换、STFT)

    短时傅里叶变换,short-time fourier transformation,有时也叫加窗傅里叶变换,时间窗口使得信号只在某一小区间内有效,这就避免了传统的傅里叶变换在时频局部表达能力上的不足, ...

  10. 常见的变换总结与代码:DCT,STFT,K-L变换等

    文章目录 前言 一.从DFT到DCT 二.从CTFT到STFT 三.K-L变换与降维思想 四.K-L变换实例:人脸识别(含代码和详细注释) 五.参考资料 前言   之前学信号和DSP的时候,除了常见的 ...

最新文章

  1. 从FTP服务器进行文件的上传和下载
  2. 发现在创建云服务器ecs实例的磁盘快照时_【New Feature】阿里云快照服务技术解析...
  3. cuda7.0安装(嵌入式)
  4. MountFlags of reg
  5. 用Remastersys定制自己的Ubuntu安装光盘
  6. 新手常见的python报错及解决方案
  7. ps cs6 磨皮插件_DR5插件加强版 for Mac(ps磨皮滤镜)
  8. python守护线程_Python之守护线程与锁
  9. 如何通过XMind 实践OKR 工作法
  10. mysql所选路径已经存在_5分钟安装好MySQL数据库(建议收藏)
  11. 显示器不能全屏及开机慢解决方案
  12. 电视机计算机无法退出,怎么强制退出恢复模式-各大主流智能电视强制恢复出厂汇总!轻松解决疑难杂症...
  13. 微擎支付返回商户单号_扫码枪轻轻一扫,瞬间扣款,支付背后的原理原来这么简单...
  14. macbook pro 连接无线鼠标卡顿问题解决
  15. EasyX 图片透明设置
  16. sublime3怎么设置中文很简单
  17. 2.Select操作
  18. hdu5056 oring count
  19. 百度地图自定义图标icon 添加本地图片无法显示问题解决
  20. 全志 H6 Orange Pi Lite 2 Android 7.0 蓝牙配置

热门文章

  1. UiPath常用元素识别
  2. mysql数据库的简单查询一般是查询什么,MySQL的简单查询语句(十五)
  3. 【Tensorflow2.0】8、tensorflow2.0_hdf5_savedmodel_pb模型转换[1]
  4. windows11鼠标滚轮反向
  5. 步进电机、伺服电机、舵机的区别与控制(角度、转速)
  6. 通过举例彻底搞懂Matlab中max函数和min函数的用法(求最大值和最小值)
  7. java实现对接建行支付及其回调
  8. 2021年中国大企业创新百强排行榜:华为位居榜首,北京上榜企业最多(附年榜TOP100详单)
  9. maccms10自动播放下一集
  10. 基于多输入模型及句法结构的中文评论情感分析方法