分享python分析wave, pcm音频文件

最近研究的,我用的是python3.3, 用matplotlib画图,

下面代码演示分析pcm文件,如果是wave文件,把wave的文件头去掉就是pcm文件了。

代码如下


 1 # -*- coding:utf-8 -*-
2
3 import array
4 import os
5 from matplotlib import pyplot
6
7 fileName = ‘e:/music/qianqian.pcm‘ # 2 channel, 16 bit per sample
8 file = open(fileName, ‘rb‘)
9 base = 1 / (1<<15)
10
11 shortArray = array.array(‘h‘) # int16
12 size = int(os.path.getsize(fileName) / shortArray.itemsize)
13 count = int(size / 2)
14 shortArray.fromfile(file, size) # faster than struct.unpack
15 file.close()
16 leftChannel = shortArray[::2]
17 rightChannel = shortArray[1::2]
18
19 def showPCM(leftChannel, rightChannel, start = 0, end = 5000):
20 fig = pyplot.figure(1)
21
22 pyplot.subplot(211)
23 pyplot.title(‘pcm left channel [{0}-{1}] max[{2}]‘.format(start, end, count))
24 pyplot.plot(range(start, end), leftChannel[start:end])
25
26 pyplot.subplot(212)
27 pyplot.title(‘pcm right channel [{0}-{1}] max[{2}]‘.format(start, end, count))
28 pyplot.plot(range(start, end), rightChannel[start:end])
29
30 pyplot.show()
31 # fig.savefig(‘pcm.pdf‘) # save figure to pdf file
32
33 showPCM(leftChannel, rightChannel, 0, count)

另一种分析方法,用struct.unpack,但读取要比上一种慢很多


 1 # -*- coding:utf-8 -*-
2
3 import struct
4 from matplotlib import pyplot
5
6 file = open(‘e:/music/qianqian.pcm‘, ‘rb‘) # if file is too large, pyplot may overflow
7 count = 0
8 total = 0
9 base = 1 / (1<<15)
10 maxl = 0
11 minl = 0
12 maxr = 0
13 minr = 0
14 larray = []
15 rarray = []
16 # file has two channels, 16 bit per sample
17 while True:
18 lr = file.read(4)
19 if len(lr) < 4:
20 break
21 count += 1
22 lvalue = struct.unpack(‘h‘, lr[:2])[0] * base
23 larray.append(lvalue)
24 if lvalue > maxl:
25 maxl = lvalue
26 if lvalue < minl:
27 minl = lvalue
28 total += lvalue
29 rvalue = struct.unpack(‘h‘, lr[2:])[0] * base
30 rarray.append(rvalue)
31 if rvalue > maxr:
32 maxr = rvalue
33 if rvalue < minr:
34 minr = rvalue
35
36 file.close()
37 avarage = total / count
38 print(count, total, avarage)
39 print(‘max = {0} min = {1}‘.format(maxl, minl))
40
41 fig = pyplot.figure(1)
42 pyplot.subplot(211)
43 pyplot.title(‘pcm left channel‘)
44 pyplot.plot(range(count), larray)
45 pyplot.subplot(212)
46 pyplot.title(‘pcm right channel‘)
47 pyplot.plot(range(count), rarray)
48 pyplot.show()
49 # fig.savefig(‘pcm.pdf‘)

代码及pcm下载:http://yun.baidu.com/s/1gdf3e3D

下面这个地址也有一个例子:http://stackoverflow.com/questions/18625085/how-to-plot-a-wav-file可以看看。

分享python分析wave, pcm音频文件,布布扣,bubuko.com

时间: 2024-10-13 03:35:55

分享python分析wave, pcm音频文件的相关文章

MediaInfo用来分析视频和音频文件的编码和内容信息的超好用工具

转载:http://blog.csdn.net/ameyume/article/details/6718705 MediaInfo简介 MediaInfo 用来分析视频和音频文件的编码和内容信息. MediaInfo 是自由软件 (免费使用.免费获得源代码,许可协议:GNU GPL/LGPL) 下载地址: windows版: http://mediainfo.sourceforge.net/zh-CN ubuntu版: http://mediainfo.sourceforge.net/zh-CN

