python使用wave和matplotlib生成和绘制wav文件

python音频分析(一)绘制wav的时域频域图 python音频分析(一)绘制wav的时域频域图 一.引入 时域图:x轴为时间,y轴为振幅 频域图:x轴为频率,y轴为振幅 (上述频域图为线性振幅谱,还另有对数振幅谱、自功率谱,y轴不是单纯振幅) 时域与频域的直观关系见下图 二.画时域图 1.读入wav文件 (pyaudio.PyAudio) 2.波形数据转换为数组 (numpy.frombuffer ) 3.构建横坐标 (numpy.aran... 阅读详情
#!/usr/bin/env python3
import numpy as np
from scipy.io import wavfile
import numpy as np
import matplotlib.pyplot as plt
import wave
import os

#frame_rate:采样率  frequency:频率 length:文件时长秒
def generate_sin_wave(filepath:str, frame_rate:int, freq:int, length:int):
    
    #生成正弦
    t_points = np.linspace(0, length, frame_rate * length)  #start, stop, number
    amplitude_points = np.sin(freq * 2 * np.pi * t_points)  #  
    
    #处理数据,从[-1,1]转化为[-2**15-1, 2**15-1] 
    max_of_amplitude = np.max(np.abs(amplitude_points))
    maxint16 = np.iinfo(np.int16).max  # == 2**15-1
 
    print('max_of_amplitude:%f, maxint16:%f' %(max_of_amplitude, maxint16))
     
    # 转换
    amplitude_points =  amplitude_points * maxint16 / max_of_amplitude

    #将数组的数据类型转换为指定的类型:int16
    amplitude_points = amplitude_points.astype(np.int16) 

    #写入文件
    wavfile.write(filepath, frame_rate, amplitude_points)

    print("generate sin wave file successfully, written to:" + filepath )

#maxshow这个值怎么设都不会有问题
def visualize_wave(filepath: str, maxshow:int, spectrum:bool): 
    
    # 设置figure大小  像素
    plt.figure(figsize = (12, 8), dpi = 100)
        
    # reading the audio file 
    wavefile = wave.open(filepath) 
    params = wavefile.getparams()

    nchannels, sample_width, frame_rate, nframes = params[:4]
    
    print('nchannels:%d, sample_width:%d, sample_rate:%d, nframes:%d'
          % (nchannels, sample_width, frame_rate, nframes))
    
    # reads all the frames  
    # -1 indicates all or max frames 
    signal = wavefile.readframes(-1) 
    signal = np.frombuffer(signal, dtype = np.int16) 
      
    # gets the frame rate 
    frame_rate = wavefile.getframerate() 
  
    # to Plot the x-axis in seconds  
    # you need get the frame rate  
    # and divide by size of your signal 
    # to create a Time Vector  
    # spaced linearly with the size  
    # of the audio file 
    time = np.linspace( 
        0, # start 
        len(signal) / frame_rate, 
        num = len(signal) 
    ) 
      
    # title of the plot 
    plt.title("Sound Wave") 
      
    # label of x-axis 
    plt.xlabel("Time") 
    
    # label of y-axis 
    plt.xlabel("Amplitude") 
    
    #切片,太多了显示不了,显示最初的2000个采样
    points = len(time)
    if points > maxshow :
        time = time[0:maxshow:1]
        signal = signal[0:maxshow:1]
    
    # actual plotting 
    if spectrum:
        plt.specgram(signal, Fs=sample_rate, vmin=-20, vmax=50)
        plt.colorbar()
    else:
        plt.plot(time, signal) 
    
    
    # shows the plot  
    # in new window 
    plt.show() 
  
    # you can also save 
    # the plot using 
    # plt.savefig('filename')
    
if __name__ == "__main__": 
    
    rootpath = "./generated"
    if not os.path.exists(rootpath):
        os.mkdir(rootpath, mode=755)
    
    filepath = rootpath + "/sine.wav"
    generate_sin_wave(filepath, 16000, 600, 10)
    visualize_wave(filepath, 1000, False)
    
    
    sample_filepath = rootpath + "/file_example_WAV_1MG.wav" #
    if os.path.exists(sample_filepath):
        visualize_wave(sample_filepath, 30000, False)
    
    

Python绘制wav文件音频图(静态)[matplotlib/wave] Python绘制wav文件音频图(静态)[matplotlib/wave] #!/usr/bin/env python # -*- coding: utf-8 -*- """ 绘制波形图 plottingWaveform.py """ import wave import pylab as pl import numpy... 阅读详情

相关推荐

python生成特定频率、特定音量的正弦波wav文件(升级版)

第一版:https://mp.youkuaiyun.com/postedit/102664748 import wave import numpy as np import struct import matplotlib.pyplot as plt import math #from compiler.ast import flatten #db = 0 print ("math.pow(10, -...

qingfengjuechen的专栏 3552

wav文件生成代码

/ = 数据传输速率(每秒平均字节数):声道数×采样频率×每样本的数据位数/8。// = 每采样点字节数 : 声道数×位数/8。// = 常见的 WAV 文件使用 PCM 脉冲编码调制格式,该数值通常为 1。// = 采样位数: 存储每个采样值所用的二进制数位数, 8 | 16。

dp__mcu的专栏 512

python读取wav时频谱绘制

python进行.wav格式声音文件的读取,并进行时域和频谱的图的绘制

WaveFile: 一个用于读取、写入和操作WAV文件的Python库

WaveFile: 一个用于读取、写入和操作WAV文件的Python库 项目简介 WaveFile是一个开源的Python库,它提供了一个简单易用的API,可以用来读取、写入和操作WAV文件。该项目由James Strait开发,并在GitCode上发布。 应用场景 WaveFile库适用于需要处理音频数据的各种应用场景。例如: 音频分析:使用WaveFile库读取WAV文件,并对音频信号进行各...

gitblog_00007的博客 853

python-wavefile:通过Python方式访问音频文件

Pythonic libsndfile包装器,用于读取和写入音频文件。 特征 作家和读者对象是上下文管理器 格式,通道,长度,采样率...可以作为属性以及文本字符串进行访问 真正的多声道(不仅仅是单声道/立体声) 支持所有libsndfile格式,默认情况下为浮点编码 基于Numpy的界面 用于逐块读取的生成器 读取会重用同一数据块,以避免分配大量数据 缩短格式的常量名称(使用范围而不是前缀) 类似于Matlab的全文件界面(在生产代码中不建议使用,但对于快速编写脚本非常方便) 透明的UTF-8处理文件名和文本字符串 无需模块编译(使用ctypes包装dll) 兼容Python> = 2.6,包括Python3 您可以在以下位置找到最新版本: : 愿望清单 智能格式选择器 如果未指定,则使用文件扩展名推断主要格式 如果未指定,则使用主格式推导子格式 格式列举 将格式范围分为格

二阶FLL辅助三阶PLL环路的代码解读

今天对GNSS接收机里面的载波跟踪环路代码进行了解读 以下是个人的一点见解 % 载波环第二步:环路滤波器 二阶FLL辅助三阶PLL环路 carrLoopS0 = lastCarrLoopS0 + (phaseErr*tau0PLL + freqErr*tau1FLL) * PDIcarr; carrLoopS1 = lastCarrLoopS1 + (tau1PLL*phaseErr + carrLoopS0 + tau2FLL*freqErr) * PD

LWN7321的博客 2628

一个wav文件生成类

 下面是我写的一个wav文件生成类,wav文件的格式参照此链接:https://ccrma.stanford.edu/courses/422/projects/WaveFormat///WAVWriter.h#pragma oncestruct WAVRIFFChunk{    char    id[4];      

Rare's Tech-Blog 1201

从零到一:Silvaco中跨导曲线的自动化脚本实现

本文详细介绍了如何使用Python脚本在Silvaco中实现跨导曲线(gm曲线)的自动化分析,包括数据加载、跨导计算和结果可视化。通过自动化处理Id-Vg曲线,显著提升半导体器件工程师的工作效率,特别适用于工艺优化和DOE分析。文章还提供了批量处理和关键参数提取的高级技巧,帮助工程师快速掌握Silvaco脚本开发。

nn3456的博客 565

python系列:Python 从零开始制作自己的声音 - wave模块读写wav文件详解

Python 从零开始制作自己的声音 - wave模块读写wav文件详解

weixin_54626591的博客 1392

安装和使用pandoc

支持 Markdown、DOCX、LaTeX、HTML、PDF、EPUB 等 60+ 种格式 的互相转换

PLANTTHESON的博客 6827

[UE5蓝图基础二]1.[1d混合空间] 走和跑的动画切换(shift切换)

再双击”run”进去 我们需要给他指定一个动画姿势,这里就需要给他我们前面做的”1d”混合空间,然后可以看到”1d” 上有个speed参数,代表的速度 从前面的逻辑来看需要通过控制速度来切换动画,那么必然不能写死速度,把速度提升为变量传递进来即可,所以就得到以下蓝图节点。混合空间的概念:混合空间就是可以将角色多个动画混合在一起 ,我们创建动画类就是创建个”Animation”文件夹 在文件夹内创建混合空间。我们目前要实现的是一个走和跑的功能 那么创建1d即可。到这一步混合空间已经做完 下一步做”动画蓝图”

qq_30584617的博客 3299

python对wav音频可视化

文章目录前言一、导入包以及音频文件二、信号+傅里叶变换 前言 本文主要是使用代码实现音频文件(wav)的多种可视化。 1.信号 2.傅里叶变换 3.Mel(梅尔)谱图 4.log_Mel谱图 提示:以下是本篇文章正文内容,下面案例可供参考 一、导入包以及音频文件 为了便于展示,我将信号和傅里叶变换使用plt组合在一起进行展示。 import matplotlib.pyplot as plt import librosa import librosa.display import numpy as np

clownwai的博客 1万+

【Unity实战篇】| 游戏轮播图效果,多种实现思路及完整教程

在众多游戏的主界面、商城、图鉴或关卡选择界面中,我们常常能看到轮播图的身影。 它以动态、直观的方式展示游戏角色、皮肤、成就或场景,不仅极大地提升了界面的美观度和交互性,还能高效地引导玩家聚焦于核心内容。 本篇文章将从零开始,一步步在Unity中构建一个功能完备、性能优良的游戏轮播图。 使用UGUI系统,通过代码驱动,实现包括自动轮播、手动拖拽、分页指示器、无限循环等核心功能。 无论是UI新手还是希望优化现有方案的开发者,这篇文章都将为你提供清晰的思路和完整的解决方案。

努力前行,总会成为自己心中的那道光 4万+

python时频图_怎样用python画wav文件的时频分析图

2018-11-22 回答这是python的matplotlib里的一个画wav文件的时频分析(specgram)的函数。和matlab里的那个差不多。使用超级方便,自动就做好了短时傅立叶变换(shorttime fouriertransform)~函数用法具体可参照http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.p...

weixin_30707165的博客 1594

【我的Android进阶之旅】异常: Problems reading data from Binary store in Local\Temp\gradlexxx.bin (exist: true)

一、异常描述 今天开个会议,电脑自动关机了,重启电脑之后,打开Android Studio,编译代码,就编译失败,如下所示:异常提示 : Caused by: java.lang.RuntimeException: Problems reading data from Binary store in C:\Users\000\AppData\Local\Temp\gradle6337489649031706149.bin (exist: true) Caused by: java.lang.Runtime

字节卷动 3821

39、高频 LLC 谐振转换控制系统动态优化算法分析与研究

本文针对高频下LLC谐振转换器动态性能差的问题,提出一种基于谐振电容器充放电估计动态切换时间的优化控制算法。通过改进状态轨迹控制方法,突破传统算法在谐振频率与开关频率相等条件下的限制,并结合新型采样策略有效抑制电压过冲。算法在MATLAB和SABER中完成仿真验证,并搭建基于STM32F407的原型系统进行测试,结果表明该方法显著缩短动态响应时间,提升系统稳定性。研究为高频、高功率密度开关电源的动态优化提供了可行解决方案。

linux6sysadmin的博客 110

python绘画音频_Python 读取WAV音频文件 画频谱的实例

Python 读取WAV音频文件 画频谱的实例发布时间:2020-08-27 11:59:30来源:脚本之家阅读:98作者:daiyingerPython 读取WAV文件import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wav...

weixin_39863161的博客 275

热力学仿真软件:SimScale_(1).SimScale入门与基础操作

导航栏:位于页面顶部,包含项目管理、仿真设置、结果分析等主要功能。项目列表:展示用户创建的所有项目。工作区:用于进行具体的操作,如几何建模、网格划分、边界条件设置等。控制台:显示操作日志和仿真进度。网格划分是将几何模型离散化为一系列小单元的过程,这些单元用于求解热力学方程。SimScale提供了多种网格划分方法,包括结构化网格和非结构化网格。SimScale提供了丰富的API接口,用户可以通过编程语言进行二次开发,实现自动化仿真和结果分析。项目管理:创建、删除和管理项目。几何建模:创建、导入和修复几何模型。

kkchenjj的博客 1863

python实现wav的频域_Python 读取WAV音频文件 画频谱的实例

Python 读取WAV文件import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wavefile = wave.open(filename, 'r') # open for writing#读取wav文件的四种信息的函数。期中n...

weixin_39755824的博客 398

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python绘制实时波形图_使用python进行波形及频谱绘制的方法

# -*- coding: UTF-8 -*-import waveimport numpy as npimport matplotlib.pyplot as plt# 打开wav文件 ,open返回一个的是一个Wave_read类的实例,通过调用它的方法读取WAV文件的格式和数据。f = wave.open(r"D:\project\REC001.wav","rb")# 读取格式信息# 一次性返...

weixin_39613839的博客 4844

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

使用python进行波形及频谱绘制

# -*- coding: UTF-8 -*- import wave import numpy as np import matplotlib.pyplot as plt # 打开wav文件 ,open返回一个的是一个Wave_read类的实例,通过调用它的方法读取WAV文件的格式和数据。 f = wave.open(r"D:\project\REC001.wav","rb") # 读取格式...

sinat_29242905的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Python解析Wav文件并绘制波形的方法

资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载(石进-夜的钢琴曲) 前言 在现在繁忙的生活中,我们经常会听些歌来放松一下自己,我们经常会从各种播放软件中听自己喜欢的歌,并且往往我们会下载一部分歌曲,而现在音频的种类也相当繁多,像是Wav,Mp3,FLAC,AAC等...

weixin_30729609的博客 1707

使用python绘制wav 音频文件频谱图

使用python绘制wav 音频文件频谱图

es15071848238的博客 7919

python画波形图_使用python进行波形及频谱绘制的方法

如下所示:# -*- coding: UTF-8 -*-import waveimport numpy as npimport matplotlib.pyplot as plt# 打开wav文件 ,open返回一个的是一个Wave_read类的实例,通过调用它的方法读取WAV文件的格式和数据。f = wave.open(r"D:\project\REC001.wav","rb")# 读取格式信息#...

weixin_39851408的博客 8535

python方波绘制_使用python进行波形及频谱绘制的方法

如下所示:# -*- coding: UTF-8 -*-import waveimport numpy as npimport matplotlib.pyplot as plt# 打开wav文件 ,open返回一个的是一个Wave_read类的实例,通过调用它的方法读取WAV文件的格式和数据。f = wave.open(r"D:\project\REC001.wav","rb")# 读取格式信息#...

weixin_39908462的博客 2749
上一篇: 虚拟机调用摄像头设备一直 select timeout问题的解决
下一篇: WSL ubuntu升级到最新版CMake
dotphoenix
博客等级 码龄19年 208粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值