首先确认要安装的 sounddevice 库,链接:https://python-sounddevice.readthedocs.io/en/0.4.6/
根据文档,可知最新的 sounddevice 版本是 0.4.6
进入安装页面查看,发现 Newest sounddevice 可以使用 pip 安装,如下图
进入 python 官网,链接:https://www.python.org/
下载安装 python3.12
默认设置安装(除了 C盘 改为 D盘)
再次在命令行窗口运行 python/python3 发现还是不行
记录python3.12 的安装路径,把它放进环境变量里 (用户变量和系统变量的 Path)
再次在命令行窗口运行 python,如下图
运行如下命令安装 sounddevice
python -m pip install sounddevice
python -m pip install cffi
python -m pip install numpy
python -m pip install matplotlib
现在让我们测试下面的代码:
# 1. 导入必要的三个库
import sounddevice as sd
import numpy as np
import matplotlib.pyplot as plt
# 2. 定义采样率和持续时间
sample_rate = 44100 # 采样率(每秒采样点数)
duration = 120 # 持续时间(秒)
# indata: 接收到的声音数据
def plot_waveform(indata, frames, time, status):
# 3. 将接收到的声音数据转换为numpy数组
audio_data = np.hstack(indata)
# 4. 使用 audio_data(numpy 数组) 绘制波形图
plt.clf()
plt.plot(audio_data)
plt.xlabel('Sample')
plt.ylabel('Amplitude')
plt.title('Real-time Waveform')
plt.grid(True)
plt.ylim([-1, 1]) # 设置纵轴范围为[-1, 1]
plt.pause(0.001) # 使程序在绘制波形图后暂停 0.001 秒,然后继续执行下一行代码。 (类似于绘图的 sleep)
# 5. 打开输入流并实时接收声音信号(开启另一个线程)
with sd.InputStream(callback=plot_waveform, channels=1, samplerate=sample_rate):
sd.sleep(int(duration * 1000)) # 程序持续时间为 duration 秒