1. 环境搭建与基础工具链验证
任务目标
本案例完成边缘AI语音唤醒场景的本地开发环境搭建,并验证基础工具链可用。最终要求:Python虚拟环境可创建、PyTorch可完成CPU张量运算、sounddevice可枚举音频输入设备、以及一个最小录音脚本能采集到非静音数据。全部验证通过即视为环境就绪,可进入后续关键词识别案例。
环境依赖
- 操作系统:Ubuntu 20.04/22.04 或 Windows 10/11(均需支持Python 3.9+)
- Python 3.9~3.11(推荐3.10)
- 音频硬件:任意可用麦克风(板载或USB均可)
- 磁盘空间:约3GB(含PyTorch CPU版)
安装步骤
# 1. 创建虚拟环境
python3 -m venv ~/wake_env
source ~/wake_env/bin/activate # Windows: wake_env\Scripts\activate
# 2. 安装依赖(CPU版PyTorch)
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install sounddevice numpy
# 3. 验证安装版本
python -c "import torch, sounddevice; print('torch', torch.__version__); print('sd', sounddevice.__version__)"
关键完整代码
将以下内容保存为 env_check.py,用于一次性验证全部工具链环节:
import torch
import sounddevice as sd
import numpy as np
import sys
def check_torch():
"""验证PyTorch CPU张量运算"""
a = torch.rand(2, 3)
b = torch.matmul(a, a.T)
assert b.shape == (2, 2), "张量运算异常"
print(f"[OK] PyTorch {torch.__version__} 张量运算正常")
print(f" 示例结果均值: {b.mean().item():.4f}")
def check_audio_device():
"""枚举音频输入设备"""
devices = sd.query_devices()
input_devices = [d for d in devices if d['max_input_channels'] > 0]
assert len(input_devices) > 0, "未找到任何输入设备"
print(f"[OK] 检测到 {len(input_devices)} 个输入设备:")
for i, dev in enumerate(input_devices):
print(f" [{i}] {dev['name']} (channels: {dev['max_input_channels']})")
return input_devices[0]['index']
def record_sample(duration=1.0, samplerate=16000):
"""录制1秒音频并检查是否为有效信号"""
print(f"[..] 正在录音 {duration} 秒,请对着麦克风说话...")
recording = sd.rec(int(duration * samplerate), samplerate=samplerate,
channels=1, dtype='float32')
sd.wait()
rms = np.sqrt(np.mean(recording**2))
peak = np.abs(recording).max()
print(f"[OK] 录音完成: RMS={rms:.4f}, Peak={peak:.4f}")
assert rms > 0.001, "信号过弱,请检查麦克风连接或系统音量"
assert peak < 1.0, "信号削波,请降低输入增益"
return recording
if __name__ == "__main__":
print("=== 边缘AI语音唤醒 - 环境验证 ===\n")
try:
check_torch()
dev_idx = check_audio_device()
sd.default.device = (dev_idx, None) # 设置默认输入设备
record_sample()
print("\n=== 全部验证通过,环境就绪 ===")
except Exception as e:
print(f"\n[FAIL] {e}", file=sys.stderr)
sys.exit(1)
运行与验证
python env_check.py
运行后观察输出:
- PyTorch检查:打印版本号与一个2×2矩阵的均值,无报错即通过。
- 设备枚举:列出至少1个输入设备及其索引号。
- 录音测试:程序会录音1秒,需在录音期间正常说话。输出中RMS值应大于0.001(典型值0.01~0.3),Peak值应小于1.0。
- 最终状态:出现“全部验证通过,环境就绪”即表示工具链完整可用。
若录音RMS过低,依次检查:系统输入音量、麦克风是否被静音、pavucontrol(Linux)或“声音设置”(Windows)中的默认输入设备选择。
常见问题
- PyTorch安装缓慢:确认使用了
--index-url .../cpu参数,CPU版约200MB,GPU版数GB且需要CUDA。 - sounddevice报PortAudio错误:Linux需安装
libportaudio2(sudo apt install libportaudio2);Windows通常无需额外操作。 - 录音全零或RMS极小:检查麦克风阵列中是否选对了设备索引,部分笔记本有多个输入源(内置麦克风/耳机麦克风)。