用python生成一边录音一边显示波形的程序
时间: 2024-05-12 13:20:58 浏览: 30
显示录音波形
以下是一个使用Python编写的程序,可以一边录音一边显示波形:
```python
import pyaudio
import numpy as np
import matplotlib.pyplot as plt
# 设置录音参数
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
# 创建PyAudio对象
p = pyaudio.PyAudio()
# 打开音频流
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
# 创建图形窗口
fig, ax = plt.subplots(1, figsize=(15, 7))
# 设置坐标轴范围
ax.set_ylim(-32768, 32768)
ax.set_xlim(0, CHUNK)
# 创建一个空的线条对象
line, = ax.plot([], [])
# 开始录音
while True:
# 读取音频数据
data = stream.read(CHUNK)
# 将数据转换为numpy数组
data_np = np.frombuffer(data, dtype=np.int16)
# 更新线条数据
line.set_data(np.arange(CHUNK), data_np)
# 刷新图形窗口
plt.pause(0.001)
fig.canvas.draw()
# 停止录音
stream.stop_stream()
stream.close()
p.terminate()
```
该程序使用PyAudio库获取音频流并将其转换为numpy数组。然后,它将数据用于更新matplotlib图形窗口中的线条对象,以便在录制音频时实时显示波形。程序会一直运行,直到手动停止录音。
请注意,由于程序是实时运行的,因此可能会占用大量计算资源。如果需要长时间录音,建议使用其他工具,例如Audacity。
阅读全文