傅里叶变换音频加入噪声和去除噪声(python二维fft2,ifft2)

这篇具有很好参考价值的文章主要介绍了傅里叶变换音频加入噪声和去除噪声(python二维fft2,ifft2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

标准快速傅立叶变换

fft (a) [, n, axis, norm] )

计算一维离散傅立叶变换。

ifft (a) [, n, axis, norm] )

计算一维逆离散傅立叶变换。

fft2 (a) [, s, axes, norm] )

计算二维离散傅里叶变换。

ifft2 (a) [, s, axes, norm] )

计算二维逆离散傅立叶变换。

fftn (a) [, s, axes, norm] )

计算n维离散傅立叶变换。

ifftn (a) [, s, axes, norm] )

计算N维逆离散傅立叶变换。

实数傅立叶变换

rfft (a) [, n, axis, norm] )

计算实际输入的一维离散傅立叶变换。

irfft (a) [, n, axis, norm] )

计算 rfft .

rfft2 (a) [, s, axes, norm] )

计算实数组的二维FFT。

irfft2 (a) [, s, axes, norm] )

计算 rfft2 .

rfftn (a) [, s, axes, norm] )

计算实际输入的N维离散傅立叶变换。

irfftn (a) [, s, axes, norm] )

计算 rfftn .

埃尔米特快速傅里叶变换

hfft (a) [, n, axis, norm] )

计算具有赫米特对称性的信号的FFT,即真实频谱。

ihfft (a) [, n, axis, norm] )

计算具有厄米特对称性的信号的逆FFT。

助手例程

fftfreq n(n) [, d] )

返回离散傅立叶变换采样频率。

rfftfreq n(n) [, d] )

返回离散傅立叶变换采样频率(用于rfft、irfft)。

fftshift (x) [, axes] )

将零频率分量移到频谱中心。

ifftshift (x) [, axes] )

逆 fftshift .

 本文主要对仙侠风音乐加入噪声,并去除噪声

资源文件名:spring.wav

资源完整路径:https://github.com/fengjun321/noise.git

核心代码:test3.py

若资源文件失效,可去百度下载别的wav格式音乐代替spring.wav

# 用于保存音频
import wave
#数学库
import numpy as np
import matplotlib.pyplot as plt

#中文支持和布局调整
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['figure.figsize']=(15,8)

plt.subplots_adjust(left=None, bottom=None, right=None, top=None,
                wspace=0.5, hspace=0.5)

def saveAudio(filename,data,params):
    with wave.open(filename + '.wav', 'wb') as wavfile:
        print(params)
        wavfile.setparams(params)
        wavfile.writeframes(bytes(data))

def wavread(path):
    wavfile = wave.open(path, "rb")
    params = wavfile.getparams()
    print(params)

    framesra, frameswav = params[2], params[3]
    datawav = wavfile.readframes(frameswav)
    wavfile.close()
    datause = np.frombuffer(datawav, dtype=np.short)
    datause.shape = -1, 2
    datause = datause.T
    time = np.arange(0, frameswav) * (1.0 / framesra)
    return datause, time, params

path = r"spring.wav"
wavdata, wavtime, params = wavread(path)

noise=np.random.rand(len(wavdata[0]))

noise_music = wavdata.copy() + noise
saveAudio("加噪后_spring", noise_music, params)

transformed=np.fft.fft2(noise_music)

avg1 = np.max(abs(transformed[0][1:]))/10000
avg2 = np.max(abs(transformed[1][1:]))/10000
transformed[0][np.where(abs(transformed[0])<=avg1)]=0+0j
transformed[1][np.where(abs(transformed[1])<=avg2)]=0+0j

noise_music = np.fft.ifft2(transformed).astype(int) #astype(int)很重要,过滤掉浮点过小信号

plt.subplot(231)
plt.title("原音频时序")
plt.plot(wavdata[0][4000:4500])

plt.subplot(232)
plt.title("原音频频域")
plt.plot(np.fft.fft(wavdata[0][4000:4200]))

plt.subplot(233)
plt.title("噪声音频时序")
plt.plot(noise_music[0][4000:4500])

plt.subplot(234)
plt.title("噪声音频频域")
plt.plot(np.fft.fft(noise_music[0][4000:4200]))

plt.show()
saveAudio("还原后_spring", noise_music, params)

效果图对比

傅里叶变换音频加入噪声和去除噪声(python二维fft2,ifft2)

