【语音识别】pyaudio使用示例

一、PyAudio介绍

1 简单介绍

PyAudio就是Python对PortAudio的封装,用来做音频采集和播放。

常见用途:

  • 麦克风录音
  • 播放音频
  • 实时音频流(语音识别,降噪,VAD)
  • AI语音前处理(ASR/声学特征)

2 安装

pip install pyaudio

python 复制代码
import pyaudio
p = pyaudio.PyAudio()
  • PyAudio():音频系统入口
  • Stream:音频流(录音,放音,都靠它)

二、一些示例

示例一:播放WAV文件

python 复制代码
import pyaudio
import wave

wf = wave.open("output.wav", 'rb')
p = pyaudio.PyAudio()

stream = p.open(
    format=p.get_format_from_width(wf.getsampwidth()),
    channels=wf.getnchannels(),
    rate=wf.getframerate(),
    output=True
)


data = wf.readframes(1024)
while data:
    stream.write(data)
    data = wf.readframes(1024)

stream.stop_stream()
stream.close()
p.terminate()

关键点:

  • output=True 播放
  • write() 向声卡写数据
  • WAV自带采样率/通道数

示例二:麦克风录音

功能:录音5秒,保存为WAV

python 复制代码
import pyaudio
import wave

FORMAAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
CHUNK = 1024
RECORD_SECONDS = 5              # 录制5秒
OUTPUT_RATE = "record.wav"

p = pyaudio.PyAudio()

stream = p.open(
    format=FORMAAT,
    channels=CHANNELS,
    rate=RATE,
    input=True,
    frames_per_buffer=CHUNK
)

frames = []

for _ in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(OUTPUT_RATE, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()

示例3:实时录音+实时播放(回声)

常用于调试麦克风是否正常

python 复制代码
import pyaudio

p = pyaudio.PyAudio()

stream = p.open(
    format=pyaudio.paInt16,
    channels=1,
    rate=16000,
    input=True,
    output=True,
    frames_per_buffer=1024
)

while True:
    data = stream.read(1024)
    stream.write(data)

示例4:获取音频设备列表(非常重要)

python 复制代码
import pyaudio

p = pyaudio.PyAudio()

for i in range(p.get_device_cout()):
	info = p.get_device_info_by_index(i)
	print(i, info["name"], info["maxInputChannels"])

输出格式如下:

text 复制代码
0 Microsoft 音效對應表 - Input 2
1 麥克風 (BT-BT) 1
2 立體聲混音 (Realtek High Definition  2
3 Microsoft 音效對應表 - Output 0
4 喇叭 (BT-BT) 0
5 主要音效擷取驅動程式 2
6 麥克風 (BT-BT) 1
7 立體聲混音 (Realtek High Definition Audio) 2
8 主要音效驅動程式 0
9 喇叭 (BT-BT) 0
10 喇叭 (BT-BT) 0
11 立體聲混音 (Realtek High Definition Audio) 2
12 麥克風 (BT-BT) 1
13 Speakers (Realtek HD Audio output) 0
14 線路輸入 (Realtek HD Audio Line input) 2
15 立體聲混音 (Realtek HD Audio Stereo input) 2
16 麥克風 (Realtek HD Audio Mic input) 2
17 喇叭 (BT-BT) 0
18 麥克風 (BT-BT) 1

指定设备录音:

python 复制代码
stream = p.open(
	format = pyaudio.paInt16,
	channels = 1,
	rate = 16000,
	input=True,
	input_device_index = 2
)

示例5:PCM转numpy

python 复制代码
import numpy as np

audio_bytes = stream.read(1024)
audio_np = np.frombuffer(audio_bytes, dtype=np.int16)

三、常见参数速查表

  • format:数据格式(paInt16 最常用)
  • channels:1=单声道 2=立体声
  • rate:采样率(16000 / 44100)
  • frames_per_buffer:缓冲区大小
  • input:是否录音
  • output:是否播放
  • stream_callback:回调模式

典型应用组合

  • 语音识别:PyAudio + numpy + whisper
  • 实时VAD:PyAudio + vad
  • 语音唤醒
  • 音频可视化:PyAudio + matplotlib

本篇记录于2026年1月28日

相关推荐
ToTensor2 分钟前
Agent 记忆管理框架基准测试排名
人工智能·agent
极智视界3 分钟前
分类数据集 - 伪造人脸和真实人脸分类数据集下载
人工智能·yolo·数据集·图像分类·算法训练·人脸伪造检测
千寻girling5 分钟前
滑动窗口刷了快一个月(26天)了 , 还没有刷完. | 含(操作系统学什么的Java 后端)
java·开发语言·javascript·c++·人工智能·后端·python
GEO索引未来13 分钟前
国内首部GEO可信传播标准立项通过/DeepSeek-V4 正式上线并开源/Open AI、Google继续推进AI广告标准化
大数据·人工智能·gpt·ai·chatgpt·开源
Chengbei1114 分钟前
面向红队的 AI 赋能全场景流量分析仪 网页 / APP / 终端 / IoT 全域 HTTPS 抓包解密利器
人工智能·物联网·网络协议·web安全·网络安全·https·系统安全
小糖学代码14 分钟前
LLM系列:2.pytorch入门:9.神经网络的学习
人工智能·python·深度学习·神经网络·学习·机器学习
tangweiguo0305198715 分钟前
AI图生图完整实战:基于阿里云百炼通义万相
人工智能·langchain
一只AI打工虾的自我修养20 分钟前
Mac mini 本地AI工作站配置指南(2026实战):从零打造 M4 Mac mini AI 开发环境
人工智能·macos
CodePlayer竟然被占用了21 分钟前
少即是多:GPT-5.5 Prompt 官方指南的核心转变
人工智能
liuyunshengsir23 分钟前
手写最基础的大模型推理并使用Profile监控GPU性能消耗情况
人工智能·深度学习·机器学习