pyaudio 控制指定设备,录制音频/采集音频流/播放音频
import sys ,pyaudio, wave
from tqdm import tqdm
class UacAudioInAndOut:
def __init__(self):
"""
功能: 录音参数初始化
创建vad检测模块对象
参数: /
返回值: /
"""
self.input_format_dict = {
"S8_LE":16, "S16_LE":8, "S24_LE":4, "S32_LE":2}
self.framerate_list = [8000, 11025, 16000, 22050, 32000, 44100, 48000,
88200, 96000, 176400, 192000, 352800, 384000]
def _inforPrintf(self, infor_content):
"""
功能: 检测操作系统,使用正确编码
输出打印信息
参数: infor_content: 信息内容
返回值: /
"""
if sys.platform != "linux" and sys.platform != "darwin":
infor_content = str(infor_content).encode("gbk","ignore").decode("gbk")
print(infor_content)
def GetAllDevInfor(self):
"""
功能: 显示支持设备信息
参数: /
返回值: /
"""
PA = pyaudio.PyAudio()
self._inforPrintf("----------------------< 本机支持设备 >------------------------------")
for dev_index in range(PA.get_device_count()):
self._inforPrintf("\n-------------------------------------------------------")
for key in PA.get_device_info_by_index(dev_index):
self._inforPrintf("%s:%s"%(key, str(PA.get_device_info_by_index(dev_index)[key])))
self._inforPrintf("========================================================")
def GetUacDevInfor(self, devKeywordOrIndex=None):
"""
功能: 获取UAC设备信息
参数: devKeywordOrIndex: 设备名称关键字或索引
返回值: dic 设备信息字典
False 设备信息获取失败
"""
PA = pyaudio.PyAudio()
if devKeywordOrIndex == None:
self._inforPrintf("\033[0;36;31m[UacAudioInAndOut] 未设设备, 当前使用默认设备\033[0m")
return PA.get_default_input_device_info()
if str(devKeywordOrIndex).isdigit():
devKeywordOrIndex = int(devKeywordOrIndex)
return PA.get_device_info_by_index(devKeywordOrIndex)
uac_infor_list = []
for uac_index in range(PA.get_device_count()):
if PA.get_device_info_by_index(uac_index).get("name"