python+wave+pyaudio:调用电脑麦克风进行声音录制

部署运行你感兴趣的模型镜像

pyaudio:用于音频输入。
wave:用于音频文件的读写。

import wave, pyaudio

p = pyaudio.PyAudio()

# 获取设备上的所有麦克风设备
info = p.get_host_api_info_by_index(0)
num_devices = info.get('deviceCount')
for i in range(0, num_devices):
    if p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels') > 0:
        # print(p.get_device_info_by_host_api_device_index(0, i))
        print(f'麦克风设备--{p.get_device_info_by_host_api_device_index(0, i).get("name")}')

# 设置录音参数
FORMAT = pyaudio.paInt16  # 表示使用16位整数格式
CHANNELS = 2  # 声道,1为单声道,1为双声道(立体声)
RATE = 44100  # 采样率,44100为CD音质的标准采样率
CHUNK = 1024  # 缓存区大小,每次读取音频的帧数
AudioTimeLong = 10  # 录音时长

# 开启音频媒体流
stream = p.open(
    format=FORMAT,
    channels=CHANNELS,
    rate=RATE,
    frames_per_buffer=CHUNK,
    input=True
)

print('开始录音')
frames = []
for _ in range(0, int(RATE / CHUNK * AudioTimeLong)):
    data = stream.read(CHUNK)
    frames.append(data)
print('结束录音')

# 关闭媒体和释放资源
stream.stop_stream()  # 停止媒体流
stream.close()  # 关闭媒体流
p.terminate()  # 释放PortAudio资源

# 将音频数据流写入到文件中
with wave.open(r'E:\桌面\dm0.wav', 'wb') as wf:
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值