python WAV音频文件处理 |
您所在的位置:网站首页 › python读取mp3文件的采样率 › python WAV音频文件处理 |
原文 代码 了解WAV文件格式WAV是一种波形音频文件格式(Waveform Audio File Format)。虽然是一种古老的格式(九十年代初开发),但今天仍然可以看到这种文件。 WAV具有简单、可移植、高保真等特点。 WAV的波形声音是一种波,可以用3个属性描述: 振幅(Amplitude) 表示声波强度,可视为响度。频率(Frequency),波长的倒数,对应音高。相位(Phase)波开始时对应波周期中的位置。如果你用音频软件(如Audacity)打开WAV文件,可能看到这样的波形 WAV 音频文件格式是一种二进制格式,结构如下: 为了忠实地表现音乐,大多数 WAV 文件使用立体声 PCM 编码,其中 16 位有符号整数以 44.1 kHz 采样。这些参数对应于标准 CD 质量的音频。巧合的是,这样的采样频率大约是大多数人能听到的最高频率的两倍。根据 Nyquist-Shannon 采样定理,这足以以数字形式捕获声音而不会失真。 Python的wave模块wave 模块负责读取和写入 WAV 文件(但不能播放声音)。 使用wave.open 读取wav文件将返回一个 wave.Wave_read object。 import wave with wave.open("Bongo_sound.wav") as wav_file: print(wav_file)可以使用该对象检索存储在 WAV 文件Header信息并读取编码的音频帧: >>> with wave.open("Bongo_sound.wav") as wav_file: ... metadata = wav_file.getparams() # header ... frames = wav_file.readframes(metadata.nframes) # frame ... >>> metadata _wave_params( nchannels=1, sampwidth=2, framerate=44100, nframes=212419, comptype='NONE', compname='not compressed' ) >>> frames b'\x01\x00\xfe\xff\x02\x00\xfe\xff\x01\x00\x01\x00\xfe\xff\x02\x00...' >>> len(frames) 424838读取的帧是原始比特(bytes),我们需要手动解码。从Header中我们看到,每个音占2个字节(16位)。 我们可以用array模块: >>> import array >>> pcm_samples = array.array("h", frames) >>> len(pcm_samples) 212419或者使用struct模块: >>> import struct >>> format_string = " |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |