[具身智能-630]:树莓派 4B/5、RK3568/RK3588 音频输入代码示例
统一用Python + pyaudio + wave,适配:USB 麦克风、I2S 麦克风、板载音频输入,一套代码通用。
一、先装依赖
bash
sudo apt update sudo apt install portaudio19-dev python3-pip pip3 install pyaudio wave二、通用音频录制代码(录音保存为 wav)
python
import pyaudio import wave # 配置参数 FORMAT = pyaudio.paInt16 # 16位采样 CHANNELS = 1 # 单声道 语音够用 RATE = 16000 # 语音标准16k采样率 CHUNK = 1024 # 每次读取帧数 RECORD_SECONDS = 5 # 录音时长 WAVE_OUTPUT_FILENAME = "audio_in.wav" # 初始化 p = pyaudio.PyAudio() # 打开音频流 stream = p.open( format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK ) print("开始录音...") frames = [] # 循环读取音频输入 for _ in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) frames.append(data) print("录音结束") # 关闭流 stream.stop_stream() stream.close() p.terminate() # 保存为wav文件 wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close()三、实时读取音频流(不存文件,直接拿数据流)
适合做语音识别、降噪、AI 实时推理
python
运行
import pyaudio import numpy as np FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 16000 CHUNK = 512 p = pyaudio.PyAudio() stream = p.open( format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK ) print("实时获取音频输入,按Ctrl+C退出") try: while True: # 读取原始字节 data = stream.read(CHUNK) # 转成numpy数组,方便算法处理 audio_np = np.frombuffer(data, dtype=np.int16) # 这里可以做:音量检测、VAD静音检测、送入AI模型 print("当前音频音量均值:", np.abs(audio_np).mean()) except KeyboardInterrupt: print("停止采集") finally: stream.stop_stream() stream.close() p.terminate()四、选择指定麦克风设备(多麦共存时用)
1. 先查看所有音频设备
python
运行
import pyaudio p = pyaudio.PyAudio() for i in range(p.get_device_count()): print(i, p.get_device_info_by_index(i)['name'])2. 指定设备编号录制
在stream.open加input_device_index=设备号:
python
运行
stream = p.open( format=FORMAT, channels=CHANNELS, rate=RATE, input=True, input_device_index=2, # 改成你查到的麦克风编号 frames_per_buffer=CHUNK )五、平台适配说明
树莓派 4B/5
- USB 麦、USB 声卡、I2S ReSpeaker 阵列 都能用
- 采样率固定16000适配语音识别最佳
RK3568/RK3588
- 板载模拟麦、I2S、PDM 阵列 全部兼容
- 自带 NPU,可把读到的音频流直接送入本地语音模型
六、常见问题
- 报错找不到设备:
apt install alsa-utils,执行arecord -l看麦克风是否被系统识别 - 杂音大:降低增益、改用 I2S/PDM 数字麦,不用模拟麦
- 采样率报错:强制用 16000 或 8000 标准语音采样率
