利用python怎么对系统声音进行录制

  介绍

本篇文章给大家分享的是有关利用python怎么对系统声音进行录制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

环境准备

python

<李>波

<李>

pyaudio

波可以通过pip直接安装,在安装pyaudio时,通过正常的pip安装直接安装一直处于报错阶段,后来想到可以通过轮子直接安装。

在pypi提供的安装包中有对应的安装包,注意,不仅仅是python2和python3的区别,python3的小版本也有点差别。可杯具的是,小主电脑里装的是python3.8,后来想到还有一个网站可以安装pythonlibs,找到对应的版本后,下载下来。直接在文件所在目录,或者在安装中指定文件目录中执行安装

pip  install /c/用户/根/下载/PyAudio-0.2.11-cp38-cp38-win_amd64。whl

代码和运行

def  audio_record (out_file, rec_time):   CHUNK 才能=1024   时间=FORMAT 才能;pyaudio.paInt16  #, 16位编码格式   CHANNELS 才能=,1,#,单声道   RATE 才能=,16000,#,16000采样频率   时间=p 才能;pyaudio.PyAudio ()   #,才能创建音频流   时间=dev_idx 才能;findInternalRecordingDevice (p)   时间=stream 才能;p.open(格式=格式,,#,音频流wav格式   ,,,,,,,,,=渠道,渠道,#,单声道   ,,,,,,,,,速度=,,#,采样率16000   ,,,,,,,,,输入=True,   ,,,,,,,,,input_device_index=dev_idx, #,指定内录设备的id,可以不写,使用赢的默认录音设备   ,,,,,,,,,frames_per_buffer=块)   打印才能(“Start 录音…“)   时间=frames 才能;[],#,录制的音频流   #,才能录制音频数据   for 才能小姐:拷贝范围(0,,int(时间/RATE  CHUNK  *, rec_time)):, #,控制录音时间   ,,,data =, stream.read(块)   ,,,frames.append(数据)   #,才能录制完成   stream.stop_stream才能()   stream.close才能()   p.terminate才能()   打印才能(“Recording 做…“)   #,才能保存音频文件   wf 才能=,wave.open (out_file, & # 39; wb # 39;)   wf.setnchannels才能(渠道)   wf.setsampwidth才能(p.get_sample_size(格式)   wf.setframerate才能(率)   wf.writeframes才能(b # 39; & # 39; . join(帧))   wf.close才能()

在使用默认录音设备时,发现是话筒录音,效果并不是太理想,所以就去查查能不能直接录系统的声音。

def  findInternalRecordingDevice (p):   #才能,要找查的设备名称中的关键字   时间=target 才能;& # 39;立体声混音& # 39;   #,才能逐一查找声音设备   for 才能小姐:拷贝范围(p.get_device_count ()):   ,,,devInfo =, p.get_device_info_by_index(我)   ,,,印刷(devInfo)   ,,,if  devInfo[& # 39;名字# 39;];(目标),祝辞=,0,以及devInfo [& # 39; hostApi& # 39;],==, 0:   ,,,,,#,打印(& # 39;已找到内录设备,序号是,& # 39;,我)   ,,,,return 我   打印才能(& # 39;无法找到内录设备! & # 39;)   return 才能;1

可以使用p.get_device_info_by_index()去查看系统有关声音的设备,通过设置为立体声混音就可以录制系统声音。

保存声音

def 保存(文件名):   #,才能创建pyAudio对象   时间=p 才能;pyaudio.PyAudio ()   #,才能打开用于保存数据的文件   wf 才能=,wave.open(文件名,& # 39;wb # 39;)   #,才能设置音频参数   wf.setnchannels才能(渠道)   wf.setsampwidth才能(p.get_sample_size(格式)   wf.setframerate才能(率)   #,才能写入数据   wf.writeframes才能(b # 39; & # 39; . join (_frames))   #,才能关闭文件   wf.close才能()   #,才能结束pyaudio   p.terminate才能()

保存声音是通过上述代码进行保存,此处的_frames是个列表,是通过每录一个区块(数据流块),就把这一块的数据添加进去

然后只需要重新创建PyAudio对象,把这转个列表为字节串保存到文件中就可以了

问题

上述一般可以录到系统声音,但在执行的时候发现,并不能。

原因是:赢的输入设备中没有配置立体声混音

设置步骤:

<李>

在赢得的声音调节出,右击打开声音设置

<李>

找到管理声音设备

<李>

在输入设备处启用立体声混音

就此,就完成了录制系统声音的需求

注意

上述操作,可以外放,可以插入3.5毫米耳机,但系统静音和tpye-c耳机插入的时候不能录到声音

利用python怎么对系统声音进行录制