精华内容
下载资源
问答
  • VC实现FIR数字信号滤波,可以分析wav文件的频谱和滤波后的频谱
  • Wav信号的录制与频谱分析程序结构录制Wav音频读取音频信号时域波形频域波形自定义函数#定义sound recoding 函数参数为录音时间t。def sound_rec(t):#定义wav文件读取函数参数为wav文件的路径path,代码中因为保存的...

    ##matlab转python实现(四)

    ##后附完整代码及windows环境下的pyaudio库的安装。

    Wav信号的录制与频谱分析

    程序结构

    录制Wav音频

    读取音频信号

    时域波形

    频域波形

    自定义函数

    #定义sound recoding 函数

    参数为录音时间t。

    def sound_rec(t):

    #定义wav文件读取函数

    参数为wav文件的路径path,代码中因为保存的录音文件就在该代码路径下,可以不用输入绝对路径。返回值为:左右声道的波形数组wave_data,采样率framerate,采样率*时间nframes

    def wave_read(path):

    #定义画出时域上的波形图函数time plot

    第一个参数为采样率,第二个参数为采样率*时间,第三个参数为左右声道的数据wave data list

    def time_plt(frames,nframes,wave):

    #定义画出信号频谱上的波形图函数frequence plot

    第一个参数为采样率,第二个参数为左右声道的数据wave data list

    def freq_plt(frames,wave):

    主要进程

    a.

    录制音频,将音频保存在文件路径下的output.wav文件中。(本步骤可以忽略,在已经录制过音频的情况下。)

    b.

    读取音频信号,将双声道信号的信息存储在数组中,并得出采样率,以及信号长度。

    c.

    做出时域上的波形图,频域上,进行傅里叶变换,单边谱处理以及归一化处理,得出频域幅度谱,最后一起显示。

    附完整代码

    import wave

    import pyaudio

    import numpy

    from pyaudio import PyAudio

    import matplotlib.pyplot as plt

    #定义sound recoding 函数,其参数为录音时间t

    def sound_rec(t):

    # 定义数据流块

    CHUNK = 1024

    FORMAT = pyaudio.paInt16

    CHANNELS = 2

    RATE = 44100

    # 录音时间

    RECORD_SECONDS = t

    # 要写入的文件名

    WAVE_OUTPUT_FILENAME = "output.wav"

    # 创建PyAudio对象

    p = pyaudio.PyAudio()

    # 打开数据流

    stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)

    print("start recording")

    # 开始录音

    frames = []

    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):

    data = stream.read(CHUNK)

    frames.append(data)

    print("done recording")

    # 停止数据流

    stream.stop_stream()

    stream.close()

    # 关闭PyAudio

    p.terminate()

    # 写入录音文件

    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')

    wf.setnchannels(CHANNELS)

    wf.setsampwidth(p.get_sample_size(FORMAT))

    wf.setframerate(RATE)

    wf.writeframes(b''.join(frames))

    wf.close()

    #定义wav文件读取函数,其参数为wav文件的路径path

    #返回值为:左右声道的波形数组wave_data,采样率framerate,采样率*时间nframes

    def wave_read(path):

    wf = wave.open(path, 'rb')

    # 创建PyAudio对象

    p = PyAudio()

    stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),

    channels = wf.getnchannels(),

    rate = wf.getframerate(),

    output = True)

    nframes = wf.getnframes()

    framerate = wf.getframerate()

    # 读取完整的帧数据到str_data中,这是一个string类型的数据

    str_data = wf.readframes(nframes)

    wf.close()

    # 将波形数据转换成数组

    wave_data = numpy.fromstring(str_data, dtype=numpy.short)

    # 将wave_data数组改为2列,行数自动匹配

    wave_data.shape = -1,2

    # 将数组转置

    wave_data = wave_data.T

    return wave_data,framerate,nframes

    #定义画出时域上的波形图函数time plot

    #第一个参数为采样率,第二个参数为采样率*时间,第三个参数为左右声道的数据wave data list

    def time_plt(frames,nframes,wave):

    # time也是一个数组,与wave_data[0]或wave_data[1]配对形成系列点坐标

    time = numpy.arange(0, nframes)*(1.0/frames)

    # 绘制波形图

    plt.figure(num=1,figsize=(6,4))

    plt.subplot(211)

    plt.plot(time, wave[0], c='r')

    plt.subplot(212)

    plt.plot(time, wave[1], c='g')

    plt.xlabel('time (seconds)')

    plt.ylabel('ampliude')

    #定义画出信号频域上的波形函数frequence plot

    #第一个参数为采样率,第二个参数为左右声道的数据wave data list

    def freq_plt(frames,wave):

    # 采样点数,修改采样点数和起始位置进行不同位置和长度的音频波形分析

    N = 44100

    start = 0 # 开始采样位置

    df = frames/(N-1) # 分辨率

    freq = [df*n for n in range(0, N)] # N个元素

    wave_data2 = wave[0][start:start+N]

    c = numpy.fft.fft(wave_data2)*2/N

    # 常规显示采样频率一半的频谱

    d = int(len(c)/2)

    # 仅显示频率在4000以下的频谱

    while freq[d] > 4000:

    d -= 10

    plt.figure(num=2,figsize=(6,4))

    plt.plot(freq[:d-1], abs(c[:d-1]), 'r')

    #sound_rec(5)

    wave,frames,nframes=wave_read('output.wav')

    time_plt(frames,nframes,wave)

    freq_plt(frames,wave)

    plt.show()

    windows下安装pyaudio库

    建议工具:一个python编辑器(用来查看你的python.exe存放的位置),windows powershell。

    首先下载一个

    直接使用pip install来安装会报错error:failed building wheel for pyaudio。

    找适合自己的版本,本机环境为window+python3.7选择了PyAudio-0.2.11-cp37-cp37m-win_amd64.whl。自己看情况选择。

    下载完后放在自己的python的Scripts文件夹下;这里找不到可以在自己的python编辑器里面找路径,会方便一点。

    之后通过powershell进入scripts文件夹下:

    ~$: cd Scripts

    ~/Scripts$: pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl

    ~/Scripts$: pip install pyaudio

    最后试用上述代码,没报错就为成功。

    展开全文
  • SpectrumView是一款音频频谱分析软件,可以帮助用户分析音频,SpectrumView提供了傅立叶变换(FFT)显示、可变标记等功能,更方便用户使用,有需要可以下载。SpectrumView是一款音频频谱分析软件,可以帮助用户分析...

    SpectrumView是一款音频频谱分析软件,可以帮助用户分析音频,SpectrumView提供了傅立叶变换(FFT)显示、可变标记等功能,更方便用户使用,有需要可以下载。

    SpectrumView是一款音频频谱分析软件,可以帮助用户分析音频,SpectrumView提供了傅立叶变换(FFT)显示、可变标记等功能,更方便用户使用,有需要可以下载。

    软件特色

    1、具有非常丰富的界面,并且具有许多功能。启动应用程序后,您需要做的第一件事是从设备加载.wav文件。

    2、数据显示在频域中,图表上的每个数据点代表音频频谱中的一个频率点。它带有更改光标的选项,并在屏幕上显示其频率。

    3、它显示峰值频率(每格Hz),您可以启用多个标记。在图形和瀑布模式下,标记都是显示屏上的垂直线。可以在显示屏上移动这些行,以确定变换大小和缩放级别。

    4、它具有一些可以调整的设置,可以与显示模式一起更改背景色。通过单击“单个”按钮来分析文件,这将启动程序以捕获单个音频数据块。

    5、此外,您需要启用触发器并调整采样率。过程增益可以与参考水平一起更改。完成分析后,可以将表单,图形或位图保存在计算机上。

    功能介绍

    1、用于分析从计算机声卡捕获的WAVE文件和音频数据。

    2、分析10 Hz至20 kHz的音频。

    3、来自麦克风或波形文件的输入。

    4、快速傅立叶变换(FFT)显示。

    5、可变采样率(8000 Hz,11025 Hz,22050 Hz,44100 Hz)。

    6、可变换大小(1k,2k,4k,8k)。

    7、连续,平均,峰值保持。

    8、可选的前景/背景。

    9、保存参考图,与前景图比较。

    10、时间显示(示波器)。

    11、瀑布显示(彩色或黑白)。

    展开全文
  • 将音频文件改成.wav后缀名的,才能被MATLAB读出,我写的这个程序直接把file替换掉,然后再导入数据到工作区间就能运行了。
  • wav格式的音频信号的时域和时频谱分析

    万次阅读 热门讨论 2018-04-12 11:06:47
    首先,录入文件[wave,f]=audioread('文件路径及名称.wav');wave存储为音频信号的时域波形幅度值,f为采样频率n=length(wave);n为文件总采样点数t=(1:n)/(f*60);将时间轴变为以分钟为单位,这步可自行改变画时域波形...

    首先,录入文件

    [wave,f]=audioread('文件路径及名称.wav');

    wave存储为音频信号的时域波形幅度值,f为采样频率

    n=length(wave);

    n为文件总采样点数

    t=(1:n)/(f*60);

    将时间轴变为以分钟为单位,这步可自行改变


    画时域波形图

    subplot(211);
    plot(t,wave);

    %axis([1 n/(f*60) -0.01 0.01]);

    上步为调节横纵轴的显示范围

    xlabel('Time(min)');
    ylabel('Amplitude');

    画时频谱图
    subplot(212);
    [S, F, T] = spectrogram(wave, hanning(1024), 512, 1024, f);

    tt=T/60;

    将时间轴变为以分钟为单位

    Ff=F/1000;

    将频率轴变为以kHz为单位

    imagesc(tt, Ff, log10(abs(S)));
    set(gca, 'YDir', 'normal');
    xlabel('Time(min)');
    ylabel('Frequency(kHz)');

    %axis([0 10 0 16]);


    最终显示图:


    展开全文
  • 信号与系统:用matlab分析wav音频的频谱2018-11-25【天水浪客一门课程的平时作业,matlab确实强大,用它做这个有点杀鸡用牛刀的意味...软件太大了,直接靠安装了此软件的同学搞定,程序也是参考网上的资料... 惭愧 ....

    信号与系统:用matlab分析wav音频的频谱

    2018-11-25

    【天水浪客一门课程的平时作业,matlab确实强大,用它做这个有点杀鸡用牛刀的意味...软件太大了,直接靠安装了此软件的同学搞定,程序也是参考网上的资料... 惭愧 ... 但总算是弄完了。发上来供后人借鉴吧 ...

    matlab7下载(1.01G):

    http://www.21ft.com/ftpsite/incoming/matlab7.ISO

    1、下载后用虚拟光驱安装(天水浪客补:别弱到看成压缩包了)。

    2、序列号是13-22955-32678-26249-06848-40366-39620-03472-09765-20949-30945-19673-43738-38950-44548

    3、关于matlab自动关闭的问题:

    这个问题是和CPU有关系,MATLAB要用到CPU的数学计算模块,而MATLAB默认的是INTEL的CPU,所以速龙或者是闪龙的CPU一般都会遇到安装好后打开自动关闭的问题.

    解决办法:

    先确认安装好后(假如安装在D盘)在此路径下D:\MATLAB7\bin\win32有一个叫做atlas_Athlon.dll的文件.

    然后在我的电脑上右击点"属性",再在"高级"中点"环境变量",在"系统变量"中点击"新建"

    输入以下信息: 变量名:BLAS_VERSION

    变量址:D:\MATLAB7\bin\win32\atlas_Athlon.dll】

    分析一个.wav文件的频谱

    分析的是ZR33.wav

    程序:

    [y,Fs,bits]=wavread("ZR33.wav");

    y=y(:,1);

    sigLength=length(y);

    Y = fft(y,sigLength);

    Pyy = Y.* conj(Y) / sigLength;

    halflength=floor(sigLength/2);

    f=Fs*(0:halflength)/sigLength;

    figure;plot(f,Pyy(1:halflength+1));xlabel("Frequency(Hz)");

    t=(0:sigLength-1)/Fs;

    figure;plot(t,y);xlabel("Time(s)");

    免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

    http://www.pinlue.com/style/images/nopic.gif

    展开全文
  • vc++源代码 频谱分析器vc++源代码 频谱分析器vc++源代码 频谱分析器vc++源代码 频谱分析器vc++源代码 频谱分析器vc++源代码 频谱分析器vc++源代码 频谱分析
  • 题1周期信号频谱分析 题目给定输入信号x(n)为一周期信号含基波及若干次谐波分量 要求1给出信号基波频率及谐波个数 2基波及各个谐波信号的相位和幅值 clear clc A = [ 0.25 0.5 0.25 ]; f = [1 2 4]; fi = [0 0.5*pi ...
  • Python RF频谱分析仪 从某些来源获取数字化的IQ样本,以提供实时频谱和频谱图。 所有样本都用于FFT。 提供短突发信号的检测。 具有用于信号源和频谱分析的插件架构。 可以快照IQ样本以在事件(当前为手动触发)...
  • Qt显示WAV音频文件的波形图频谱图 https://blog.csdn.net/yulinxx/article/details/110651967
  • VB版DWL声音频谱分析仪(示波器)  VB开发的简单DWL声音频谱分析仪,也就是声音示波器,直接加载WAV文件或通过麦克风就可实时分析声音信息,并显示出声音频谱图。
  • 一个关于对.wav 声音信号的频谱分析,用matlab里面的gui 做的,可供参考,一个关于对.wav 声音信号的频谱分析,用matlab里面的gui 做的,可供参考
  • matlab 读取.wav文件并绘制频谱

    千次阅读 2021-05-29 11:28:46
    [wav,fs]=audioread('./bed1.wav'); n=length(wav); amp=abs(fft(wav))/n*2; amp2=amp(1:n/2); f=fs/n-1:fs/n:fs/2-1; plot(f,amp2);
  • Python 读取WAV文件import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wavefile = wave.open(filename, 'r') # open for ...
  • Python 读取WAV文件import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wavefile = wave.open(filename, 'r') # open for ...
  • import wave import numpy from pyaudio import PyAudio import matplotlib.pyplot as plt from matplotlib.ticker ...wf = wave.open('e:/tests/audio2miditest.wav', 'rb') # 创建PyAudio对象 p = PyAudio() str...
  • 用DFT(FFT)对连续信号进行频谱分析用DFT(FFT)对模拟信号做谱分析是一种近似的谱分析。首先一般的模拟信号(周期信号除外)的频谱是连续谱,而用FFT做谱分析得到的是数字谱,因此应该取FFT的点数多一...
  • 基于MATLAB的声音信号频谱分析的课程设计.doc基于 MATLAB 的声音信号频谱分析组号11 组1 课程设计目的综合运用数学信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程...
  • 它使用频谱建模技术进行参数化声音分析和合成。 在分析阶段,先完成STFT(使用libfftw进行FFT),然后进行谐波/正弦分析。 对于合成阶段,使用添加剂合成。 使用libsndfile进行声音加载和保存可以支持许多未压缩的...
  • 信号的频谱分析,加噪降噪处理

    千次阅读 2020-01-09 23:02:38
    信号的频谱分析,加噪降噪处理 一、题目: 说一段话并录音:信号与系统真有趣,我爱信号与系统,我爱学习。 (1)用Matlab读取语音信号,理解信号含义及抽样频率的含义,并绘制语音信号时域波形。 (2) 语音信号频谱...
  • 文章目录一、实验目的二、实验过程与结果1、数字音频信号的频谱分析2、 数字音频信号的频谱分析3、 数字和弦音频信号的生成三、结果分析与实验结论1、读数字音频信号的频谱分析2、数字和弦音频信号的生成 ...
  • 电子信息工程系实验报告课程名称: 数字信号处理成 绩: 实验项目名称:实验4 用DFT(FFT)对连续信号进行频谱分析 时间:2012-5-5指导教师(签名): 班级:电信092 姓名:XXX 学号:910706201实 验 目 的:1、掌握用DFT...
  • 基于python的音频设计及频谱分析

    千次阅读 2021-01-14 06:46:30
    74 Internet Technology 互联网 + 技术 一、引言 WAV 是 Microsoft 开发的一种声音文件格式,虽然它支持多种压缩格式,但是它通常被用来保存未压缩的声音数据(PCM 脉冲编码调制 )。WAV 有三个重要的参数:声道数、...
  • 使用频谱分析和傅立叶变换将语音与保存的 .wav 文件正确匹配。 在这个项目中,我利用 MATLAB 和我对图像傅里叶变换的理解……将其转换为波形数据以分析波谱模式,将语音笔记与保存的扬声器文件进行比较。 注 - 要...
  • HTML5 频谱分析

    2021-06-28 09:52:02
    JavaScript语言:JaveScriptBabelCoffeeScript确定window.addEventListener('load', function() {var m = document.querySelector('.wav> div').getBoundingClientRect().height;var s = 500;var t = 5;// ...
  • 数字信号处理课程设计---应用 Matlab对信号进行频谱分析及滤波 课课 程程 设设 计 (论文) 报计 (论文) 报 告告 书书 课程名称课程名称 数字信号处理 题题 目目 应用Matlab 对信号进行频谱分析及 滤波 分分 院院 电 ...
  • 基于MATLAB的信号频谱分析及实现数 字 信 号 处 理课程设计题目: 基于MATLAB的信号频谱分析及实现学院: 信息工程专业: 通信工程班级: 1001学号: 2010013448, 2010013466姓名: 常珍珍 , 彭婷指导教师: 符茂...
  • 音频频谱分析,快速傅里叶变换

    热门讨论 2009-06-26 15:48:01
    音频频谱分析,接收麦的声音,快速傅里叶变换得频谱,基于对话框。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,953
精华内容 781
关键字:

wav频谱分析