Phase Sensitive Filter

复数转换

如下图复数Z=a+bi,由于a=rcos\Theta, b=rsin\Theta,所以Z=r(cos\Theta +isin\Theta),这个就是复数的三角形式

这里r=\sqrt{a^2+b^2},是模,\Theta=arctan(\frac{b}{a}),是辅角。在讨论音频频域,即stft变换后的复数时,分别称为幅值和相位。

根据欧拉公式e^{ix}=cosx+isinx(其中i是虚数符号),可得Z=re^{i\Theta},这个公式可以方便地把幅值和相位还原回复数,进而做istft,将频域信息转回到时域,即wave波形。

PSF推导

参考论文:PHASE-SENSITIVE AND RECOGNITION-BOOSTED SPEECH SEPARATION USING DEEP RECURRENT NEURAL NETWORKS

记clean(论文里叫做speech)的fft结果为s,是复数域;记noisy(即clean加noise)的fft结果为y,是复数域。

则可以定义如下filter(或者叫mask):

mask/filterformula(指网络的输出。把网络的输出和y做点乘,得到estimated s,即\hat{s};或者把输出和|y|做点乘法,得到estimated |s|,即|\hat{s}|。其中\hat{s}包含相位,|\hat{s}|使用y的相位)
ideal amplitude filtera^{iaf}=\tfrac{|s|}{|y|}
ideal complex filtera^{icf}=\tfrac{s}{y}
phase sensitive filtera^{psf}=\tfrac{|s|}{|y|}cos(\Theta ),推导过程如下

a^{psf}其实是a^{icf}的实部(这样模型输出的就是实数,而不是复数,可以简化模型,因为当前pytorch不支持复数域的反向求导),因此用法和a^{psf}一样,即把网络输出的filter与y的实部虚部分别点乘。

a^{psf}的推导过程:a^{psf}=Re(a^{icf})=Re(\tfrac{s}{y})。根据上文的公式Z=r(cos\Theta +isin\Theta),可得s=r_s(cos\Theta_s +isin\Theta_s),y=r_y(cos\Theta_y +isin\Theta_y),因此\tfrac{s}{y}=\tfrac{r_s}{r_y}\tfrac{cos\Theta_s+isin\Theta_s}{cos\Theta_y+isin\Theta_y}=\tfrac{r_s}{r_y}\tfrac{e^{i\Theta_s}}{e^{i\Theta_y}}。这里r就是复数的模,因此\tfrac{s}{y}=\tfrac{|s|}{|y|}\tfrac{e^{i\Theta_s}}{e^{i\Theta_y}}=\tfrac{|s|}{|y|}e^{i(\Theta_s-\Theta_y)},记\Theta=\Theta_s-\Theta_y,则\tfrac{s}{y}=\tfrac{|s|}{|y|}e^{i\Theta}=\tfrac{|s|}{|y|}(cos\Theta+isin\Theta),因此a^{psf}=Re(\tfrac{s}{y})=Re(\tfrac{|s|}{|y|}(cos\Theta+isin\Theta))=\tfrac{|s|}{|y|}cos\Theta

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值