不足之处,没在图片明显看出噪声,因为噪声振幅小,不易于观察。读者可直接运行代码,生成对应音频文件,音效播放对比明显。 文章来源地址https://www.toymoban.com/news/detail-409010.html

到了这里,关于傅里叶变换音频加入噪声和去除噪声(python二维fft2,ifft2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 傅里叶变换及应用python版(2)

    欢迎关注公众号:sumsmile /专注图形学 起初,只是想弄清楚2D图像的频谱图的含义,没想到越肝越深,前后肝了一个多月。 接《傅里叶变换及应用python版(1)》,这篇主要讲代码,通过几个典型的案例,直观的理解傅里叶变换 代码参考教程: https://www.bilibili.com/video/BV1X8411a74G/?v

    2024年02月02日
    浏览(49)
  • Python图像处理笔记——傅里叶变换

    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。(灰度变化得快频率就高,灰度变化得慢频率就低)。傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。 傅立叶变换的物理意义: 将图像的灰度分布函数

    2024年02月08日
    浏览(47)
  • Python轴承故障诊断 (一)短时傅里叶变换STFT

    目录 前言 1 短时傅里叶变换STFT原理介绍 1.1 傅里叶变换的本质 1.2 STFT概述 1.3 STFT的原理和过程 1.3.1 时间分割 1.3.2 傅里叶变换 1.3.3 时频图: 1.4 公式表示 2 基于Python的STFT实现与参数对比 2.1 代码示例 2.2 参数选择和对比 2.2.1 nperseg(窗口长度): 2.2.2 noverlap(重叠长度): 2

    2024年02月03日
    浏览(46)
  • Python中利用FFT(快速傅里叶变换)进行频谱分析

    本文将从实例的角度出发讲解fft函数的基本使用,不包含复杂的理论推导。 要对一个信号进行频谱分析,首先需要知道几个基本条件。 采样频率fs 信号长度N(信号的点数) 采样频率fs: 根据采样定理可知,采样频率应当大于等于被测信号里最高频率的2倍,才能保证不失真

    2024年01月17日
    浏览(52)
  • Python-OpenCV中的图像处理-傅里叶变换

    傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性。实现 DFT 的一个快速算法被称为快速傅里叶变换( FFT)。 对于一个正弦信号:x (t) = A sin (2πft), 它的频率为 f,如果把这个信号转到它的频域表示,我们会在频率

    2024年02月12日
    浏览(62)
  • OpenCV-Python中的图像处理-傅里叶变换

    傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性。实现 DFT 的一个快速算法被称为快速傅里叶变换( FFT)。 对于一个正弦信号:x (t) = A sin (2πft), 它的频率为 f,如果把这个信号转到它的频域表示,我们会在频率

    2024年02月12日
    浏览(42)
  • (数字图像处理MATLAB+Python)第四章图像正交变换-第一节:离散傅里叶变换

    一维离散傅里叶变换(Discrete Fourier Transform,DFT) :是一种数学技术,用于将代表离散时间信号的N个复数序列从 时域转换到频域 。DFT被广泛用于许多应用,如音频和图像处理、通信和控制系统。DFT是傅里叶变换的离散版本,傅里叶变换是一种用于分析频域信号的连续数学技

    2023年04月13日
    浏览(94)
  • python数字图像处理基础(七)——直方图均衡化、傅里叶变换

    均衡化原理 图像均衡化是一种基本的图像处理技术,通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域在输出图像中获得更高的对比度。 简单理解:改变图像对比度,让色彩更丰富,灰度值直方图:瘦高 - 均衡 本质上,直方图均衡

    2024年01月18日
    浏览(57)
  • 跟我学Python图像处理丨傅里叶变换之高通滤波和低通滤波

    摘要: 本文讲解基于傅里叶变换的高通滤波和低通滤波。 本文分享自华为云社区《[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波》,作者:eastmount 。 傅里叶变换的目的并不是为了观察图像的频率分布(至少不是最终目的),更多情况下是为了对频率进行过滤,

    2024年02月04日
    浏览(53)
  • python:使用Scikit-image对遥感影像进行傅里叶变换特征提取(fourier)

    作者:CSDN @ _养乐多_ 在本博客中,我们将介绍如何使用Scikit-Image来进行傅里叶变换特征提取(fourier),并且提供一个示例代码,演示了如何在单波段遥感图像上应用这些方法。 傅里叶变换特征提取是一种数学工具,用于将图像中的细节、纹理和边缘信息以不同频率的方式呈

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包