精华内容
下载资源
问答
  • 2020-08-21 16:59:38

    功能

    可读、写wav类型的音频文件。

    使用

    1.打开wav类型文件

    wave.open(file, mode=None),file为文件地址,mode为打开模式,调用后返回一个Wave_read Objects或Wave_write Objects:

    • mode = ‘rb’ 只读 ,mode = ‘wb’ 只写,缺省时可读写
    • 通常用在with语句中,当with语句结束时,将自动执行Wave_read.close() or Wave_write.close(),即自动关闭文件。

    2.读取wav音频信息

    打开wav文件后,假设使用了with wave.open(file) as f:,可使用以下方法读取信息:

    • f.getnchannels() 返回声道
    更多相关内容
  • python--wave库的使用

    千次阅读 2021-01-28 13:09:31
    wave–音频文件操作 wav文件详解 1、wav文件是基于windows平台的音频资源文件,符合RIFF(Resource Interchange File Format)文件规范,标准化的wav文件44.1k采样率,16位数字表示 2、wav文件分为两给部分,第一个...

    这是笔记,不定时更新

    wave–音频文件操作

    wav文件详解

    1、wav文件是基于windows平台的音频资源文件,符合RIFF(Resource Interchange File Format)文件规范,标准化的wav文件44.1k采样率,16位数字表示
    2、wav文件分为两给部分,第一个部分是wav头文件,第二给部分是PCM编码的音频数据部分;
    3、PCM编码:数字信号是对连续变化的模拟信号进行抽样、量化和编码产生的,称为PCM(Pulse-code modulation),即脉冲编码调制;
    4、wav头文件:
    RIFF文件由一个简单表头(header)跟随多个“chunks”组成。
    wav文件一般由3给区块组成:RIFF chunk、Format chunk、Data chunk和可选区块:Fact chunk、Cue points chunk、Playlist chunk、 Associated data list chunk等

    RIFF 区块

    名称偏移地址字节数端序内容
    ID0x004Byte大端‘RIFF’(0x52494646)
    Size0x044Byte小端fileSize-8
    Type0x084Byte大端‘WAVE’(0x57415645)
    • ‘RIFF’ 为标识
    • Size是整个文件的长度减去IDSize的长度
    • TypeWAVE表示后面需要两个子块:Format区块和Data区块

    FORMAT区块

    名称偏移地址字节数端序内容
    ID0x004Byte大端‘fmt’(0x666D7420)
    Size0x044Byte小端16
    AudioFormat0x082Byte小端音频格式
    Numchannels0x0A2Byte小端声道数
    SampleRate0x0C4Byte小端采样率
    ByteRate0x104Byte小端每秒数据字节数
    BlockAlign0x142Byte小端数据块对齐
    BitsPerSample0x162Byte小端采样位数
    • ‘fmt’ 为标识
    • Size表示该区块数据的长度(不包含IDSzie的长度)
    • AudioFormat 表示Data区块存储的音频数据的格式,PCM音频数据的值为1
    • NumChannels表示音频数据的声道数,1:单声道,2:双声道
    • SampleRate 表示音频数据的采样率
    • ByteRate 每秒数据字节数=SampleRateNumChannelsBitsPerSample/8
    • BlockAlign每个采样所需的字节数=NumChannels*BitsPerSample/8
    • BitsPerSample每个采样存储的bit数,8:8bit,16:16bit,32:32bit

    Data区块

    名称偏移地址字节数端序内容
    ID0x004Byte大端‘data’(0x64617461)
    Size0x044Byte小端N
    Data0x08NByte小端音频数据
    • ‘data’ 为标识
    • Size表示音频数据的长度,N=ByteRate*seconds
    • Data 音频数据

    大小端

    wav文件以小端形式来进行数据存储

    大端:数据低位保存在内存的高位地址中,而数据高位保存在内存的低位地址中
    小端:数据高位保存在内存的低位地址中,而数据高位保存在内存的低位地址中
    PCM数据在wav文件中的bit位排列方式

    PCM数据类型采样采样
    8Bit单声道声道0声道0
    8Bit双声道声道0声道1
    16Bit单声道声道0低位,声道0高位声道0低位,声道0高位
    16Bit双声道声道0低位,声道0高位声道1低位,声道1高位

    读取

    import wave
    import os 
    filePath='xxx.wav'
    f=wave.open(filePath,"rb")
    params=f.getparams()
    nchannels,sampwidth,framerate,nframes,comptype,compname=params
    print("nchannels:",nchannels)#通道数
    print("sampwidth:",sampwidth)#采样字节长度
    print("framerate:",framerate)#采样频率
    print("nframes",nframes)#总帧数(数据总长)
    print("comptype",comptype)#压缩类型 NONE为AIFF-C
    print("compname",compname)#可读的压缩类型
    
    #读取波形数据,返回为bytes对象的n帧
    strData=f.readframes(nframes)
    f.close()
    #波形数据转数组
    waveData=np.fromstring(strData,dtype=np.int16)#数据的类型要和sampwidth一致
    

    生成WAV

    ...数据生成waveDataBytes
    waveFile=wave.open(r'xxx.wav','wb')
    waveFile.setparams((1,2,10000,wavelen,'NONE','Tsinghua'))
    waveFile.writeframes(waveDataBytes)
    waveFile.close()
    
    
    展开全文
  • Python wave库readframe 时域波形数值很大的问题 问题描述: 在使用Python wave库画wave文件时域波形的时候,出现满屏、数值很大的波形 def read_data(path): fw = wave.open(path, 'rb') params = fw.getparams()...

    Python wave库readframe 时域波形数值很大的问题

    问题描述:

    在使用Python wave库画wave文件时域波形的时候,出现满屏、数值很大的波形

    def read_data(path):
        fw = wave.open(path, 'rb')
        params = fw.getparams()
        # print(params)
        # 通道数、量化位数(单位字节)、频率、帧数
        nchannels, sampwidth, framerate, nframes = params[:4]
        str_data = fw.readframes(nframes)
        fw.close()
        wave_data = np.frombuffer(str_data, dtype='i' + str(sampwidth))  # 问题所在
        wave_data.shape = -1, nchannels
        return wave_data, framerate
    
    path = ''
    wave_data, framerate = read_data(path)
    channel = 0
    wave_data = wave_data[:, channel]
    # wave_data = wave_data + 128
    print(wave_data)
    plt.plot(wave_data[10000:20000])
    plt.show()
    

    在这里插入图片描述

    原因分析:

    readframe函数返回的是二进制序列,在使用frombuffer时需要指定数据类型。
    一般wave文件的数据类型是int8(具体是几位还需要看sampwidth),但是有一些是unit8(无符号)数据类型的。
    在frombuffer函数里面指定‘i1’代表int8,‘u1’代表unit8(详细查数据类型)


    解决方案:

    在frombuffer函数中填写正确的数据类型即可
    在这里插入图片描述

    展开全文
  • Pythonwave库 --读写WAV格式文件

    千次阅读 2020-05-11 16:34:37
    wave 模块提供了一个处理 WAV 声音格式的便利接口。它不支持压缩/解压,但是支持单声道/立体声。 wave 模块定义了以下函数和异常: wave.open(file, mode=None) 如果 file 是一个字符串,打开对应文件名的文件。否则...

    wave 模块提供了一个处理 WAV 声音格式的便利接口。它不支持压缩/解压,但是支持单声道/立体声。

    wave 模块定义了以下函数和异常:

    wave.open(file, mode=None)
    如果 file 是一个字符串,打开对应文件名的文件。否则就把它作为文件类对象来处理。mode 可以为以下值:

    ‘rb’
    只读模式。

    ‘wb’
    只写模式。

    注意不支持同时读写WAV文件。

    mode 设为 ‘rb’ 时返回一个 Wave_read 对象,而 mode 设为 ‘wb’ 时返回一个 Wave_write 对象。如果省略 mode 并指定 file 来传入一个文件类对象,则 file.mode 会被用作 mode 的默认值。

    如果操作的是文件对象,当使用 wave 对象的 close() 方法时,并不会真正关闭文件对象,这需要调用者负责来关闭文件对象。

    open() 函数可以在 with 语句中使用。 当 with 阻塞结束时,Wave_read.close() 或 Wave_write.close() 方法会被调用。

    在 3.4 版更改: 添加了对不可搜索文件的支持。

    wave.openfp(file, mode)
    同 open(),用于向后兼容。

    Deprecated since version 3.7, will be removed in version 3.9.

    exception wave.Error
    当不符合WAV格式或无法操作时引发的错误。

    Wave_read对象
    由 open() 返回的 Wave_read 对象,有以下几种方法:

    Wave_read.close()
    关闭 wave 打开的数据流并使对象不可用。当对象销毁时会自动调用。

    Wave_read.getnchannels()
    返回声道数量(1 为单声道,2 为立体声)

    Wave_read.getsampwidth()
    返回采样字节长度。

    Wave_read.getframerate()
    返回采样频率。

    Wave_read.getnframes()
    返回音频总帧数。

    Wave_read.getcomptype()
    返回压缩类型(只支持 ‘NONE’ 类型)

    Wave_read.getcompname()
    getcomptype() 的通俗版本。使用 ‘not compressed’ 代替 ‘NONE’。

    Wave_read.getparams()
    返回一个 namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname),与 get*() 方法的输出相同。

    Wave_read.readframes(n)
    读取并返回以 bytes 对象表示的最多 n 帧音频。

    Wave_read.rewind()
    设置当前文件指针位置。

    后面两个方法是为了和 aifc 保持兼容,实际不做任何事情。

    Wave_read.getmarkers()
    返回 None。

    Wave_read.getmark(id)
    引发错误异常。

    以下两个方法都使用指针,具体实现由其底层决定。

    Wave_read.setpos(pos)
    设置文件指针到指定位置。

    Wave_read.tell()
    返回当前文件指针位置。

    Wave_write 对象
    对于可查找的输出流,wave 头将自动更新以反映实际写入的帧数。 对于不可查找的流,当写入第一帧时 nframes 值必须准确。 获取准确的 nframes 值可以通过调用 setnframes() 或 setparams() 并附带 close() 被调用之前将要写入的帧数,然后使用 writeframesraw() 来写入帧数据,或者通过调用 writeframes() 并附带所有要写入的帧。 在后一种情况下 writeframes() 将计算数据中的帧数并在写入帧数据之前相应地设置 nframes。

    由 open() 返回的 Wave_write 对象,有以下几种方法:

    在 3.4 版更改: 添加了对不可搜索文件的支持。

    Wave_write.close()
    确保 nframes 是正确的,并在文件被 wave 打开时关闭它。 此方法会在对象收集时被调用。 如果输出流不可查找且 nframes 与实际写入的帧数不匹配时引发异常。

    Wave_write.setnchannels(n)
    设置声道数。

    Wave_write.setsampwidth(n)
    设置采样字节长度为 n。

    Wave_write.setframerate(n)
    设置采样频率为 n。

    在 3.2 版更改: 对此方法的非整数输入会被舍入到最接近的整数。

    Wave_write.setnframes(n)
    设置总帧数为 n。 如果与之后实际写入的帧数不一致此值将会被更改( 如果输出流不可查找则此更改尝试将引发错误)。

    Wave_write.setcomptype(type, name)
    设置压缩格式。目前只支持 NONE 即无压缩格式。

    Wave_write.setparams(tuple)
    tuple 应该是 (nchannels, sampwidth, framerate, nframes, comptype, compname),每项的值应可用于 set*() 方法。设置所有形参。

    Wave_write.tell()
    返回当前文件指针,其指针含义和 Wave_read.tell() 以及 Wave_read.setpos() 是一致的。

    Wave_write.writeframesraw(data)
    写入音频数据但不更新 nframes。

    在 3.4 版更改: 现在可接受任意 bytes-like object。

    Wave_write.writeframes(data)
    写入音频帧并确保 nframes 是正确的。 如果输出流不可查找且在 data 被写入之后写入的总帧数与之前设定的has been written does not match the previously set value for nframes 值不匹配将会引发错误。

    在 3.4 版更改: 现在可接受任意 bytes-like object。

    注意在调用 writeframes() 或 writeframesraw() 之后再设置任何格式参数是无效的,而且任何这样的尝试将引发 wave.Error。

    展开全文
  • Python-wave库的使用

    千次阅读 2020-06-05 15:41:02
    import wave 2.读取.wav文件 注意使用二进制模式读wav音频文件 返回wave_reader类的示例 f = wave.open('file_path.wav', 'rb') 3.调用方法读wav文件的格式和数据 # 一次性返回所有格式信息,元组:(声道数, 量化...
  • Wave Widget for displaying waves with custom color, duration, floating and blur effects. Getting Started WaveWidget( config: CustomConfig( gradients: [ [Colors.red, Color(0xEEF44336)], ...
  • python播放WAVE文件

    千次阅读 2019-12-24 20:39:53
    Python有一个wave模块,可以读写WAVE文件并提取信息。但是,由于不能仅通过wave模块来再现声音,因此将其与另一个名为pyaudio的模块结合使用。pyaudio需要单独安装。 #coding: utf-8 import wave import pyaudio ...
  • 在本文中,我们将探讨一种简洁的方式,以此来可视化你的MP3音乐收藏。此方法最终的结果将是一个映射你所有歌曲的正六边形网格地图,其中相似的音轨将处于相邻的位置。不同区域的颜色对应不同的音乐流派(例如:古典...
  • 模块默认是同时支持 文件路径 和 BytesIO 对象的,但当输入是 BytesIO 时,wave 并没有自动先 seek(0),故 使用 wave.open(wav_file, 'rb') 之前,需要先 seek(0): if isinstence(wav_file, io.BytesIO): wav...
  • 需要pip install wave和安装pyaudio,开启麦克风 pyaudio安装经常出错的,参考以下教程 –>pyaudio安装错误解决方法<– 二、使用wave & pyaudio录音 import wave,pyaudio #设定采样率、16位深度、...
  • 本文介绍wave模块的使用方法及生成音频的算法实现。程序自动生成一段频率为200Hz, 长度为1.8秒的蜂鸣声。wave模块提供了一个处理 wav 声音格式的便利接口, 可从文件读取数据, 也可直接将`bytes`格式的数据写入wav...
  • 使用pythonWave文件

    万次阅读 2018-04-06 15:43:16
    1、Wave文件   WAV是Microsoft开发的一种声音文件格式,虽然它支持多种压缩格式,不过它通常被用来保存未压缩的声音数据(PCM脉冲编码调制)。WAV有三个重要的参数:声道数、取样频率和量化位数。 声道数:可以...
  • python库。 资源全名:wavefile-1.3.tar.gz
  • Python音频处理库wave

    2021-04-15 14:18:33
    本文内容摘自:https://docs.python.org/3/library/wave.html wave — Read and write WAV files Source code: Lib/wave.py The wave module provides a convenient interface to the WAV sound format. It does not...
  • python库,解压后可用。 资源全名:wave_pay-0.0.1-py3-none-any.whl
  • Python wave open异常

    千次阅读 2019-02-28 22:20:42
    小编是在练习wave库遇到的问题,如下 最后查阅文档和别人的问题最后发现别人和文档都写的很清楚,没有问题,最后发现是我把那个文件命名为wave.py文件出差了,跟wave库一样的名字,然后导致这样,具体原因不是很懂...
  • 资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:wave_chunk_parser-1.0.4-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
  • python-读Wave文件及分析

    千次阅读 2018-09-04 21:37:36
    import wave import numpy as np import matplotlib.pyplot as plt #1、批量读取.wav文件名: filepath='D:\jsdx\Paper\data\\' #print(os.listdir('D:\jsdx\Paper\data')) filename=os.listdir(filepath) #for fi.....
  • python的speexdsp 要求 wig 编译工具链 Python libspeexdsp-dev 建造 有两种构建程序包的方法。 使用setup.py sudo apt install libspeexdsp-dev git clone ...import wave import sys from s
  • 一个轻量级的,用于在本地Python类型列表中读写波形音频文件。 该当前仅限于PCM(整数)格式,但支持任意精度,包括16位,24位,32位和64位样本。 用法:读取wave文件 f = wavfile.open(file, 'r') 其中file是...
  • python库,解压后可用。 资源全名:seawave_spectrum-1.1-py3-none-any.whl
  • 的目标是复制Z-Wave JS 1:1的结构和事件。 因此,它具有Driver , Controller和Node类。 尝试一下 python3 -m zwave_js_server ws://localhost:3000 或获取服务器的版本 python3 -m zwave_js_server ws://...
  • python 自带

    千次阅读 2020-11-09 15:42:35
    python 标准 数字和数学模块 数据类型 datetime 基本日期和时间类型 calendar 与日历相关的一般功能 collections 容器数据类型 heapq 堆队列算法 bisect 数组二分算法 array 高效的数值数组 weakref 弱...
  • 由于生成 qrcode 图片需要依赖 Python 的图像,所以需要先安装 Python 图像 PIL(Python Imaging Library),不然会遇到 “ImportError: No module named Image” 的错误: 复制代码 代码如下: sudo
  • Python 技术篇-用wave库实现音频mp3格式转wav格式,高保真! 从微信下载下来的语音是 mp3 格式的,想调用百度语音 api,发现不支持 mp3,支持 wav。 准备: 需要安装 pydub 库,直接pip install pydub就好了。 还...
  • 用于VCD和其他数字波形文件操作的python库 功能清单 将VCD(std 2009)文件解析为中间格式 写入VCD文件,用于用户类型的用户指定格式器,用于矢量,位和枚举值的预定义格式器 将中间格式转储为简单的json 您好...
  • Python常用汇总

    2021-06-02 10:26:18
    Python常用的简单介绍一下 fuzzywuzzy ,字符串模糊匹配。 esmre ,正则表达式的加速器。 colorama 主要用来给文本添加各种颜色,并且非常简单易用。 Prettytable 主要用于在终端或浏览器端构建格式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,019
精华内容 2,407
关键字:

python wave库

友情链接: MFC-CSocket.rar