【音视频连载-007】基础学习篇-SDL 播放 PCM 音频文件(上)

音视频学习入门技术文章连载: 技术开发故事会连载 [音视频连载-001]基础学习篇-SDL 介绍以及工程配置 [音视频连载-002]基础学习篇-SDL 创建窗口并显示颜色 [音视频连载-003]基础学习篇-SDL 消息循环和事件响应 [音视频连载-004]基础学习篇-SDL 加载图片并显示 [音视频连载-005]基础学习篇-SDL 加载 YUV 文件并显示 [音视频连载-006]基础学习篇-SDL 播放 YUV 视频文件]) 在前面的文章中已经能够利用 SDL 去播放 YUV 视频文件了,接下来

资料分享—— Python 分析拉钩职位

视频 PPT+ 视频 链接: https://pan.baidu.com/s/1tzG1adgpn23TSKvnR6XmYg 提取码: 2p2t 项目代码:https://github.com/nicksors/JobAnalysis 前言 近年来 Python 之火大家都有感而知,那亲们知道北京的 Python 开发岗位.运维开发岗位招聘地域都是如何分布的吗?薪水如何?是否有前景等等,这些数据呢直接通过招聘信息来了解到企业用人是最直接的,也是最简单的途径. 那本次将通过分享 Python 来抓

PCM音频文件编码

PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志.Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件. 将音频数字化,其实就是将声音数字化.最常见的方式是透过脉冲编码调制PCM(Pulse Code Modulation) .运作原理如下.首先我们考虑声音经过麦克风,转换成一连串电压变化的信号,如图一所示.这张图的横座标为秒,纵座标为电压大小.要将这样的信号转为 PCM 格式的方法,是使

IOS音频1:之采用四种方式播放音频文件(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE

本文转载至 http://blog.csdn.net/u014011807/article/details/40187737 在本卷你可以学到什么? 采用四种方法设计应用于各种场合的音频播放器: 基于AudioToolbox.framework框架.播放系统声音文件. 基于AVFoundation.framework框架.播放多种音频格式文件.具有高级音频播放器功能.如实时显示进度.功率,控制音量.播放时间等. 基于OPENAL框架.实现对本地音频文件播放,播放pcm音频文件,3D音频特效. 基

Qt 播放音频文件

Qt播放音频文件的方法有好多中,简单介绍几种 不过一下几种方式都需要在Qt工程文件中添加 QT += multimedia 第一 QMediaPlayer类 可以播放MP3文件,同时使用也是最简单的了,具体代码 { player = new QMediaPlayer; connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(positionChanged(qint64))); player->setMedia(QUrl::fromL

快速将音频文件转文字的方法

如果给你一份录音文件,需要将其整理成文字形式,大部分人都是边听边做记录,有的录音还要循环播放好几次才能记录准确,这样大大的降低了工作效率,就很令人头疼了,接下来小编就来为大家分享一种快速将音频文件转文字的方法,有需要的小伙伴们可以参考一下哦! 参考工具:迅捷OCR文字识别软件 操作步骤: 1:首先做好准备工作,将所需识别音频文件保存在电脑中,接着打开OCR文字识别软件,点击左边导航栏中的语音识别板块. 2:在页面中心添加文件的地方,将事先准备好的图片添加进来,注意支持识别的一些要求. 3:语音文

如何将Pcm格式的音频文件转换成Wave格式的文件

最近在做一款变声App,其中就用到了将pcm格式转wave格式,下面贴出源代码,希望带有需求的童鞋有帮助!!!这里是c++语言写的,也可以用java实现.当然java调用native函数要用到jni技术.具体jni技术自己到网路上找找资料. Cpp文件Pcm2Wave.cpp #include <stdlib.h> #include <string.h> #include <stdio.h> #include "wave.h" #include &q

【转】Python处理wave文件

#本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在繁忙的生活中,我们经常会听些歌来放松一下自己,我们经常会从各种播放软件中听自己喜欢的歌,并且往往我们会下载一部分歌曲,而现在音频的种类也相当繁多,像是Wav,Mp3,FLAC,AAC等等很多格式,最近由于需要做一个能够分析Wav格式音频的波形来取得一些数据比如获取人录音时是否说完等等用途.本周先对解析Wav并