找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 179|回复: 5

[代码与实例] 麦克风音频数据采集及波形实时显示

1

主题

5

帖子

5

积分

贫民

积分
5
排长 发表于 2018-1-17 20:41:09 | 显示全部楼层 |阅读模式
麦克风音频数据采集及波形实时显示,看似聊聊数行,还真不好编

sound.png
回复

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
排长  楼主| 发表于 2018-1-17 20:43:10 | 显示全部楼层
上传的代码怎么不见了?
回复 支持 0 反对 1

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
排长  楼主| 发表于 2018-1-17 20:44:41 | 显示全部楼层
重新试一下
microphone.py (1.56 KB, 下载次数: 13)
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
排长  楼主| 发表于 2018-1-17 20:46:46 | 显示全部楼层
'''
本软件实现从麦克风设备读取音频数据并实时显示波形,如有疑问或需要进一步优化请联系
1605908057@qq.com
by 排长 2018-1-17
'''
#下面是需要的模块,python的优势就是有众多功能强大甚至千奇百怪的模块可用
import numpy as np
import pyaudio
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import matplotlib.lines as line

#-----------打开录音设备-------------
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 2048
audio = pyaudio.PyAudio()#打开pyaudio类
stream = audio.open(format=FORMAT, channels=CHANNELS,
               rate=RATE, input=True,
               frames_per_buffer=CHUNK)
print( "open ok...")

#--------------绘图-----------------
x = range(0,CHUNK)
fig = plt.figure(1)#建立一个绘图
ax = plt.axes(xlim=(0,1024*2), ylim=(-5000,5000))#绘图坐标设置
linem = line.Line2D([],[])#绘图(后面会更新图形数据)

#-------------绘图更新------------
def init():
    ax.add_line(linem)
    return linem,

def update(i):
    global audio_data
    linem.set_xdata(x)
    data = stream.read(CHUNK)#在更新函数里采集一个音频块
    audio_data = np.fromstring(data, dtype=np.short)#音频块转成整形数组   
    linem.set_ydata(audio_data)
    return linem,

fig.show()
ani = animation.FuncAnimation(fig, update,#动态绘图
                              init_func=init,
                              frames=1,
                              interval=10,#更新间隔(ms)
                              blit=True)
回复 支持 反对

使用道具 举报

3

主题

8

帖子

8

积分

贫民

积分
8
Sugarcane 发表于 2018-1-18 08:14:50 | 显示全部楼层
请问一下,这个“pyaudio.paInt16”是?
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
排长  楼主| 发表于 2018-1-20 11:54:07 | 显示全部楼层
16位整形数据采集
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表