基于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 中字典和集合也是非常相近的概念,而且从外观看上去,也有那么一丝丝的相似。本文将从字典基本知识入手,为你展开字典类型数据的各个知识点,需要的可以参考一下
    2022-11-11
  • Python Tkinter GUI编程入门介绍

    Python Tkinter GUI编程入门介绍

    这篇文章主要介绍了Python Tkinter GUI编程入门介绍,本文讲解了Tkinter介绍、Tkinter的使用、Tkinter的几何管理器等内容,并给出了一个完整示例,需要的朋友可以参考下
    2015-03-03
  • keras自动编码器实现系列之卷积自动编码器操作

    keras自动编码器实现系列之卷积自动编码器操作

    这篇文章主要介绍了keras自动编码器实现系列之卷积自动编码器操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python实现简单字典树的方法

    Python实现简单字典树的方法

    这篇文章主要介绍了Python实现简单字典树的方法,实例分析了Python字典树的定义、实现与使用技巧,需要的朋友可以参考下
    2016-04-04
  • 浅谈Python数学建模之数据导入

    浅谈Python数学建模之数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要。Python 语言中数据导入的方法很多。对于数学建模问题编程来说,选择什么方法最好呢?答案是:没有最好的,只有最合适的。对于不同的问题,不同的算法,以及所调用工具包的不同实现方法,对于数据就会有不同的要求
    2021-06-06
  • Django实现自定义路由转换器

    Django实现自定义路由转换器

    有时候上面的内置的url转换器并不能满足我们的需求,因此django给我们提供了一个接口可以让我们自己定义自己的url转换器,那么如何实现,本文就来介绍一下
    2021-05-05
  • Python面向对象之内置函数相关知识总结

    Python面向对象之内置函数相关知识总结

    本次要总结的的内置函数共8个,他们都跟面向对象的知识相关,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python中的推导式使用详解

    Python中的推导式使用详解

    这篇文章主要介绍了Python中的推导式使用详解,本文分别讲解了列表推导式、字典推导式、集合推导式使用实例,需要的朋友可以参考下
    2015-06-06
  • python 图像增强算法实现详解

    python 图像增强算法实现详解

    这篇文章主要介绍了python 图像增强算法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python实现各种邮件发送

    Python实现各种邮件发送

    这篇文章主要介绍了Python实现各种邮件发送,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件,下文详细实现过程需要的小伙伴可以参考一下
    2022-05-05

最新评论