当前位置: 首页 > news >正文

[具身智能-631]:获取音频输入的代码示例

树莓派 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.openinput_device_index=设备号

python

运行

stream = p.open( format=FORMAT, channels=CHANNELS, rate=RATE, input=True, input_device_index=2, # 改成你查到的麦克风编号 frames_per_buffer=CHUNK )

五、平台适配说明

  1. 树莓派 4B/5

    • USB 麦、USB 声卡、I2S ReSpeaker 阵列 都能用
    • 采样率固定16000适配语音识别最佳
  2. RK3568/RK3588

    • 板载模拟麦、I2S、PDM 阵列 全部兼容
    • 自带 NPU,可把读到的音频流直接送入本地语音模型

六、常见问题

  • 报错找不到设备:apt install alsa-utils,执行arecord -l看麦克风是否被系统识别
  • 杂音大:降低增益、改用 I2S/PDM 数字麦,不用模拟麦
  • 采样率报错:强制用 16000 或 8000 标准语音采样率
http://www.jsqmd.com/news/790848/

相关文章:

  • 9.深度剖析MySQL约束的工程设计:自增主键的分布式局限、外键约束的权衡,与CHECK的版本适配实践
  • 强力揭秘:Windows热键冲突诊断神器,一键揪出“热键小偷“
  • 如何快速搭建抖音下载环境:3步完成高清无水印内容保存
  • BooruDatasetTagManager:智能标注架构革命,让AI训练数据预处理效率提升300%
  • 微信聊天记录数据化永久保存完整指南:WeChatMsg技术实现与应用实践
  • 10.数据库设计入门:从学生视角看三大范式与软性约定
  • 3步构建永久小说资产库:番茄小说下载器技术深度解析
  • 从TI官方方案到STM32实战:48V BMS核心芯片选型与调试避坑指南
  • 自制编程语言:挑战与乐趣并存,10000 行 C++ 代码实现多项功能,未来规划丰富!
  • [具身智能-632]:语音数据存储格式,一口气讲透(通俗 + 工程版)
  • SingleFile:一键保存完整网页的终极解决方案,告别碎片化保存烦恼
  • WindowResizer完整指南:如何强制调整任意Windows窗口大小
  • caj2pdf:3步轻松将知网CAJ文献转为可编辑PDF
  • CAPL脚本调试实录:diagGenerateKeyFromSeed参数填错,我的UDS安全解锁为什么总失败?
  • [具身智能-633]:语音 PCM 超通俗精讲(嵌入式 / 树莓派 / RK3588 专用)
  • SuperDuper框架:AI模型与数据库的无缝集成与向量搜索实践
  • 为Claude Code配置Taotoken解决封号与Token不足问题
  • 基于Simulink的SVG无功补偿装置谐波治理仿真​
  • N_m3u8DL-RE:如何5分钟掌握跨平台流媒体下载与解密核心技术?
  • 别再乱调字体了!Qt界面开发中QSS字体属性(font-family, size, weight)的实战避坑指南
  • CVT算法实战踩坑记:从点云到三角网格,我遇到的三个‘坑’及填坑方案
  • TikTok评论采集终极指南:3步轻松获取完整评论数据,无需编程技能
  • AI原生持续集成实战手册(SITS 2026 CI/CD for LLM全栈适配白皮书)
  • [具身智能-634]:语音全链路:通道 → PCM 编码 → 传输格式 → 存储格式 → WAV 文件
  • 2026新式酸奶饮品模式爆火,健康与口感成为竞争关键点 - 博客湾
  • 为什么ChatGPT Enterprise没敢用SITS 2026?——对话状态持久化设计中的3个IEEE标准冲突点(附合规改造路径)
  • NadirRouter/NadirClaw:高性能网络数据采集与智能代理路由实战指南
  • 独立开发者如何利用Taotoken管理多个个人项目的AI调用成本
  • TikTokCommentScraper:创新智能的抖音评论自动化采集解决方案,让数据驱动决策变得简单
  • 第51篇:Vibe Coding时代:LangGraph + 权限系统实战,解决 Agent 谁都能改代码、调用工具的安全问题