基于Python实现录音功能的示例代码

 更新时间:2023年02月07日 09:49:54   作者:Python数据开发  
今天我们来介绍一个好玩且实用的东西,我们使用python来实现一个录音的功能。文中的示例代码简洁易懂,感兴趣的小伙伴快跟随小编一起学习一下吧

今天我们来介绍一个好玩且实用的东西,我们使用python来实现一个录音的功能,废话不多说,让我们直接开始。

安装

使用 PIP 安装 PvRecorder:

pip3 install pvrecorder  

查找可用的麦克风

一台计算机可以有多个麦克风, 例如,笔记本电脑有一个内置麦克风,可能还连接了一个耳机, 第一步是找到我们要录音的麦克风。

from pvrecorder import PvRecorder  
  
for index, device in enumerate(PvRecorder.get_audio_devices()):  
   print(f"[{index}] {device}")  

在 Dell XPS 笔记本电脑上运行上面的代码可以得到:

[0] Monitor of sof-hda-dsp HDMI3/DP3 Output  
[1] Monitor of sof-hda-dsp HDMI2/DP2 Output  
[2] Monitor of sof-hda-dsp HDMI1/DP1 Output  
[3] Monitor of sof-hda-dsp Speaker + Headphones  
[4] sof-hda-dsp Headset Mono Microphone + Headphones Stereo Microphone  
[5] sof-hda-dsp Digital Microphone  

记下目标麦克风的索引,我们将其传递给 PvRecorder 的构造函数, 不确定时,可以将 -1 传递给构造函数以使用默认麦克风。

录制音频

首先,创建一个 PvRecoder 实例, 你需要提供一个 device_index(见上文)和一个 frame_length。frame_length 是你希望在每次读取时接收的音频样本数, 我们将其设置为 512(16 kHz 音频的 32 毫秒), 然后调用 .start() 开始录制,录制完成后,继续循环调用 .read() 以接收音频,调用 .stop() 停止记录,然后调用 .delete() 以在完成后释放资源。

recorder = PvRecorder(device_index=-1, frame_length=512)  
  
try:  
   recorder.start()  
  
   while True:  
       frame = recorder.read()  
       # Do something ...  
except KeyboardInterrupt:  
   recorder.stop()  
finally:  
   recorder.delete()  

将音频保存到文件

你可以使用上面的代码片段中增加自己的逻辑做任何我们想做的事情, 无论你是要检测唤醒词、识别语音命令、将语音转录为文本、为搜索索引音频等,还是将其保存到文件中, 比如我们要保存到文件中,可以使用下面的代码, 这段代码显示了如何将音频保存为 WAVE 文件格式。

from pvrecorder import PvRecorder  
import wave  
import struct  
  
recorder = PvRecorder(device_index=-1, frame_length=512)  
audio = []  
  
try:  
   recorder.start()  
  
   while True:  
       frame = recorder.read()  
       audio.extend(frame)  
except KeyboardInterrupt:  
    recorder.stop()  
    with wave.open('audiotest', 'w') as f:  
        f.setparams((1, 2, 16000, 512, "NONE", "NONE"))  
        f.writeframes(struct.pack("h" * len(audio), *audio))  
finally:  
   recorder.delete()

到此这篇关于基于Python实现录音功能的示例代码的文章就介绍到这了,更多相关Python录音内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 中如何实现参数化测试的方法示例

    Python 中如何实现参数化测试的方法示例

    这篇文章主要介绍了Python 中如何实现参数化测试的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 基于DATAFRAME中元素的读取与修改方法

    基于DATAFRAME中元素的读取与修改方法

    今天小编就为大家分享一篇基于DATAFRAME中元素的读取与修改方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • pandas 实现将重复表格去重,并重新转换为表格的方法

    pandas 实现将重复表格去重,并重新转换为表格的方法

    下面小编就为大家分享一篇pandas 实现将重复表格去重,并重新转换为表格的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python使用scapy扫描内网IP或端口的方法实现

    python使用scapy扫描内网IP或端口的方法实现

    Scapy是一个Python程序,使用户能够发送,嗅探和剖析并伪造网络数据包,本文主要介绍了python使用scapy扫描内网IP或端口的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Python利用字典和列表实现学生信息管理系统

    Python利用字典和列表实现学生信息管理系统

    这篇文章主要为大家详细介绍了Python如何利用字典和列表实现一个简易的学生信息管理系统,文中详细注释,方便理解,需要的可以参考一下
    2022-06-06
  • python实现对doc,txt,xls文档的读写操作

    python实现对doc,txt,xls文档的读写操作

    这篇文章主要介绍了python实现对doc,txt,xls文档的读写操作,正如标题所见,文章包括三个部分python实现对doc文档的读取、python实现对txt文档的读取和python实现对xls表格的读取,需要的朋友可以参考一下
    2022-04-04
  • 使用python向MongoDB插入时间字段的操作

    使用python向MongoDB插入时间字段的操作

    这篇文章主要介绍了使用python向MongoDB插入时间字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 使用Python的Turtle绘制哆啦A梦实例

    使用Python的Turtle绘制哆啦A梦实例

    今天小编就为大家分享一篇使用Python的Turtle绘制哆啦A梦实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Django中使用locals()函数的技巧

    Django中使用locals()函数的技巧

    这篇文章主要介绍了Django中使用locals()函数的技巧,Django是Python重多高人气框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • python获取命令行输入参数列表的实例代码

    python获取命令行输入参数列表的实例代码

    今天小编就为大家分享一篇python获取命令行输入参数列表的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论