WAV格式是无损音乐格式,常用的码率为11025Hz、22050Hz、44100Hz和48000Hz四种。
WAV文件采用的是RIFF格式结构。至少是由3个块构成,分别是RIFF、fmt和Data。所有基于压缩编码的WAV文件必须含有fact块。此外所有其它块都是可选的。块mt,Data及fact均为RIFF块的子块。WAV文件的文件格式类型标识符为“WAVE”;
WAV格式对音频流的编码没有硬性规定,支持非压缩的PCM(PulsCodeModulation)脉冲编码调制格式,PCM编码是直接存储声波采样被量化后所产生的非压缩数据;
故被视为单纯的无损耗编码格式,其优点是可获得高质量的音频信号。基于PCM编码的WAV格式是最基本的WAV格式,被声卡直接支持,能直接存储采样的声音数据。
扩展资料:
适用范围
一般来说,采样的样本尺度(信息量)越大,采样频率越高,音质就越好,但波形音频的开销就越大。由于一般讲话以8位11.025KHz采样就能较好地还原,因此,波形音频一般适用于以下几种场合:
1、播放的声音是讲话语音,音乐效果对声音的质量要求不太高的场合。
2、需要从CD-ROM光盘驱动器同时加载声音和其他数据,声音数据的传输不能独占处理时间的场合。
3、需要在PC硬盘中存储的声音数据在1分以下以及可用存储空间足够的时候。
参考资料来源:百度百科—WAV
无损音乐格式,缺点是体积太大,一般只用于存储简短的声音片段。
WAV是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。但WAV文件有一个致命的缺点,就是它所占用的磁盘空间太大(每分钟的音乐大约需要12兆磁盘空间)。
存储过程:
声源发出的声波通过话筒被转换成连续变化的电信号,经过放大、抗混叠滤波后,按固定的频率进行采样,每个样本是在一个采样周期内检测到的电信号幅度值;接下来将其由模拟电信号量化为由二进制数表示的积分值;最后编码并存储为音频流数据。有的应用为了节省存储空间,存储前,还要对采样数据先进行压缩。
您好,程序如下:1.读取wav文件
# -*- coding: utf-8 -*-
import wave
import pylab as pl
import numpy as np
# 打开WAV文档
f = wave.open(r"c:\WINDOWS\Media\ding.wav", "rb")
# 读取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# 读取波形数据
str_data = f.readframes(nframes)
f.close()
#将波形数据转换为数组
wave_data = np.fromstring(str_data, dtype=np.short)
wave_data.shape = -1, 2
wave_data = wave_data.T
time = np.arange(0, nframes) * (1.0 / framerate)
# 绘制波形
pl.subplot(211)
pl.plot(time, wave_data[0])
pl.subplot(212)
pl.plot(time, wave_data[1], c="g")
pl.xlabel("time (seconds)")
pl.show()
2.观察信号频谱
# -*- coding: utf-8 -*-
import numpy as np
import pylab as pl
sampling_rate = 8000
fft_size = 512
t = np.arange(0, 1.0, 1.0/sampling_rate)
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)
xs = x[:fft_size]
xf = np.fft.rfft(xs)/fft_size
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1)
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
pl.figure(figsize=(8,4))
pl.subplot(211)
pl.plot(t[:fft_size], xs)
pl.xlabel(u"时间(秒)")
pl.title(u"156.25Hz和234.375Hz的波形和频谱")
pl.subplot(212)
pl.plot(freqs, xfp)
pl.xlabel(u"频率(Hz)")
pl.subplots_adjust(hspace=0.4)
pl.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)