【语音识别】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日

相关推荐
Juicedata6 小时前
JuiceFS 企业版 5.3 特性详解:单文件系统支持超 5,000 亿文件,首次引入 RDMA
大数据·人工智能·机器学习·性能优化·开源
Piar1231sdafa6 小时前
蓝莓目标检测——改进YOLO11-C2TSSA-DYT-Mona模型实现
人工智能·目标检测·计算机视觉
愚公搬代码7 小时前
【愚公系列】《AI短视频创作一本通》002-AI引爆短视频创作革命(短视频创作者必备的能力)
人工智能
数据猿视觉7 小时前
新品上市|奢音S5耳夹耳机:3.5g无感佩戴,178.8元全场景适配
人工智能
蚁巡信息巡查系统7 小时前
网站信息发布再巡查机制怎么建立?
大数据·人工智能·数据挖掘·内容运营
AI浩7 小时前
C-RADIOv4(技术报告)
人工智能·目标检测
Purple Coder7 小时前
AI赋予超导材料预测论文初稿
人工智能
Data_Journal7 小时前
Scrapy vs. Crawlee —— 哪个更好?!
运维·人工智能·爬虫·媒体·社媒营销
云边云科技_云网融合7 小时前
AIoT智能物联网平台:架构解析与边缘应用新图景
大数据·网络·人工智能·安全
康康的AI博客7 小时前
什么是API中转服务商?如何低成本高稳定调用海量AI大模型?
人工智能·ai